BR122021003390A2 - AUDIO CODER, AUDIO DECODER, METHOD OF CODING AND AUDIO INFORMATION, METHOD OF DECODING AUDIO INFORMATION AND COMPUTER PROGRAM USING AN OPTIMIZED HASH TABLE - Google Patents

AUDIO CODER, AUDIO DECODER, METHOD OF CODING AND AUDIO INFORMATION, METHOD OF DECODING AUDIO INFORMATION AND COMPUTER PROGRAM USING AN OPTIMIZED HASH TABLE Download PDF

Info

Publication number
BR122021003390A2
BR122021003390A2 BR122021003390-0A BR122021003390A BR122021003390A2 BR 122021003390 A2 BR122021003390 A2 BR 122021003390A2 BR 122021003390 A BR122021003390 A BR 122021003390A BR 122021003390 A2 BR122021003390 A2 BR 122021003390A2
Authority
BR
Brazil
Prior art keywords
value
context
hash
values
ari
Prior art date
Application number
BR122021003390-0A
Other languages
Portuguese (pt)
Inventor
Vignesh Subbaraman
Markus Multrus
Nikolaus Rettelbach
Matthias Hildenbrand
Oliver Weiss
Arthur Tritthart
Patrick Warmbold
Guillaume Fuchs
Original Assignee
Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e. V
Filing date
Publication date
Application filed by Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e. V filed Critical Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e. V
Publication of BR122021003390A2 publication Critical patent/BR122021003390A2/en

Links

Abstract

CODIFICADOR DE ÁUDIO, DECODIFICADOR DE ÁUDIO, MÉTODO DE CODIFICAÇÃO E INFORMAÇÃO DE ÁUDIO, MÉTODO DE DECODIFICAÇÃO DE UMA INFORMAÇÃO DE ÁUDIO E PROGRAMA DE COMPUTADOR QUE UTILIZA UMA TABELA HASH OTIMIZADA Um decodificador de áudio para prover uma informação de áudio decodificada com base em uma informação de áudio codificada compreende um decodificador aritmético para prover diversos valores espectrais decodificados com base em uma representação aritmeticamente codificada dos valores espectrais, e um conversor de domínio de frequência em domínio de tempo para prover uma representação de áudio de domínio de tempo utilizando os valores espectrais decodificados, para obter a informação de áudio decodificada.AUDIO CODER, AUDIO DECODER, METHOD OF CODING AND AUDIO INFORMATION, METHOD OF DECODING AUDIO INFORMATION AND COMPUTER PROGRAM USING AN OPTIMIZED HASH TABLE An audio decoder for providing decoded audio information based on information encoded audio source comprises an arithmetic decoder for providing a plurality of decoded spectral values based on an arithmetically encoded representation of the spectral values, and a frequency domain to time domain converter for providing a time domain audio representation using the decoded spectral values. , to obtain the decoded audio information.

Description

[0001] Pela transformação de uma parte em janela do sinal de áudio de entrada do domínio de tempo em domínio da frequência de tempo, uma compactação de energia é obtida em muitos casos, de modo que alguns dos valores espectrais compreendam uma magnitude significantemente maior que diversos outros valores espectrais. Assim, há, em muitos casos, um número comparavelmente pequeno de valores espectrais tendo uma magnitude, que está significantemente acima de uma magnitude média dos valores espectrais. Um exemplo típico de um domínio de tempo para transformação de domínio de frequência em domínio de tempo resultante em uma compactação de energia é chamada transformação de cosseno discreto modificado (MDCT).[0001] By transforming a windowed portion of the input audio signal from the time domain to the time frequency domain, an energy compression is achieved in many cases such that some of the spectral values comprise a magnitude significantly greater than several other spectral values. Thus, there are, in many cases, a comparably small number of spectral values having a magnitude that is significantly above an average magnitude of the spectral values. A typical example of a time domain to frequency domain transformation resulting in an energy compression is called modified discrete cosine transformation (MDCT).

[0002] Os valores espectrais são geralmente escalados e quantizados de acordo com um modelo psicoacústico, de modo que os erros de quantização sejam comparavelmente menores para valores espectrais psicoacusticamente mais importantes, e são comparavelmente maiores para valores espectrais psicoacusticamente menos importantes. Os valores espectrais escalados e quantizados são codificados para prover uma representação eficiente de sua taxa de bits.[0002] Spectral values are generally scaled and quantized according to a psychoacoustic model, so that quantization errors are comparably smaller for psychoacoustically more important spectral values, and are comparably larger for psychoacoustically less important spectral values. The scaled and quantized spectral values are encoded to provide an efficient representation of their bitrate.

[0003] Por exemplo, o uso da assim chamada codificação de Huffman de coeficientes espectrais quantizados é descrito no Padrão Internacional ISO/IEC 14496-3:2005(E), parte 3, subparte 4.[0003] For example, the use of so-called Huffman coding of quantized spectral coefficients is described in International Standard ISO/IEC 14496-3:2005(E), part 3, subpart 4.

[0004] Entretanto, foi observado que a qualidade da codificação dos valores espectrais tem um impacto significativo na taxa de bits necessária. Ainda, foi observado que a complexidade de um decodificador de áudio, que é geralmente implementado em um dispositivo do consumidor portátil, e que deve ser então criado de forma barata e com baixo consumo de energia, é dependente da codificação utilizada na codificação dos valores espectrais.[0004] However, it has been observed that the quality of encoding the spectral values has a significant impact on the required bit rate. Furthermore, it was observed that the complexity of an audio decoder, which is generally implemented in a portable consumer device, and which must then be created cheaply and with low power consumption, is dependent on the encoding used in encoding the spectral values. .

[0005] Em vista desta situação, há uma necessidade de um conceito para codificar e decodificar um conteúdo de áudio, que provê uma mudança melhorada entre eficiência da taxa de bits e eficiência do recurso.[0005] In view of this situation, there is a need for a concept for encoding and decoding audio content, which provides an improved trade-off between bitrate efficiency and resource efficiency.

[0006] SUMÁRIO DA INVENÇÃO[0006] SUMMARY OF THE INVENTION

[0007] Uma realização de acordo com a invenção cria um decodificador de áudio para prover diversos valores espectrais decodificados com base em uma representação aritmeticamente codificada dos valores espectrais. O decodificador de áudio também compreende um conversor de domínio de frequência em domínio de tempo para prover uma representação de áudio de domínio de tempo utilizando os valores espectrais decodificados, para obter a informação de áudio decodificada. O decodificador aritmético é configurado para selecionar uma regra de mapeamento que descreve um mapeamento de um valor de código representando um valor espectral, ou um plano de bits mais significativo de um valor espectral, em uma forma codificada, em um código de símbolo representando um valor espectral, ou um plano de bits mais significativo de um valor espectral, em uma forma decodificada, dependendo de um estado de contexto descrito por um valor de contexto corrente numérico. O decodificador aritmético é configurado para determinar o valor de contexto corrente numérico dependendo dos diversos valores espectrais previamente decodificados. O decodificador aritmético é configurado para avaliar a tabela hash, cujas entradas definem tanto os valores de estado significativo entre os valores de contexto numérico quanto os limites dos intervalos dos valores de contexto numérico, para selecionar a regra de mapeamento. O decodificador aritmético é configurado para avaliar a tabela hash para localizar um valor de índice da tabela hash i na qual o valor ari_hash_m[i]>>8 é igual ou maior do que c, enquanto, se o valor de índice da tabela hash i encontrado for maior do que 0, o valor ari_hash_m[i-1]>>8 é menor do que c. Além disso, o decodificador aritmético é configurado para selecionar a regra de mapeamento que é determinada por um índice de modelo de probabilidade (pki) que é igual a ari_hash_m[i]&&0xFF quando ari_hash_m[i]>>8 for igual a c, ou, caso contrário, igual a ari_lookup_m[i]. Na presente realização, a tabela hash ari_hash_m é definida conforme mostrado nas figuras 22(1), 22(2), 22(3) e 22(4). Além disso, a tabela de mapeamento ari lookup m é definida conforme mostrado na figura 21.[0007] An embodiment according to the invention creates an audio decoder to provide several decoded spectral values based on an arithmetically encoded representation of the spectral values. The audio decoder also comprises a frequency domain to time domain converter to provide a time domain audio representation using the decoded spectral values to obtain the decoded audio information. The arithmetic decoder is configured to select a mapping rule that describes a mapping of a code value representing a spectral value, or a most significant bit plane of a spectral value, in encoded form, into a symbol code representing a value spectral, or a most significant bit plane of a spectral value, in a decoded form, depending on a context state described by a current numeric context value. The arithmetic decoder is configured to determine the current numeric context value depending on the various previously decoded spectral values. The arithmetic decoder is configured to evaluate the hash table, whose entries define both the significant state values between the numeric context values and the range boundaries of the numeric context values, to select the mapping rule. The arithmetic decoder is configured to evaluate the hash table to find an index value of hash table i in which the value ari_hash_m[i]>>8 is equal to or greater than c, whereas if the index value of hash table i found is greater than 0, the value ari_hash_m[i-1]>>8 is less than c. Additionally, the arithmetic decoder is configured to select the mapping rule that is determined by a probability model index (pki) that is equal to ari_hash_m[i]&&0xFF when ari_hash_m[i]>>8 is equal to c, or, otherwise, equal to ari_lookup_m[i]. In the present embodiment, the hash table ari_hash_m is defined as shown in figures 22(1), 22(2), 22(3) and 22(4). Furthermore, the ari lookup m mapping table is defined as shown in figure 21.

[0008] Foi observado que a combinação do algoritmo mencionado com a tabela hash das figuras 22(1) a 22(4) permite uma seleção particularmente eficiente de uma regra de mapeamento, como a tabela hash de acordo com a figura 22(1) a 22(4) define, de forma particularmente bem adequada, ambos os valores significantes do valor de contexto numérico e intervalos de estado. Além disso, a interação entre o dito algoritmo e a tabela hash de acordo com as figuras 22(1) a 22(4) mostrou trazer resultados particularmente bons enquanto mantém a complexidade computacional razoavelmente pequena. Além disso, a tabela de mapeamento definida na figura 21 também é particularmente bem adaptada ao dito algoritmo quando em combinação com a tabela hash mencionada acima. Para resumir, a utilização da tabela hash conforme mostrado nas figuras 22(1) a 22(4) e da tabela de mapeamento conforme definido na figura 22 em conexão com o algoritmo conforme descrito acima traz ao longo de uma boa eficiência de codificação/decodificação e uma baixa complexidade computacional.[0008] It has been observed that the combination of the aforementioned algorithm with the hash table of figures 22(1) to 22(4) allows a particularly efficient selection of a mapping rule, such as the hash table according to figure 22(1) 22(4) defines, particularly well, both significant values of the numeric context value and state intervals. Furthermore, the interaction between said algorithm and the hash table according to figures 22(1) to 22(4) has been shown to bring particularly good results while keeping the computational complexity reasonably small. Furthermore, the mapping table defined in figure 21 is also particularly well adapted to said algorithm when in combination with the hash table mentioned above. To summarize, the use of the hash table as shown in figures 22(1) to 22(4) and the mapping table as defined in figure 22 in connection with the algorithm as described above brings along good encoding/decoding efficiency. and low computational complexity.

[0009] Em uma realização preferida, o decodificador aritmético é configurado para avaliar a tabela hash utilizando o algoritmo conforme definido na figura 5e, em que c designa uma variável representando o valor de contexto corrente numérico ou uma versão escalada desta, em que i é uma variável que descreve um valor de índice corrente da tabela hash, em que in i_min é uma variável rubricada para designar um valor de índice da tabela hash de uma primeira entrada da tabela hash e seletivamente atualizada dependendo de uma comparação entre c e (j >>8). No algoritmo mencionado acima, uma condição “c<(j>>8)” define que um valor de estado descrito pela variável c é menor do que um valor de estado descrito pela entrada da tabela ari_hash_m[i]. Ainda, no algoritmo mencionado acima, “j&0xFF” descreve um valor do índice da regra de mapeamento descrito pela entrada da tabela ari_hash_m[i]. Ainda i_max é uma variável inicializada para designar um valor de índice da tabela hash de uma última entrada da tabela hash uma seletivamente atualizada dependendo de uma comparação entre c e (j>>8). Uma condição “c>(j>>8)” define que um valor de estado descrito pela variável c é maior do que um valor de estado descrito pela entrada da tabela ari_hash_m[i]. O valor de retorno do dito algoritmo designa um índice pki de um modelo de probabilidade e é um valor do índice da regra de mapeamento. “ari_hash_m” designa a tabela hash, e “ari_hash_m[i]” designa uma entrada da tabela hash ari_hash-m tendo valor de índice da tabela hash i. “ari_lookup_m” designa uma tabela de mapeamento, e “ari_lookup_m[i_max]” designa uma entrada da tabela de mapeamento ari_lookup_m tendo o valor do índice de mapeamento i_max.[0009] In a preferred embodiment, the arithmetic decoder is configured to evaluate the hash table using the algorithm as defined in Figure 5e, wherein c designates a variable representing the current numeric context value or a scaled version thereof, wherein i is a variable describing a current hash table index value, where in i_min is a variable initialed to designate a hash table index value of a first hash table entry and selectively updated depending on a comparison between c and (j >> 8). In the algorithm mentioned above, a condition “c<(j>>8)” defines that a state value described by the variable c is smaller than a state value described by the ari_hash_m[i] table entry. Furthermore, in the algorithm mentioned above, “j&0xFF” describes a mapping rule index value described by the ari_hash_m[i] table entry. Still i_max is a variable initialized to designate a hash table index value of a last hash table entry an selectively updated depending on a comparison between c and (j>>8). A condition “c>(j>>8)” defines that a state value described by the variable c is greater than a state value described by the ari_hash_m[i] table entry. The return value of said algorithm designates an index pki of a probability model and is an index value of the mapping rule. “ari_hash_m” designates the hash table, and “ari_hash_m[i]” designates a hash table entry ari_hash-m having hash table index value i. “ari_lookup_m” designates a mapping table, and “ari_lookup_m[i_max]” designates an entry of the ari_lookup_m mapping table having the mapping index value i_max.

[00010] Foi observado que a combinação do algoritmo mencionado acima, conforme mostrado na figura 5e, com a tabela hash das figuras 22(1) a 22(4) permite uma seleção particularmente eficiente de uma regra de mapeamento, como a hash de acordo com a figura 22(1) a 22(4) define, de forma particularmente bem adequada, ambos os valores significantes do valor de contexto numérico e intervalos de estado. Além disso, a interação entre o dito algoritmo de acordo com a figura 5e e a tabela hash de acordo com as figuras 22(1) a 22(4) mostrou trazer os resultados particularmente bons em combinação com um rápido algoritmo para a pesquisa da tabela. Além disso, a tabela de mapeamento definida na figura 21 também é particularmente bem adaptada ao dito algoritmo quando em combinação com a tabela hash mencionada acima. Para resumir, o uso da tabela hash conforme mostrado nas figuras 22(1) a 22(4) e da tabela de mapeamento conforme definido na figura 22 em conexão com o algoritmo conforme definido na figura 5e traz uma boa eficiência de codificação/decodificação e uma baixa complexidade computacional. Em outras palavras, foi observado que o algoritmo de duas seções da figura 5e é bem adequado para operar com as tabelas ari_hash_m e ari_lookup_m, conforme definido acima.[00010] It was observed that the combination of the algorithm mentioned above, as shown in Figure 5e, with the hash table of Figures 22(1) to 22(4) allows a particularly efficient selection of a mapping rule, such as the hash according to with figure 22(1) to 22(4) define, in a particularly well-suited way, both significant values of the numerical context value and state intervals. Furthermore, the interaction between said algorithm according to Figure 5e and the hash table according to Figures 22(1) to 22(4) has been shown to bring particularly good results in combination with a fast algorithm for searching the table. . Furthermore, the mapping table defined in figure 21 is also particularly well adapted to said algorithm when in combination with the hash table mentioned above. To summarize, the use of the hash table as shown in figures 22(1) to 22(4) and the mapping table as defined in figure 22 in connection with the algorithm as defined in figure 5e brings good encoding/decoding efficiency and low computational complexity. In other words, it was observed that the two-section algorithm in Figure 5e is well suited to operate with the ari_hash_m and ari_lookup_m tables, as defined above.

[00011] Entretanto, deve ser observado que pequenas mudanças (que são facilmente praticáveis) ou ainda mudanças significantes do algoritmo de pesquisa podem acontecer sem mudar o conceito de acordo com a presente invenção.[00011] However, it should be noted that small changes (which are easily practicable) or even significant changes to the search algorithm can occur without changing the concept according to the present invention.

[00012] Em outras palavras, o método de pesquisa não está restrito aos métodos mencionados. Apesar do uso do método de duas seções (por exemplo, de acordo com a figura 5e) ainda melhora o desempenho, também seria possível realizar uma simples pesquisa completa, com, todavia trazer certo aumento de complexidade.[00012] In other words, the research method is not restricted to the mentioned methods. Although the use of the two-section method (for example, according to Figure 5e) still improves performance, it would also be possible to perform a simple complete search, with, however, bringing a certain increase in complexity.

[00013] Em uma realização preferida, o decodificador aritmético é configurado para selecionar a regra de mapeamento que descreve um mapeamento de um valor de código em um código de símbolo com base no valor do índice da regra de mapeamento pki, que é, por exemplo, provido como um valor de retorno do algoritmo mostrado na figura 5e. O uso do dito valor do índice da regra de mapeamento pki é muito eficiente, pois a interação das tabelas mencionadas acima e do algoritmo mencionado acima é otimizada para prover um valor do índice da regra de mapeamento significativo.[00013] In a preferred embodiment, the arithmetic decoder is configured to select the mapping rule that describes a mapping of a code value into a symbol code based on the mapping rule index value pki, which is e.g. , provided as a return value from the algorithm shown in Figure 5e. The use of said pki mapping rule index value is very efficient, as the interaction of the above-mentioned tables and the above-mentioned algorithm is optimized to provide a meaningful mapping rule index value.

[00014] Em uma realização preferida, o decodificador aritmético é configurado para utilizar o valor do índice da regra de mapeamento como um valor do índice da tabela para selecionar a regra de mapeamento que descreve um mapeamento de um valor de código em um código de símbolo. O uso do valor do índice da regra de mapeamento como um valor do índice da tabela permite uma eficiência computacional em uma seleção eficiente de memória da regra de mapeamento.[00014] In a preferred embodiment, the arithmetic decoder is configured to use the index value of the mapping rule as a table index value to select the mapping rule that describes a mapping of a code value into a symbol code . Using the mapping rule index value as a table index value enables computational efficiency in memory-efficient selection of the mapping rule.

[00015] Em uma realização preferida, o decodificador aritmético é configurado para selecionar uma das subtabelas da tabela ari_cf_m[64][17], conforme definido na figura 23(1), 23(2), 23(3), como a regra de mapeamento selecionada. Este conceito tem como base o fato de que as regras de mapeamento definidas pelas subtabelas da tabela ari_cf_m[64][17], conforme definido na figura 23(1),(2), (3), são bem adaptadas aos resultados que podem ser atingidos pela execução do algoritmo mencionado acima de acordo com a figura 5e em combinação com a tabela de acordo com as figuras 21 e 22(1) a 22(4).[00015] In a preferred embodiment, the arithmetic decoder is configured to select one of the subtables of the ari_cf_m[64][17] table, as defined in figure 23(1), 23(2), 23(3), as the rule mapping selected. This concept is based on the fact that the mapping rules defined by the subtables of the ari_cf_m[64][17] table, as defined in figure 23(1),(2), (3), are well adapted to the results that can be achieved by executing the above-mentioned algorithm according to figure 5e in combination with the table according to figures 21 and 22(1) to 22(4).

[00016] Em uma realização preferida, o decodificador aritmético é configurado para obter o valor de contexto numérico com base em um valor de contexto prévio numérico utilizando um algoritmo de acordo com a figura 5c, em que o algoritmo recebe, como valores de entrada, um valor de uma variável c representando um valor de contexto prévio numérico, um valor ou uma variável i representando um índice de tuplos duplos dos valores espectrais para decodificar em um vetor dos valores espectrais. Um valor ou uma variável N representa um comprimento da janela de uma janela de reconstrução do conversor de domínio de frequência em domínio de tempo. O algoritmo provê, como um valor de saída, um valor atualizado ou variável c representando o valor de contexto corrente numérico. No algoritmo, uma operação “c>>4” descreve uma mudança à direita por 4 bits do valor ou da variável c. Além disso, q[0][i+1] designa um valor da sub-região de contexto associado com uma estrutura de áudio passada e associado a um índice de frequência mais alta i+1, mais alto do que 1, do que um índice de frequência presente de um dos dois valores espectrais total a ser atualmente decodificados. Semelhantemente q[1][i-1] designa um valor da sub-região de contexto associado com uma estrutura de áudio presente e associado a um índice de frequência menor i-1, menor do que 1, então um índice de frequência presente de tuplos duplos dos valores espectrais a ser atualmente decodificados. q[1][i-2] designa um valor da sub-região de contexto associado com uma estrutura de áudio presente e associado ao índice de frequência menor i-2, menor do que 2, do que um índice de frequência presente de tuplos duplos dos valores espectrais a ser atualmente decodificados. q[1][i-3] designa um valor da sub-região de contexto associado com a estrutura de áudio presente e associado a um índice de frequência menor i-3, menor do que 3, do que um índice de frequência presente de tuplos duplos dos valores espectrais a ser atualmente decodificados. Foi observado que o algoritmo de acordo com a figura 5e quando em combinação com as tabelas da figura 21 e 22(1) a 22(4) é bem adaptado para prover o valor do índice da regra de mapeamento com base em um valor de contexto corrente numérico c obtido utilizando o algoritmo da figura 5c, em que obter o valor de contexto corrente numérico utilizando o algoritmo da figura 5c é particularmente eficiente de forma computacional, pois o algoritmo de acordo com a figura 5c requer apenas um cálculo muito simples.[00016] In a preferred embodiment, the arithmetic decoder is configured to obtain the numeric context value based on a prior numeric context value using an algorithm according to Figure 5c, wherein the algorithm receives, as input values, a value of a variable c representing a numeric prior context value, a value or a variable i representing an index of double tuples of the spectral values to decode into a vector of the spectral values. A value or variable N represents a window length of a reconstruction window of the frequency domain to time domain converter. The algorithm provides, as an output value, an updated value or variable c representing the current numeric context value. In the algorithm, a “c>>4” operation describes a right shift by 4 bits of the value or variable c. Furthermore, q[0][i+1] designates a context subregion value associated with a past audio structure and associated with a higher frequency index i+1, higher than 1, than a present frequency index of one of the two total spectral values currently being decoded. Similarly q[1][i-1] designates a context subregion value associated with a present audio structure and associated with a minor frequency index i-1, less than 1, then a present frequency index of double tuples of the spectral values currently being decoded. q[1][i-2] designates a context subregion value associated with a present audio structure and associated with the lower frequency index i-2, less than 2, than a tuple present frequency index doubles of the spectral values currently being decoded. q[1][i-3] designates a context subregion value associated with the present audio structure and associated with a lower frequency index i-3, less than 3, than a present frequency index of double tuples of the spectral values currently being decoded. It was observed that the algorithm according to figure 5e when in combination with the tables of figure 21 and 22(1) to 22(4) is well adapted to provide the index value of the mapping rule based on a context value current numeric c obtained using the algorithm of figure 5c, where obtaining the current numeric context value using the algorithm of figure 5c is particularly computationally efficient, as the algorithm according to figure 5c requires only a very simple calculation.

[00017] Em uma realização preferida, o decodificador aritmético é configurado para atualizar um valor da sub-região de contexto q[1][i] associado com uma estrutura de áudio presente e associado ao índice de frequência presente dos tuplos duplos dos valores espectrais atualmente decodificados utilizando um algoritmo de acordo com a figura 5l, em que a designa um valor absoluto de um primeiro valor espectral dos tuplos duplos dos valores espectrais atualmente decodificados, e em que b designa um segundo valor espectral dos tuplos duplos dos valores espectrais atualmente decodificados. Pode ser visto que o algoritmo preferido é muito bem adequado para uma simples atualização do valor da sub- região de contextos.[00017] In a preferred embodiment, the arithmetic decoder is configured to update a value of the context subregion q[1][i] associated with a present audio structure and associated with the present frequency index of the double tuples of the spectral values currently decoded using an algorithm according to Figure 5l, wherein a designates an absolute value of a first spectral value of the double tuples of the currently decoded spectral values, and where b designates a second spectral value of the double tuples of the currently decoded spectral values . It can be seen that the preferred algorithm is very well suited for a simple update of the context subregion value.

[00018] Em uma realização preferida, o decodificador aritmético é configurado para prover um valor decodificado m representando tuplos duplos dos valores espectrais decodificados utilizando o algoritmo de decodificação aritmética de acordo com a figura 5g. Foi observado que o dito algoritmo de decodificação aritmética é muito bem adequado para a cooperação com os algoritmos descritos acima.[00018] In a preferred embodiment, the arithmetic decoder is configured to provide a decoded value m representing double tuples of the decoded spectral values using the arithmetic decoding algorithm according to Figure 5g. It has been observed that said arithmetic decoding algorithm is very well suited for cooperation with the algorithms described above.

[00019] Outra realização de acordo com a invenção cria a decodificador para prover uma informação de áudio decodificada com base em uma informação de áudio codificada. O decodificador de áudio compreende um decodificador aritmético para prover diversos valores espectrais decodificados com base em uma representação aritmeticamente codificada dos valores espectrais. O decodificador de áudio também compreende um conversor de domínio de frequência em domínio de tempo para prover uma representação de áudio de domínio de tempo utilizando os valores espectrais decodificados, para obter a informação de áudio decodificada. O decodificador aritmético é configurado para selecionar uma regra de mapeamento que descreve um mapeamento de um valor de código representando um valor espectral, ou um plano de bits mais significativo de um valor espectral, em uma forma codificada, em um código de símbolo representando um valor espectral, ou um plano de bits mais significativo de um valor espectral, em uma forma decodificada, dependendo de um estado de contexto descrito por um valor de contexto corrente numérico. O decodificador aritmético é configurado para determinar o valor de contexto corrente numérico dependendo dos diversos valores espectrais previamente decodificados. O decodificador aritmético é configurado para avaliar a tabela hash, cujas entradas definem tanto os valores de estado significativo entre os valores de contexto numérico quanto os limites dos intervalos dos valores de contexto numérico, para selecionar a regra de mapeamento. A tabela hash ari hash m é definida conforme mostrado na figura 22(1), 22(2), 22(3) e 22(4). O decodificador aritmético é configurado para avaliar a tabela hash para determinar se o valor de contexto corrente numérico é idêntico a um valor de contexto da tabela descrito por uma entrada da tabela hash ou para determinar um intervalo descrito pelas entradas da tabela hash no qual o valor de contexto corrente numérico se encontra, e para derivar um valor do índice da regra de mapeamento que descreve uma regra de mapeamento selecionada dependendo de um resultado de uma avaliação. Foi observado que a tabela hash ari hash m é dada nas figuras 22(1) a 22(4) é bem adequada para a análise dos valores de contexto da tabela descritos pelas entradas da tabela hash e intervalos descritos pelas entradas da tabela hash, para assim derivar o valor do índice de mapeamento. Foi observado que a definição de ambos os valores de contexto da tabela e intervalos pela tabela hash de acordo com a figura 22(1) a 22(4) provê um mecanismo eficiente para a seleção da regra de mapeamento quando em combinação com um simples conceito para a avaliação da tabela hash que utiliza entradas da dita tabela hash para tanto verificar os valores de contexto da tabela quanto para determinar em qual intervalo definido pelas entradas da tabela hash dos valores de contexto da não tabela se encontra.[00019] Another embodiment according to the invention creates the decoder to provide decoded audio information based on encoded audio information. The audio decoder comprises an arithmetic decoder for providing a plurality of decoded spectral values based on an arithmetically encoded representation of the spectral values. The audio decoder also comprises a frequency domain to time domain converter to provide a time domain audio representation using the decoded spectral values to obtain the decoded audio information. The arithmetic decoder is configured to select a mapping rule that describes a mapping of a code value representing a spectral value, or a most significant bit plane of a spectral value, in encoded form, into a symbol code representing a value spectral, or a most significant bit plane of a spectral value, in a decoded form, depending on a context state described by a current numeric context value. The arithmetic decoder is configured to determine the current numeric context value depending on the various previously decoded spectral values. The arithmetic decoder is configured to evaluate the hash table, whose entries define both the significant state values between the numeric context values and the range boundaries of the numeric context values, to select the mapping rule. The hash table ari hash m is defined as shown in figure 22(1), 22(2), 22(3) and 22(4). The arithmetic decoder is configured to evaluate the hash table to determine whether the current numeric context value is identical to a table context value described by a hash table entry or to determine a range described by the hash table entries in which the value current numeric context is found, and to derive a mapping rule index value that describes a selected mapping rule depending on a result of an evaluation. It has been observed that the hash table ari hash m given in figures 22(1) to 22(4) is well suited for analyzing the table context values described by the hash table entries and ranges described by the hash table entries, for thus derive the value of the mapping index. It was observed that defining both table context values and ranges by the hash table according to Figure 22(1) to 22(4) provides an efficient mechanism for mapping rule selection when in combination with a simple concept for evaluation of the hash table that uses entries of said hash table to both verify the context values of the table and to determine in which range defined by the hash table entries of the context values of the non-table it lies.

[00020] Em uma realização preferida, o decodificador aritmético é configurado para comparar o valor de contexto corrente numérico, ou uma versão escalada do valor de contexto corrente numérico, com uma série das entradas numericamente ordenadas ou subentradas da tabela hash, para iterativamente obter um valor de índice da tabela hash de uma entrada da tabela, de modo que o valor de contexto corrente numérico se encontre dentro de um intervalo definido pela entrada da tabela hash obtida designada pelo valor de índice obtido da tabela hash e uma entrada da tabela hash adjacente. Neste caso, o decodificador aritmético é configurado para determinar uma próxima entrada da série de entradas da tabela hash dependendo de um resultado de uma comparação entre o valor de contexto corrente numérico, ou uma versão escalada do valor de contexto corrente numérico, e uma entrada ou sub-entrada corrente. Foi reconhecido que este mecanismo permite uma avaliação da tabela hash particularmente eficiente de acordo com a figura 22(1) a 22(4).[00020] In a preferred embodiment, the arithmetic decoder is configured to compare the current numeric context value, or a scaled version of the current numeric context value, with a series of numerically ordered entries or subentries of the hash table, to iteratively obtain a hash table index value of a table entry, such that the current numeric context value lies within a range defined by the obtained hash table entry designated by the obtained hash table index value and an adjacent hash table entry . In this case, the arithmetic decoder is configured to determine a next entry in the series of hash table entries depending on the result of a comparison between the current numeric context value, or a scaled version of the current numeric context value, and an input or current sub-input. It was recognized that this mechanism allows a particularly efficient hash table evaluation according to figure 22(1) to 22(4).

[00021] Em uma realização preferida, o decodificador aritmético é configurado para selecionar uma regra de mapeamento definida por uma segunda sub-entrada da tabela hash designada pelo valor de índice corrente da tabela hash se for observado que o valor de contexto corrente numérico ou uma versão escalada deste é igual à primeira sub-entrada da tabela hash designada pelo valor de índice corrente da tabela hash. Certamente, as entradas da tabela hash, conforme definido de acordo com as figuras 22(1) a 22(4) assumem uma função dupla. Uma primeira sub-entrada (ou seja, uma primeira parte de uma entrada) da tabela hash é utilizada para identificar estado particularmente significativos do valor de contexto (corrente) numérico, enquanto uma segunda sub-entrada da tabela hash (ou seja, uma segunda parte de tal entrada) define uma regra de mapeamento, por exemplo, definindo um valor do índice da regra de mapeamento. Assim, as entradas da tabela hash são utilizadas de forma muito eficiente. Ainda, o mecanismo é particularmente eficiente ao prover o valor do índice das regras de mapeamento para os estados particularmente importantes dos valores de contexto corrente numérico, que são descritos pelas entradas da tabela hash, ou, mais precisamente, pelas sub-entradas da tabela hash. Assim, uma entrada completa da tabela hash, conforme definido nas figuras 22(1) a 22(4), define regras de um mapeamento de um estado particularmente importante do valor de contexto (corrente) numérico a uma regra de mapeamento e limites de intervalo das regiões (ou intervalos) de estados menos importantes do valor de contexto corrente numérico.[00021] In a preferred embodiment, the arithmetic decoder is configured to select a mapping rule defined by a second sub-entry of the hash table designated by the current index value of the hash table if it is observed that the current numeric context value or a scaled version of this is equal to the first sub-entry of the hash table designated by the current index value of the hash table. Of course, hash table entries as defined according to Figures 22(1) to 22(4) take on a dual function. A first sub-entry (i.e., a first part of an entry) of the hash table is used to identify particularly significant states of the numeric (current) context value, while a second sub-entry of the hash table (i.e., a second part of such an entry) defines a mapping rule, for example, defining an index value of the mapping rule. Thus, the hash table entries are used very efficiently. Furthermore, the mechanism is particularly efficient in providing the index value of the mapping rules for the particularly important states of the current numeric context values, which are described by the hash table entries, or, more precisely, by the hash table sub-entries. . Thus, a complete hash table entry, as defined in Figures 22(1) to 22(4), defines rules for a mapping of a particularly important state of the numeric (current) context value to a mapping rule and range boundaries. of the regions (or ranges) of less important states of the current numeric context value.

[00022] Em uma realização preferida, o decodificador aritmético é configurado para selecionar uma regra de mapeamento definida por uma entrada ou sub-entrada de uma tabela de mapeamento ari_lookup_m se não for observado que o valor de contexto corrente numérico é igual a uma sub-entrada da tabela hash. Neste caso, o decodificador aritmético é configurado para escolher a entrada ou sub-entrada da tabela de mapeamento dependendo do valor de índice da tabela hash iterativamente obtido. Assim, um mecanismo particularmente eficiente de duas tabelas é criado, permitindo prover eficientemente um valor do índice da regra de mapeamento tanto para estados particularmente importantes do valor de contexto corrente numérico quanto para os estados menos importantes do valor de contexto corrente numérico (em que os estados menos importantes do valor de contexto corrente numérico não são explicitamente, ou seja, individualmente, descritos pelas entradas ou sub-entradas da tabela hash).[00022] In a preferred embodiment, the arithmetic decoder is configured to select a mapping rule defined by an entry or sub-entry of an ari_lookup_m mapping table if it is not observed that the current numeric context value is equal to a sub- hash table entry. In this case, the arithmetic decoder is configured to choose the entry or sub-entry of the mapping table depending on the iteratively obtained hash table index value. Thus, a particularly efficient two-table mechanism is created, allowing to efficiently provide a mapping rule index value for both particularly important states of the numeric current context value and for less important states of the numeric current context value (where the less important states of the current numeric context value are not explicitly, i.e. individually, described by the entries or sub-entries of the hash table).

[00023] Em uma realização preferida, o decodificador aritmético é configurado para seletivamente prover um valor do índice da regra de mapeamento definido pela entrada da tabela hash designada pelo valor do índice obtido da tabela hash se for observado que o valor de contexto corrente numérico é igual ao valor definido pela entrada da tabela hash designada pelo valor de índice corrente da tabela hash. Assim, há um mecanismo eficiente que permite a dupla utilização das entradas da tabela hash.[00023] In a preferred embodiment, the arithmetic decoder is configured to selectively provide a mapping rule index value defined by the hash table entry designated by the index value obtained from the hash table if it is observed that the current numeric context value is equal to the value defined by the hash table entry designated by the current index value of the hash table. Thus, there is an efficient mechanism that allows double use of hash table entries.

[00024] Outras realizações da invenção criam métodos para prover uma informação de áudio decodificada com base em uma informação de áudio codificada. Os ditos métodos cumprem a funcionalidade dos decodificadores de áudio discutidos acima. Certamente, os métodos têm como base as mesmas ideias e pensamentos quanto aos decodificadores de áudio, de modo que uma discussão seja omitida aqui para brevidade. Deve ser observado que os métodos podem ser suplementados por qualquer uma das características e funcionalidades dos decodificadores de áudio.[00024] Other embodiments of the invention create methods for providing decoded audio information based on encoded audio information. Said methods fulfill the functionality of the audio decoders discussed above. Of course, the methods are based on the same ideas and thoughts as audio decoders, so a discussion is omitted here for brevity. It should be noted that the methods can be supplemented by any of the features and functionalities of the audio decoders.

[00025] Outra realização de acordo com a invenção cria um decodificador de áudio para prover uma informação de áudio codificada com base em uma informação de áudio de entrada. O codificador de áudio compreende um conversor de domínio de tempo em domínio de frequência com compactação de energia para prover uma representação de áudio de domínio de frequência com base em uma representação de domínio de tempo da informação de áudio de entrada, de modo que a representação de áudio de domínio de frequência compreenda um conjunto de valores espectrais. O codificador de áudio também compreende um codificador aritmético configurado para codificar um valor espectral ou uma versão pré- processada desta utilizando um código de comprimento da variável. O codificador aritmético é configurado para mapear um valor espectral, ou um valor de um plano de bit mais significativo de um valor espectral, em um valor de código. O codificador aritmético também é configurado para selecionar uma regra de mapeamento que descreve um mapeamento de um valor espectral, ou um plano de bit mais significativo de um valor espectral, em um valor de código, dependendo de um estado de contexto descrito por um valor de contexto corrente numérico. O codificador aritmético é configurado para determinar o valor de contexto corrente numérico dependendo dos diversos valores espectrais previamente codificados. O codificador aritmético é também configurado para avaliar uma tabela hash, cujas entradas definem tanto os valores de estado significativo entre os valores de contexto numérico quanto os limites dos intervalos dos valores de contexto numérico, para selecionar a regra de mapeamento. A tabela hash ari_hash_m é definida conforme mostrado nas figuras 22(1) a 22(4). O codificador aritmético é configurado para avaliar a tabela hash para determinar se o valor de contexto corrente numérico é idêntico a um valor de contexto da tabela descrito por uma entrada da tabela hash ou para determinar um intervalo descrito pelas entradas da tabela hash no qual o valor de contexto corrente numérico se encontra, e para derivar um valor do índice da regra de mapeamento que descreve uma regra de mapeamento selecionada dependendo de um resultado da dita avaliação. Deve ser observado que a funcionalidade do codificador de áudio está em paralelo com a funcionalidade do decodificador de áudio discutido acima. Certamente, a referência é feita à discussão acima sobre as ideias principais do decodificador de áudio por questão de brevidade.[00025] Another embodiment according to the invention creates an audio decoder to provide encoded audio information based on input audio information. The audio encoder comprises an energy-compressed time-domain-to-frequency-domain converter for providing a frequency-domain audio representation based on a time-domain representation of the input audio information, such that the representation frequency domain audio signal comprises a set of spectral values. The audio encoder also comprises an arithmetic encoder configured to encode a spectral value or a preprocessed version thereof using a variable length code. The arithmetic encoder is configured to map a spectral value, or a value from a most significant bit plane of a spectral value, into a code value. The arithmetic encoder is also configured to select a mapping rule that describes a mapping of a spectral value, or a most significant bit plane of a spectral value, into a code value, depending on a context state described by a value of numeric current context. The arithmetic encoder is configured to determine the current numeric context value depending on the various previously encoded spectral values. The arithmetic encoder is also configured to evaluate a hash table, whose entries define both the significant state values among the numeric context values and the range boundaries of the numeric context values, to select the mapping rule. The hash table ari_hash_m is defined as shown in figures 22(1) to 22(4). The arithmetic encoder is configured to evaluate the hash table to determine whether the current numeric context value is identical to a table context value described by a hash table entry or to determine a range described by the hash table entries in which the value current numeric context is found, and to derive a mapping rule index value that describes a selected mapping rule depending on a result of said evaluation. It should be noted that the audio encoder functionality is in parallel with the audio decoder functionality discussed above. Of course, reference is made to the above discussion of the main ideas of the audio decoder for the sake of brevity.

[00026] Além disso, deve ser observado que o codificador de áudio pode ser suplementado por qualquer uma das características e funcionalidades do decodificador de áudio. Em particular, qualquer uma das características referentes à seleção da regra de mapeamento podem ser implementadas no codificador de áudio também, em que os valores espectrais codificados tomam o lugar dos valores espectrais decodificados, e assim por diante.[00026] Furthermore, it should be noted that the audio encoder can be supplemented by any of the features and functionalities of the audio decoder. In particular, any of the features relating to mapping rule selection can be implemented in the audio encoder as well, whereby the encoded spectral values take the place of the decoded spectral values, and so on.

[00027] Outra realização de acordo com a invenção cria um método para prover uma informação de áudio codificada com base em uma informação de áudio de entrada. O método realiza a funcionalidade do codificador de áudio descrito antes de ter como base as mesmas ideias.[00027] Another embodiment according to the invention creates a method for providing encoded audio information based on input audio information. The method realizes the functionality of the audio encoder described before based on the same ideas.

[00028] Outra realização de acordo com a invenção cria um programa de computador para realizar pelo menos um dos métodos descritos anteriormente.[00028] Another embodiment according to the invention creates a computer program to perform at least one of the methods described above.

[00029] BREVE DESCRIÇÃO DAS FIGURAS[00029] BRIEF DESCRIPTION OF THE FIGURES

[00030] As realizações de acordo com a presente invenção serão subsequentemente descritas tendo como referência as figuras anexas, nas quais:[00030] The embodiments according to the present invention will subsequently be described with reference to the attached figures, in which:

[00031] A figura 1 mostra um diagrama em blocos esquemático de um codificador de áudio, de acordo com uma realização da invenção;[00031] Figure 1 shows a schematic block diagram of an audio encoder, according to an embodiment of the invention;

[00032] A figura 2 mostra um diagrama em blocos esquemático de um decodificador de áudio, de acordo com uma realização da invenção:[00032] Figure 2 shows a schematic block diagram of an audio decoder, according to an embodiment of the invention:

[00033] A figura 3 mostra uma representação em código do pseudo-programa de um algoritmo “values_decode()” para decodificação dos valores espectrais;[00033] Figure 3 shows a code representation of the pseudo-program of a “values_decode()” algorithm for decoding spectral values;

[00034] A figura 4 mostra uma representação esquemática de um contexto para um cálculo de estado;[00034] Figure 4 shows a schematic representation of a context for a state calculation;

[00035] A figura 5a mostra uma representação em código do pseudo-programa de um algoritmo “arith_map_context()” para mapeamento de um contexto;[00035] Figure 5a shows a code representation of the pseudo-program of an “arith_map_context()” algorithm for mapping a context;

[00036] A figura 5b mostra uma representação em código do pseudo-programa de outro algoritmo “arith_map_context()” para mapeamento de um contexto;[00036] Figure 5b shows a code representation of the pseudo-program of another algorithm “arith_map_context()” for mapping a context;

[00037] A figura 5c mostra uma representação em código do pseudo-programa de um algoritmo “arith_get_context()” para obter um valor de estado de contexto;[00037] Figure 5c shows a pseudo-program code representation of an “arith_get_context()” algorithm to obtain a context state value;

[00038] A figura 5d mostra uma representação em código do pseudo-programa de outro algoritmo “arith_get_context()” para obter um valor de estado de contexto;[00038] Figure 5d shows a pseudo-program code representation of another algorithm “arith_get_context()” to obtain a context state value;

[00039] A figura 5e mostra uma representação em código do pseudo-programa de um algoritmo “arith_get_pk()” para derivar um valor do índice da tabela de frequências cumulativas “pki” de um valor de estado (ou uma variável de estado);[00039] Figure 5e shows a code representation of the pseudo-program of an algorithm “arith_get_pk()” for deriving an index value of the cumulative frequency table “pki” from a state value (or a state variable);

[00040] A figura 5f mostra uma representação em código do pseudo-programa de outro algoritmo “arith_get_pk()” para derivar um valor do índice da tabela de frequências cumulativas “pki” de um valor de estado (ou uma variável de estado);[00040] Figure 5f shows a code representation of the pseudo-program of another algorithm “arith_get_pk()” for deriving an index value of the cumulative frequency table “pki” from a state value (or a state variable);

[00041] A figura 5g mostra uma representação em código do pseudo-programa de um algoritmo “arith_decode()” para aritmeticamente decodificar um símbolo de um código de comprimento da variável;[00041] Figure 5g shows a pseudo-program code representation of an “arith_decode()” algorithm for arithmetically decoding a symbol from a variable length code;

[00042] A figura 5h mostra uma primeira parte de uma representação em código do pseudo-programa de outro algoritmo “arith_decode()” para aritmeticamente decodificar um símbolo a partir de um código de comprimento da variável;[00042] Figure 5h shows a first part of a pseudo-program code representation of another algorithm “arith_decode()” for arithmetically decoding a symbol from a variable length code;

[00043] A figura 5i mostra uma segunda parte de uma representação em código do pseudo-programa do outro algoritmo “arith_decode()” para aritmeticamente decodificar um símbolo a partir de um código de comprimento da variável;[00043] Figure 5i shows a second part of a pseudo-program code representation of the other algorithm “arith_decode()” for arithmetically decoding a symbol from a variable length code;

[00044] A figura 5j mostra uma representação em código do pseudo-programa de um algoritmo para derivar os valores absolutos a,b dos valores espectrais de um valor comum m;[00044] Figure 5j shows a code representation of the pseudo-program of an algorithm for deriving the absolute values a, b from the spectral values of a common value m;

[00045] A figura 5k mostra uma representação em código do pseudo-programa de um algoritmo para inserir os valores decodificados a,b em uma matriz dos valores espectrais decodificados;[00045] Figure 5k shows a code representation of the pseudo-program of an algorithm for inserting the decoded values a, b into a matrix of decoded spectral values;

[00046] A figura 5l mostra uma representação em código do pseudo-programa de um algoritmo “arith_update_context()” para obter um valor da sub-região de contexto com base nos valores absolutos a,b dos valores espectrais decodificados;[00046] Figure 5l shows a code representation of the pseudo-program of an algorithm “arith_update_context()” to obtain a value of the context subregion based on the absolute values a, b of the decoded spectral values;

[00047] A figura 5m mostra uma representação em código do pseudo-programa de um algoritmo “arith_finish()” para preencher as entradas de uma matriz dos valores espectrais decodificados e uma matriz dos valores da sub-região de contexto;[00047] Figure 5m shows a pseudo-program code representation of an “arith_finish()” algorithm for filling the entries of a matrix of decoded spectral values and a matrix of context subregion values;

[00048] A figura 5n mostra uma representação em código do pseudo-programa de outro algoritmo para derivar valores absolutos a,b dos valores espectrais decodificados a partir de um valor comum m;[00048] Figure 5n shows a code representation of the pseudo-program of another algorithm for deriving absolute values a,b from spectral values decoded from a common value m;

[00049] A figura 5o mostra uma representação em código do pseudo-programa de um algoritmo “arith_update_context()” para atualizar uma matriz dos valores espectrais decodificados e uma matriz de valores da sub-região de contexto;[00049] Figure 5o shows a pseudo-program code representation of an “arith_update_context()” algorithm for updating an array of decoded spectral values and an array of context subregion values;

[00050] A figura 5p mostra uma representação em código do pseudo-programa de um algoritmo “arith_save_context()” para preencher entradas de uma matriz dos valores espectrais decodificados e entradas de uma matriz de valores da sub-região de contexto;[00050] Figure 5p shows a pseudo-program code representation of an “arith_save_context()” algorithm for filling entries of a matrix of decoded spectral values and entries of a matrix of context subregion values;

[00051] A figura 5q mostra uma legenda das definições;[00051] Figure 5q shows a legend of the definitions;

[00052] A figura 5r mostra outra legenda das definições;[00052] Figure 5r shows another legend of the definitions;

[00053] A figura 6a mostra uma representação de sintaxe de um bloco de dados brutos da codificação de áudio e voz unificada (USAC);[00053] Figure 6a shows a syntax representation of a Unified Speech and Audio Coding (USAC) raw data block;

[00054] A figura 6b mostra uma representação de sintaxe de um único elemento de canal;[00054] Figure 6b shows a syntax representation of a single channel element;

[00055] A figura 6c mostra uma representação de sintaxe de um elemento do par de canais;[00055] Figure 6c shows a syntax representation of an element of the channel pair;

[00056] A figura 6d mostra uma representação de sintaxe de uma informação de controle “ICS”;[00056] Figure 6d shows a syntax representation of an “ICS” control information;

[00057] A figura 6e mostra uma representação de sintaxe de um fluxo de canal de domínio de frequência;[00057] Figure 6e shows a syntax representation of a frequency domain channel flow;

[00058] A figura 6f mostra uma representação de sintaxe de dados espectrais aritmeticamente codificados;[00058] Figure 6f shows a syntax representation of arithmetically encoded spectral data;

[00059] A figura 6g mostra uma representação de sintaxe para decodificar um conjunto de valores espectrais;[00059] Figure 6g shows a syntax representation for decoding a set of spectral values;

[00060] A figura 6h mostra outra representação de sintaxe para decodificar um conjunto de valores espectrais;[00060] Figure 6h shows another syntax representation for decoding a set of spectral values;

[00061] A figura 6i mostra uma legenda dos elementos de dados e variáveis;[00061] Figure 6i shows a legend of the data elements and variables;

[00062] A figura 6j mostra outra legenda de elementos de dados e variáveis;[00062] Figure 6j shows another legend of data elements and variables;

[00063] A figura 6k mostra uma representação de sintaxe de um único elemento de canal USAC “UsacSingleChannelElement()”;[00063] Figure 6k shows a syntax representation of a single USAC channel element “UsacSingleChannelElement()”;

[00064] A figura 6l mostra uma representação de sintaxe de um Elemento do par de canal USAC “UsacChannelPairElement()”;[00064] Figure 6l shows a syntax representation of a USAC channel pair Element “UsacChannelPairElement()”;

[00065] A figura 6m mostra uma representação de sintaxe de uma informação de controle “ICS”;[00065] Figure 6m shows a syntax representation of an “ICS” control information;

[00066] A figura 6n mostra uma representação de sintaxe dos dados do codificador central USAC “UsacCoreCoderData”;[00066] Figure 6n shows a syntax representation of the USAC core coder data “UsacCoreCoderData”;

[00067] A figura 6o mostra uma representação de sintaxe de um fluxo do canal de domínio de frequência “fd_channel_stream()”;[00067] Figure 6o shows a syntax representation of a frequency domain channel stream “fd_channel_stream()”;

[00068] A figura 6p mostra uma representação de sintaxe dos dados espectrais aritmeticamente codificados “ac_spectral_data()”;[00068] Figure 6p shows a syntax representation of the arithmetically encoded spectral data “ac_spectral_data()”;

[00069] A figura 7 mostra um diagrama em blocos esquemático de um codificador de áudio, de acordo com o primeiro aspecto da invenção;[00069] Figure 7 shows a schematic block diagram of an audio encoder, according to the first aspect of the invention;

[00070] A figura 8 mostra um diagrama em blocos esquemático de um decodificador de áudio, de acordo com o primeiro aspecto da invenção;[00070] Figure 8 shows a schematic block diagram of an audio decoder, according to the first aspect of the invention;

[00071] A figura 9 mostra uma representação gráfica de um mapeamento de um valor de contexto corrente numérico em um valor do índice da regra de mapeamento, de acordo com o primeiro aspecto da invenção;[00071] Figure 9 shows a graphical representation of a mapping of a numeric current context value into a mapping rule index value, in accordance with the first aspect of the invention;

[00072] A figura 10 mostra um diagrama em blocos esquemático de um codificador de áudio, de acordo com um segundo aspecto da invenção;[00072] Figure 10 shows a schematic block diagram of an audio encoder, according to a second aspect of the invention;

[00073] A figura 11 mostra um diagrama em blocos esquemático de um decodificador de áudio, de acordo com o segundo aspecto da invenção;[00073] Figure 11 shows a schematic block diagram of an audio decoder, according to the second aspect of the invention;

[00074] A figura 12 mostra um diagrama em blocos esquemático de um codificador de áudio, de acordo com um terceiro aspecto da invenção;[00074] Figure 12 shows a schematic block diagram of an audio encoder, according to a third aspect of the invention;

[00075] A figura 13 mostra um diagrama em blocos esquemático de um decodificador de áudio, de acordo com o terceiro aspecto da invenção;[00075] Figure 13 shows a schematic block diagram of an audio decoder, according to the third aspect of the invention;

[00076] A figura 14a mostra uma representação esquemática de um contexto para um cálculo de estado, como é utilizado de acordo com o projeto de trabalho 4 do Padrão de Projeto USAC;[00076] Figure 14a shows a schematic representation of a context for a state calculation, as used in accordance with working design 4 of the USAC Design Standard;

[00077] A figura 14b mostra uma visão geral das tabelas conforme utilizado no esquema de codificação aritmético de acordo com o projeto de trabalho 4 do Padrão de Projeto USAC;[00077] Figure 14b shows an overview of the tables as used in the arithmetic coding scheme in accordance with working design 4 of the USAC Design Standard;

[00078] A figura 15a mostra uma representação esquemática de um contexto para um cálculo de estado, como é utilizado nas realizações de acordo com a invenção;[00078] Figure 15a shows a schematic representation of a context for a state calculation, as used in embodiments according to the invention;

[00079] A figura 15b mostra uma visão geral das tabelas conforme utilizado no esquema de codificação aritmético de acordo com um exemplo de comparação;[00079] Figure 15b shows an overview of the tables as used in the arithmetic coding scheme according to an example comparison;

[00080] A figura 16a mostra uma representação gráfica de uma demanda de memória para somente leitura para o esquema de codificação silenciosa de acordo com um exemplo de comparação, e de acordo com o projeto de trabalho 5 do Padrão de Projeto USAC, e de acordo com a Codificação de Huffman AAC (codificação de áudio avançado);[00080] Figure 16a shows a graphical representation of a read-only memory demand for the silent encoding scheme in accordance with a comparison example, and in accordance with working design 5 of the USAC Design Standard, and in accordance with with Huffman AAC Coding (advanced audio coding);

[00081] A figura 16b mostra uma representação gráfica de uma demanda de memória para somente leitura dos dados do decodificador USAC total de acordo com um exemplo de comparação e de acordo com o conceito de acordo com o projeto de trabalho 5 do Padrão de Projeto USAC;[00081] Figure 16b shows a graphical representation of a memory demand for read-only total USAC decoder data in accordance with a comparison example and in accordance with the concept in accordance with working design 5 of the USAC Design Standard ;

[00082] A figura 17 mostra uma representação esquemática de uma disposição para uma comparação de uma codificação silenciosa de acordo com o projeto de trabalho 3 ou projeto de trabalho 5 do Padrão de Projeto USAC com um esquema de codificação de acordo com o exemplo de comparação;[00082] Figure 17 shows a schematic representation of an arrangement for a comparison of a silent coding in accordance with working design 3 or working design 5 of the USAC Design Standard with a coding scheme in accordance with the comparison example ;

[00083] A figura 18 mostra uma representação em tabela das taxas de bits médios produzidos por um codificador aritmético USAC de acordo com o projeto de trabalho 3 do Padrão de Projeto USAC e de acordo com um exemplo de comparação;[00083] Figure 18 shows a tabular representation of the average bit rates produced by a USAC arithmetic encoder in accordance with working design 3 of the USAC Design Standard and in accordance with a comparison example;

[00084] A figura 19 mostra uma representação em tabela de níveis mínimo e máximo do reservatório de bits para um decodificador aritmético de acordo com o projeto de trabalho 3 do Padrão de Projeto USAC e para um decodificador aritmético de acordo com um exemplo de comparação;[00084] Figure 19 shows a table representation of minimum and maximum levels of the bit reservoir for an arithmetic decoder in accordance with working design 3 of the USAC Design Standard and for an arithmetic decoder in accordance with a comparison example;

[00085] A figura 20 mostra uma representação em tabela dos números da complexidade média para decodificar um fluxo de bits de 32-kbits de acordo com projeto de trabalho 3 do Padrão de Projeto USAC para diferentes versões do codificador aritmético;[00085] Figure 20 shows a tabular representation of the average complexity numbers for decoding a 32-kbit bit stream in accordance with working design 3 of the USAC Design Standard for different versions of the arithmetic encoder;

[00086] A figura 21 mostra uma representação em tabela de um conteúdo de uma tabela “ari_lookup_m[742]”, de acordo com uma realização da invenção;[00086] Figure 21 shows a table representation of a content of a table “ari_lookup_m[742]”, according to an embodiment of the invention;

[00087] As figuras 22(1) a 22(4) mostram uma representação em tabela de um conteúdo de uma tabela “ari_hash_m[742]”, de acordo com uma realização da invenção;[00087] Figures 22(1) to 22(4) show a table representation of a content of a table “ari_hash_m[742]”, according to an embodiment of the invention;

[00088] As figuras 23(1) a 23(3) mostram uma representação em tabela de um conteúdo de uma tabela “ari_cf_m[64][17]”, de acordo com uma realização da invenção; e[00088] Figures 23(1) to 23(3) show a table representation of a content of a table “ari_cf_m[64][17]”, according to an embodiment of the invention; It is

[00089] A figura 24 mostra uma representação em tabela de um conteúdo de uma tabela “ari_cf_r[]”;[00089] Figure 24 shows a table representation of a content of a table “ari_cf_r[]”;

[00090] A figura 25 mostra uma representação esquemática de um contexto para um cálculo de estado;[00090] Figure 25 shows a schematic representation of a context for a state calculation;

[00091] A figura 26 mostra uma representação em tabela de um desempenho de codificação média para transcodificação dos fluxos de bits da qualidade de referência WD6 para um exemplo de comparação (“M17558”) e para uma realização de acordo com a invenção (“Nova Proposta”);[00091] Figure 26 shows a tabular representation of an average coding performance for transcoding the WD6 reference quality bit streams for a comparison example (“M17558”) and for an embodiment according to the invention (“New Proposal");

[00092] A figura 27 mostra uma representação em tabela de um desempenho da codificação para transcodificar os fluxos de bits da qualidade de referência WD6 por ponto operacional para um exemplo de comparação (“M17558”) e para uma realização de acordo com a invenção (“Tabelas retreinadas”)[00092] Figure 27 shows a table representation of a coding performance for transcoding the WD6 reference quality bit streams per operating point for a comparison example (“M17558”) and for an embodiment according to the invention ( “Retrained tables”)

[00093] A figura 28 mostra uma representação em tabela de uma comparação da Demanda de Memória do Codificador Silencioso para WD6, para um exemplo de comparação (“M17588”) e para uma realização de acordo com a invenção (“Nova Proposta”);[00093] Figure 28 shows a table representation of a comparison of the Silent Encoder Memory Demand for WD6, for a comparison example (“M17588”) and for an embodiment according to the invention (“New Proposal”);

[00094] A figura 29 mostra uma representação em tabela das características das tabelas conforme utilizado em uma realização de acordo com a invenção (“Esquema de codificação retreinada”);[00094] Figure 29 shows a tabular representation of the characteristics of tables as used in an embodiment according to the invention (“Retrained coding scheme”);

[00095] A figura 30 mostra uma representação em tabela de números da complexidade média para decodificar os fluxos de bits de 32kbits da qualidade de referência WD6 para as diferentes versões do codificador aritmético;[00095] Figure 30 shows a table representation of numbers of the average complexity for decoding the WD6 reference quality 32kbit bit streams for the different versions of the arithmetic encoder;

[00096] A figura 31 mostra uma representação em tabela de números da complexidade média para decodificar os fluxos de bits de 12 kbits da qualidade de referência WD6 para as diferentes versões do codificador aritmético;[00096] Figure 31 shows a table representation of numbers of the average complexity for decoding the WD6 reference quality 12 kbit bit streams for the different versions of the arithmetic encoder;

[00097] A figura 32 mostra uma representação em tabela das taxas de bits médios produzidos pelo codificador aritmético em uma realização de acordo com a invenção e na WD6;[00097] Figure 32 shows a tabular representation of the average bit rates produced by the arithmetic encoder in an embodiment according to the invention and in WD6;

[00098] A figura 33 mostra uma representação em tabela das taxas de bits mínimos, máximos e médios de USAC em uma base utilizando o esquema proposto;[00098] Figure 33 shows a table representation of the minimum, maximum and average USAC bit rates on a basis using the proposed scheme;

[00099] A figura 34 mostra uma representação em tabela das taxas de bits médios produzidos por um codificador USAC utilizando codificador aritmético WD6 e um codificador de acordo com uma realização de acordo com a invenção (“Nova Proposta”);[00099] Figure 34 shows a tabular representation of the average bit rates produced by a USAC encoder using WD6 arithmetic encoder and an encoder according to an embodiment according to the invention (“New Proposal”);

[000100] A figura 35 mostra uma representação em tabela dos melhores e piores casos para uma realização de acordo com a invenção;[000100] Figure 35 shows a table representation of the best and worst cases for an embodiment according to the invention;

[000101] A figura 36 mostra uma representação em tabela do limite de reservatório de bit para uma realização de acordo com a invenção;[000101] Figure 36 shows a table representation of the bit reservoir limit for an embodiment according to the invention;

[000102] A figura 37 mostra uma representação de sintaxe dos dados aritmeticamente codificados “arith_data”, de acordo com uma realização da invenção;[000102] Figure 37 shows a syntax representation of the arithmetically encoded data “arith_data”, according to an embodiment of the invention;

[000103] A figura 38 mostra uma legenda das definições dos elementos de ajuda;[000103] Figure 38 shows a legend of the help element definitions;

[000104] A figura 39 mostra outra legenda das definições;[000104] Figure 39 shows another legend of the definitions;

[000105] A figura 40a mostra uma representação em código do pseudo-programa de uma função ou algoritmo “arith_map_context”, de acordo com uma realização da invenção;[000105] Figure 40a shows a code representation of the pseudo-program of a function or algorithm “arith_map_context”, according to an embodiment of the invention;

[000106] A figura 40b mostra uma representação em código do pseudo-programa de uma função ou algoritmo “arith_get_context”, de acordo com uma realização da invenção;[000106] Figure 40b shows a code representation of the pseudo-program of a function or algorithm “arith_get_context”, according to an embodiment of the invention;

[000107] A figura 40c mostra uma representação em código do pseudo-programa de uma função ou algoritmo “arith_map_pk”, de acordo com uma realização da invenção;[000107] Figure 40c shows a code representation of the pseudo-program of a function or algorithm “arith_map_pk”, according to an embodiment of the invention;

[000108] A figura 40d mostra uma representação em código do pseudo-programa de uma primeira parte de uma função ou algoritmo “arith_decode”, de acordo com uma realização da invenção;[000108] Figure 40d shows a code representation of the pseudo-program of a first part of an “arith_decode” function or algorithm, according to an embodiment of the invention;

[000109] A figura 40e mostra uma representação em código do pseudo-programa de uma segunda parte de uma função ou algoritmo “arith_decode”, de acordo com uma realização da invenção;[000109] Figure 40e shows a code representation of the pseudo-program of a second part of an “arith_decode” function or algorithm, according to an embodiment of the invention;

[000110] A figura 40f mostra uma representação em código do pseudo-programa de uma função ou algoritmo para decodificar um ou mais bits menos significativos, de acordo com uma realização da invenção;[000110] Figure 40f shows a pseudo-program code representation of a function or algorithm for decoding one or more less significant bits, according to an embodiment of the invention;

[000111] A figura 40g mostra uma representação em código do pseudo-programa de uma função ou algoritmo “arith_update_context”, de acordo com uma realização da invenção;[000111] Figure 40g shows a code representation of the pseudo-program of an “arith_update_context” function or algorithm, according to an embodiment of the invention;

[000112] A figura 40h mostra uma representação em código do pseudo-programa de uma função ou algoritmo “arith_save_context”, de acordo com uma realização da invenção;[000112] Figure 40h shows a code representation of the pseudo-program of an “arith_save_context” function or algorithm, according to an embodiment of the invention;

[000113] As figuras 41(1) e 41(2) mostram uma representação em tabela de um conteúdo de uma tabela “ari_lookup_m[742]”, de acordo com uma realização da invenção;[000113] Figures 41(1) and 41(2) show a table representation of a content of a table “ari_lookup_m[742]”, according to an embodiment of the invention;

[000114] As figuras 42 (1) ,(2),(3),(4) mostram uma representação em tabela de um conteúdo de uma tabela “ari_hash_m[742]”, de acordo com uma realização da invenção;[000114] Figures 42 (1), (2), (3), (4) show a table representation of a content of a table “ari_hash_m[742]”, according to an embodiment of the invention;

[000115] As figuras 43 (1),(2),(3),(4),(5),(6) mostram uma representação em tabela de um conteúdo de uma tabela “ari_cf_m[96][17]”, de acordo com uma realização da invenção; e[000115] Figures 43 (1),(2),(3),(4),(5),(6) show a table representation of a content of a table “ari_cf_m[96][17]”, according to an embodiment of the invention; It is

[000116] A figura 44 mostra uma representação em tabela de uma tabela “ari_cf_r[4]”, de acordo com uma realização da invenção.[000116] Figure 44 shows a table representation of a table “ari_cf_r[4]”, according to an embodiment of the invention.

[000117] DESCRIÇÃO DETALHADA DAS REALIZAÇÕES[000117] DETAILED DESCRIPTION OF ACHIEVEMENTS

[000118] Codificador de áudio de acordo com a figura 7[000118] Audio encoder according to figure 7

[000119] A figura 7 mostra um diagrama em blocos esquemático de um codificador de áudio, de acordo com uma realização da invenção. O codificador de áudio 700 é configurado para receber uma informação de áudio de entrada 710 e para prover, com base nesta, uma informação de áudio codificada 712.[000119] Figure 7 shows a schematic block diagram of an audio encoder, according to an embodiment of the invention. The audio encoder 700 is configured to receive an input audio information 710 and to provide, based on this, a coded audio information 712.

[000120] O codificador de áudio compreende um conversor de domínio de tempo em domínio de frequência com compactação de energia 720 que é configurado para prover uma representação de áudio de domínio de frequência 722 com base em uma representação de domínio de tempo da informação de áudio de entrada 710, de modo que a representação de áudio de domínio de frequência 722 compreende um conjunto de valores espectrais.[000120] The audio encoder comprises an energy-compressed time-domain to frequency-domain converter 720 that is configured to provide a frequency-domain audio representation 722 based on a time-domain representation of the audio information input 710, such that the frequency domain audio representation 722 comprises a set of spectral values.

[000121] O codificador de áudio 700 também compreende um codificador aritmético 730 configurado para codificar um valor espectral (fora do conjunto dos valores espectrais que formam a representação de áudio de domínio de frequência 722), ou uma versão pré-processada desta, utilizando uma senha de comprimento variável para obter a informação de áudio codificada 712 (que pode compreender, por exemplo, diversas senhas de comprimento variável).[000121] The audio encoder 700 also comprises an arithmetic encoder 730 configured to encode a spectral value (outside the set of spectral values that form the frequency domain audio representation 722), or a pre-processed version thereof, using a variable length password to obtain the encoded audio information 712 (which may comprise, for example, several variable length passwords).

[000122] O codificador aritmético 730 é configurado para mapear um valor espectral, ou um valor de um plano de bits mais significativo de um valor espectral, em um valor de código (ou seja, em uma senha de comprimento variável) dependendo de um estado de contexto.[000122] The arithmetic encoder 730 is configured to map a spectral value, or a value of a more significant bit plane of a spectral value, into a code value (i.e., into a variable-length password) depending on a state of context.

[000123] O codificador aritmético é configurado para selecionar uma regra de mapeamento que descreve um mapeamento de um valor espectral, ou de um plano de bits mais significativo de um valor espectral, em um valor de código, dependendo de um estado de contexto (corrente). O codificador aritmético é configurado para determinar o estado de contexto corrente, ou um valor de contexto corrente numérico que descreve o estado de contexto corrente, dependendo dos diversos valores espectrais previamente codificados (preferivelmente, mas não necessariamente, adjacente).[000123] The arithmetic encoder is configured to select a mapping rule that describes a mapping of a spectral value, or a most significant bit plane of a spectral value, into a code value, depending on a context state (current ). The arithmetic encoder is configured to determine the current context state, or a numerical current context value that describes the current context state, depending on several previously encoded (preferably, but not necessarily, adjacent) spectral values.

[000124] Para esta finalidade, o codificador aritmético é configurado para avaliar uma tabela hash, cujas entradas definem tanto os valores de estado significativo entre os valores de contexto numérico quanto os limites dos intervalos dos valores de contexto numérico.[000124] For this purpose, the arithmetic encoder is configured to evaluate a hash table, the entries of which define both the significant state values among the numeric context values and the limits of the ranges of the numeric context values.

[000125] A hash_table (também designada como “ari_hash_m” a seguir) é preferivelmente definida como dado na representação em tabela das figuras 22(1), 22(2), 22(3) e 22(4).[000125] The hash_table (also referred to as “ari_hash_m” below) is preferably defined as given in the table representation of figures 22(1), 22(2), 22(3) and 22(4).

[000126] Além disso, o codificador aritmético é preferivelmente configurado para avaliar a tabela hash (ari_hash_m), para determinar se o valor de contexto corrente numérico é idêntico a um valor de contexto da tabela descrito pelas entradas da tabela hash (ari_hash_m) e/ou para determinar um intervalo descrito pelas entradas da tabela hash (ari_hash_m) no qual o valor de contexto corrente numérico se encontra, e para derivar um valor do índice da regra de mapeamento (por exemplo, designada com “pki” aqui) que descreve uma regra de mapeamento selecionada dependendo de um resultado da avaliação.[000126] Furthermore, the arithmetic encoder is preferably configured to evaluate the hash table (ari_hash_m), to determine whether the current numeric context value is identical to a table context value described by the hash table entries (ari_hash_m) and/or or to determine a range described by the hash table entries (ari_hash_m) in which the current numeric context value lies, and to derive an index value from the mapping rule (e.g., designated with “pki” here) that describes a mapping rule selected depending on an evaluation result.

[000127] Em alguns casos, um valor do índice da regra de mapeamento pode ser individualmente associado a um valor de contexto (corrente) numérico sendo um valor de estado significativo. Ainda, um valor do índice da regra de mapeamento comum pode estar associado a diferentes valores de contexto (corrente) numérico que se encontram dentro de um intervalo ligado pelos limites de intervalo (em que os limites de intervalo são preferivelmente definidos pelas entradas da tabela hash).[000127] In some cases, a mapping rule index value may be individually associated with a numeric context (current) value being a meaningful state value. Furthermore, a common mapping rule index value may be associated with different numeric context (current) values that lie within a range linked by range boundaries (where the range boundaries are preferably defined by hash table entries). ).

[000128] Como pode ser visto, o mapeamento de um valor espectral (da representação de áudio de domínio de frequência 722), ou de um plano de bits mais significativo de um valor espectral, em um valor de código (da informação de áudio codificada 712) , pode ser realizado por uma codificação do valor espectral 740 utilizando uma regra de mapeamento 742 . Um rastreador de estado 750 pode ser configurado para rastrear o estado de contexto. O rastreador de estado 750 provê uma informação 754 que descreve o estado de contexto corrente. A informação 754 que descreve o estado de contexto corrente pode preferivelmente ter a forma de um valor de contexto corrente numérico. Um selecionador da regra de mapeamento 760 é configurado para selecionar uma regra de mapeamento, por exemplo, uma tabela de frequências cumulativas, que descreve um mapeamento de um valor espectral, ou de um plano de bits mais significativo de um valor espectral, em um valor de código. Certamente, o selecionador da regra de mapeamento 760 provê a informação da regra de mapeamento 742 para a codificação do valor espectral 740. A informação da regra de mapeamento 742 pode ter a forma de um valor do índice da regra de mapeamento ou de uma tabela de frequências cumulativas selecionada dependendo de um valor do índice da regra de mapeamento. O selecionador da regra de mapeamento 760 compreende (ou pelo menos avalia) uma tabela hash 752, cujas entradas definem tanto os valores de estado significativo entre os valores de contexto numérico e limites quanto os intervalos dos valores de contexto numérico. Preferivelmente, as entradas da tabela hash 762 (ari_hash_m[742]) são definidas como dado na representação em tabela das figuras 22(1) a 22(4). A tabela hash 762 é avaliada para selecionar a regra de mapeamento, ou seja, para prover a informação da regra de mapeamento 742.[000128] As can be seen, mapping a spectral value (from the frequency domain audio representation 722), or a more significant bit plane of a spectral value, into a code value (from the encoded audio information 712), can be accomplished by encoding the spectral value 740 using a mapping rule 742. A state tracker 750 may be configured to track context state. State tracker 750 provides information 754 that describes the current context state. Information 754 describing the current context state may preferably be in the form of a numeric current context value. A mapping rule selector 760 is configured to select a mapping rule, e.g., a cumulative frequency table, that describes a mapping of a spectral value, or a most significant bit plane of a spectral value, onto a value of code. Of course, the mapping rule selector 760 provides the mapping rule information 742 for encoding the spectral value 740. The mapping rule information 742 may be in the form of a mapping rule index value or a mapping rule table. cumulative frequencies selected depending on a mapping rule index value. The mapping rule selector 760 comprises (or at least evaluates) a hash table 752, the entries of which define both the significant state values between the numeric context values and thresholds and the ranges of the numeric context values. Preferably, the hash table entries 762 (ari_hash_m[742]) are defined as given in the table representation of figures 22(1) to 22(4). The hash table 762 is evaluated to select the mapping rule, that is, to provide the mapping rule information 742.

[000129] Preferivelmente, mas não necessariamente, um valor do índice da regra de mapeamento pode ser individualmente associado a um valor de contexto numérico sendo um valor de estado significativo, e um valor do índice da regra de mapeamento comum pode ser associado a diferentes valores de contexto numérico que se encontra dentro de um intervalo ligado pelos limites de intervalo.[000129] Preferably, but not necessarily, a mapping rule index value can be individually associated with a numeric context value being a meaningful state value, and a common mapping rule index value can be associated with different values numeric context that lies within a range connected by range boundaries.

[000130] Para resumir o mencionado acima, o codificador de áudio 700 realiza uma codificação aritmética de uma representação de áudio de domínio de frequência provida pelo conversor de domínio de tempo em domínio de frequência. A codificação aritmética é dependente de contexto, de modo que uma regra de mapeamento (por exemplo, uma tabela de frequências cumulativas) seja selecionada dependendo dos valores espectrais previamente codificados. Certamente, os valores espectrais adjacentes em tempo e/ou frequência (ou, pelo menos, dentro de um ambiente predeterminado) um ao outro e/ou ao valor espectral atualmente codificado (ou seja, valores espectrais dentro de um ambiente predeterminado do valor espectral atualmente codificado) são considerados na codificação aritmética para ajustar a distribuição de probabilidade avaliada pela codificação aritmética. Ao selecionar uma regra de mapeamento apropriada, os valores de contexto corrente numérico 754 providos por um rastreador de estado 750 são avaliados. Como tipicamente, o número de diferentes regras de mapeamento é significantemente menor do que o número de possíveis valores dos valores de contexto corrente numérico 754, o selecionador da regra de mapeamento 760 aloca as mesmas regras de mapeamento (descritas, por exemplo, por um valor de índice de regra de mapeamento) a um número comparavelmente grande de diferentes valores de contexto numérico. Entretanto, há configurações espectrais tipicamente específicas (representadas por valores de contexto numérico específico) nos quais uma regra de mapeamento particular deve ser associada a fim de obter uma boa eficiência de codificação.[000130] To summarize the above, the audio encoder 700 performs an arithmetic encoding of a frequency domain audio representation provided by the time domain to frequency domain converter. Arithmetic coding is context-dependent, such that a mapping rule (e.g., a cumulative frequency table) is selected depending on the previously encoded spectral values. Of course, spectral values adjacent in time and/or frequency (or, at least, within a predetermined environment) to each other and/or to the currently encoded spectral value (i.e., spectral values within a predetermined environment of the currently encoded spectral value coded) are considered in arithmetic coding to adjust the probability distribution evaluated by arithmetic coding. By selecting an appropriate mapping rule, the numeric current context values 754 provided by a state tracker 750 are evaluated. Since typically, the number of different mapping rules is significantly smaller than the number of possible values of the current numeric context values 754, the mapping rule selector 760 allocates the same mapping rules (described, for example, by a value mapping rule index) to a comparably large number of different numeric context values. However, there are typically specific spectral configurations (represented by specific numerical context values) to which a particular mapping rule must be associated in order to obtain good coding efficiency.

[000131] Foi observado que a seleção de uma regra de mapeamento dependendo de um valor de contexto corrente numérico pode ser realizada com eficiência computacional particularmente alta se as entradas de uma única tabela hash definir ambos os valores de estado significativo e limites dos intervalos dos valores de contexto (corrente) numérico. Além disso, foi observado que o uso da tabela hash conforme definido nas figuras 22(1), 22(2), 22(3), 22(4) traz uma eficiência de codificação particularmente alta. Foi observado que este mecanismo, em combinação com a dita tabela hash, é bem adaptado às exigências da seleção da regra de mapeamento, pois há muitos casos onde um único valor de estado significativo (ou valor de contexto numérico significativo) é embutido entre um intervalo esquerdo de diversos valores de estado não significativos (nos quais uma regra de mapeamento comum está associada) e um intervalo direito de diversos valores de estado não significativos (nos quais uma regra de mapeamento comum está associada). Ainda, o mecanismo da utilização de uma única tabela hash, cujas entradas são definidas nas tabelas das figuras 22(1), 22(2), 22(3), 22(4) e definem tanto os valores de estado significativo quanto os limites de intervalos dos valores de contexto (corrente) numérico podem eficientemente lidar com diferentes casos, onde, por exemplo, há dois intervalos de valores de estado não significativos adjacentes (também designados como valores de contexto não significativo numérico) sem um valor de estado significativo entre eles. Uma eficiência computacional particularmente alta é obtida devido a um número de acessos da tabela sendo mantidos pequenos. Por exemplo, uma única pesquisa de tabela iterativa é suficiente na maioria das realizações a fim de descobrir se o valor de contexto corrente numérico é igual a qualquer um dos valores de estado significativos, ou em quais dos intervalos de valores de estado não significativos o valor de contexto corrente numérico permanece. Consequentemente, o número de acessos da tabela que consomem tempo e energia pode ser mantido pequeno. Assim, o selecionador da regra de mapeamento 760, que utiliza a tabela hash 762, pode ser considerado como um selecionador da regra de mapeamento particularmente eficiente em termos de complexidade computacional, enquanto ainda permitem obter uma boa eficiência de codificação (em termos de taxa de bit).[000131] It has been observed that the selection of a mapping rule depending on a numeric current context value can be performed with particularly high computational efficiency if the entries of a single hash table define both significant state values and range limits of the values. numeric (current) context. Furthermore, it was observed that the use of the hash table as defined in figures 22(1), 22(2), 22(3), 22(4) brings particularly high coding efficiency. It has been observed that this mechanism, in combination with said hash table, is well adapted to the requirements of mapping rule selection, as there are many cases where a single significant state value (or significant numeric context value) is embedded between a range left range of multiple non-significant state values (to which a common mapping rule is associated) and a right range of multiple non-significant state values (to which a common mapping rule is associated). Furthermore, the mechanism of using a single hash table, whose entries are defined in the tables in figures 22(1), 22(2), 22(3), 22(4) and define both the significant state values and the limits of ranges of numeric (current) context values can efficiently deal with different cases, where, for example, there are two adjacent non-significant state value ranges (also referred to as numeric non-significant context values) without a significant state value between they. Particularly high computational efficiency is achieved due to the number of table accesses being kept small. For example, a single iterative table lookup is sufficient in most implementations to discover whether the current numeric context value is equal to any of the significant state values, or in which of the non-significant state value ranges the value numeric current context remains. Consequently, the number of time- and energy-consuming table accesses can be kept small. Thus, the mapping rule selector 760, which uses the hash table 762, can be considered as a particularly efficient mapping rule selector in terms of computational complexity, while still allowing good coding efficiency (in terms of bit rate) to be obtained. bits).

[000132] Outros detalhes referentes à derivação da informação da regra de mapeamento 742 do valor de contexto corrente numérico 754 serão descritos abaixo.[000132] Other details regarding the derivation of mapping rule information 742 from the current numeric context value 754 will be described below.

[000133] Decodificador de áudio de acordo com a figura 8[000133] Audio decoder according to figure 8

[000134] A figura 8 mostra um diagrama em blocos esquemático de um decodificador de áudio 800. O decodificador de áudio 800 é configurado para receber uma informação de áudio codificada 810 e para prover, com base neste, uma informação de áudio decodificada 812.[000134] Figure 8 shows a schematic block diagram of an audio decoder 800. The audio decoder 800 is configured to receive encoded audio information 810 and to provide, based on this, decoded audio information 812.

[000135] O decodificador de áudio 800 compreende um decodificador aritmético 820 que é configurado para prover diversos valores espectrais 822 com base em uma representação aritmeticamente codificada 821 dos valores espectrais.[000135] The audio decoder 800 comprises an arithmetic decoder 820 that is configured to provide various spectral values 822 based on an arithmetically encoded representation 821 of the spectral values.

[000136] O decodificador de áudio 800 também compreende um conversor de domínio de frequência em domínio de tempo 830 que é configurado para receber os valores espectrais decodificados 822 e para prover a representação de áudio de domínio de tempo 812, que pode constituir a informação de áudio decodificada, utilizando os valores espectrais decodificados 822, para obter uma informação de áudio decodificada 812.[000136] The audio decoder 800 also comprises a frequency domain to time domain converter 830 that is configured to receive the decoded spectral values 822 and to provide the time domain audio representation 812, which may constitute the audio information. decoded audio using the decoded spectral values 822 to obtain decoded audio information 812.

[000137] O decodificador aritmético 820 compreende um valor espectral determinador 824, que é configurado para mapear um valor de código da representação aritmeticamente codificada 821 dos valores espectrais em um código de símbolo representando um ou mais dos valores espectrais decodificados, ou pelo menos uma parte (por exemplo, um plano de bits mais significativo) de um ou mais dos valores espectrais decodificados. O valor espectral determinador 824 pode ser configurado para realizar um mapeamento dependendo de uma regra de mapeamento, que pode ser descrita por uma informação da regra de mapeamento 828a. A informação da regra de mapeamento 828a pode, por exemplo, ter a forma de um valor do índice da regra de mapeamento, ou de uma tabela de frequências cumulativas selecionada (selecionada, por exemplo, dependendo de um valor do índice da regra de mapeamento).[000137] The arithmetic decoder 820 comprises a determining spectral value 824, which is configured to map a code value of the arithmetically encoded representation 821 of the spectral values into a symbol code representing one or more of the decoded spectral values, or at least a portion (e.g., a most significant bit plane) of one or more of the decoded spectral values. The determining spectral value 824 can be configured to perform a mapping depending on a mapping rule, which can be described by information from the mapping rule 828a. The mapping rule information 828a may, for example, be in the form of a mapping rule index value, or a selected cumulative frequency table (selected, for example, depending on a mapping rule index value). .

[000138] O decodificador aritmético 820 é configurado para selecionar uma regra de mapeamento (por exemplo, uma tabela de frequências cumulativas) que descreve um mapeamento do valor de códigos (descrito pela representação aritmeticamente codificada 821 dos valores espectrais) em um código de símbolo (que descreve um ou mais valores espectrais, ou um plano de bits mais significativo desta, em uma forma decodificada) dependendo de um estado de contexto (que pode ser descrito pela informação do estado de contexto 826a).[000138] The arithmetic decoder 820 is configured to select a mapping rule (e.g., a cumulative frequency table) that describes a mapping of the code value (described by the arithmetically coded representation 821 of the spectral values) into a symbol code ( which describes one or more spectral values, or a more significant bit plane thereof, in a decoded form) depending on a context state (which may be described by context state information 826a).

[000139] O decodificador aritmético 820 é configurado para determinar o estado de contexto corrente (descrito pelo valor de contexto corrente numérico) dependendo dos diversos valores espectrais previamente decodificados. Para esta finalidade, um rastreador de estado 826 pode ser utilizado, que recebe uma informação que descreve os valores espectrais previamente decodificados e que provê, com base neste, um valor de contexto corrente numérico 826a que descreve o estado de contexto corrente.[000139] The arithmetic decoder 820 is configured to determine the current context state (described by the numerical current context value) depending on the various previously decoded spectral values. For this purpose, a state tracker 826 can be used, which receives information describing previously decoded spectral values and which provides, based on this, a numerical current context value 826a that describes the current context state.

[000140] O decodificador aritmético também é configurado para avaliar uma tabela hash 829, cujas entradas definem tanto os valores de estado significativo entre os valores de contexto numérico quanto os limites dos intervalos dos valores de contexto numérico, para selecionar a regra de mapeamento. Preferivelmente, as entradas da tabela hash 829 (ari_hash_m[742]) são definidas como dado na representação em tabela das figuras 22(1) a 22(4). A tabela hash 829 é avaliada para selecionar a regra de mapeamento, ou seja, a fim de prover a informação da regra de mapeamento 829.[000140] The arithmetic decoder is also configured to evaluate a hash table 829, whose entries define both the significant state values between the numeric context values and the range boundaries of the numeric context values, to select the mapping rule. Preferably, the hash table entries 829 (ari_hash_m[742]) are defined as given in the table representation of figures 22(1) to 22(4). The hash table 829 is evaluated to select the mapping rule, i.e., in order to provide the mapping rule information 829.

[000141] Preferivelmente, um valor do índice da regra de mapeamento é individualmente associado a um valor de contexto numérico sendo um valor de estado significativo, e um valor do índice da regra de mapeamento comum é associado a diferentes valores de contexto numérico que se encontram dentro de um intervalo ligado pelos limites de intervalo. A avaliação da tabela hash 829 pode, por exemplo, ser realizada utilizando um avaliador da tabela hash que pode ser parte do selecionador da regra de mapeamento 828. Certamente, uma informação da regra de mapeamento 828a, por exemplo, na forma de um valor do índice da regra de mapeamento, é obtido com base no valor de contexto corrente numérico 826a que descreve o estado de contexto corrente. O selecionador da regra de mapeamento 828 pode, por exemplo, determinar o valor do índice da regra de mapeamento 828a dependendo de um resultado da avaliação da tabela hash 829. De modo alternativo, a avaliação da tabela hash 829 pode prover diretamente o valor do índice da regra de mapeamento.[000141] Preferably, a mapping rule index value is individually associated with a numeric context value being a significant state value, and a common mapping rule index value is associated with different numeric context values that lie within a range linked by the range boundaries. Evaluation of the hash table 829 may, for example, be performed using a hash table evaluator that may be part of the mapping rule selector 828. Of course, information from the mapping rule 828a, for example, in the form of a value of the index of the mapping rule, is obtained based on the numeric current context value 826a that describes the current context state. The selector of the mapping rule 828 may, for example, determine the value of the index of the mapping rule 828a depending on a result of the evaluation of the hash table 829. Alternatively, the evaluation of the hash table 829 may directly provide the value of the index of the mapping rule.

[000142] Referente à funcionalidade do decodificador de sinal de áudio 800, deve ser observado que o decodificador aritmético 820 é configurado para selecionar uma regra de mapeamento (por exemplo, a tabela de frequências cumulativas) que é, em média, bem adaptada aos valores espectrais a ser decodificados, conforme a regra de mapeamento é selecionada dependendo do estado de contexto corrente (descrito, por exemplo, pelo valor de contexto corrente numérico), que por sua vez é determinado dependendo dos diversos valores espectrais previamente decodificados. Assim, as dependências estatísticas entre os valores espectrais adjacentes a ser codificados podem ser explorados. Além disso, o decodificador aritmético 820 pode ser implementado eficientemente, com uma boa troca entre a complexidade computacional, tamanho da tabela, e eficiência da codificação, que utiliza o selecionador da regra de mapeamento 828. Pela avaliação de uma (única) tabela hash 829, nas entradas que descrevem ambos os valores de estado significativos e limites de intervalo dos intervalos de valores de estado não significativos, uma única pesquisa de tabela iterativa pode ser suficiente a fim de derivar a informação da regra de mapeamento 828a do valor de contexto corrente numérico 826a. Além disso, foi observado que o uso da tabela hash conforme definido nas figuras 22(1), 22(2), 22(3), 22(4) traz uma eficiência de codificação particularmente alta. Certamente, é possível mapear um número de possíveis valores de contexto (corrente) numérico diferentes comparavelmente grandes em um número de diferentes valores do índice da regra de mapeamento comparavelmente pequeno. Assim, é possível mapear um número comparavelmente grande de diferentes possíveis valores de contexto (corrente) numéricos em um número comparavelmente pequeno de diferentes valores de índice de regra de mapeamento. Utilizando a tabela hash 829, conforme descrito acima, e conforme definido na representação em tabela das figuras 22(1) a 22(4), é possível explicar a observação que, em muitos casos, um único valor de estado significativo isolado (valor de contexto significativo) é incorporado entre um intervalo esquerdo de valores de estado não significativos (valores de contexto não significativos) e um intervalo direito de valores de estado não significativos (valores de contexto não significativos), em que um diferente valor de índice de regra de mapeamento é associado ao valor de estado significativo (valor de contexto significativo), quando comparado aos valores de estado (valores de contexto) do intervalo esquerdo e os valores de estado (valores de contexto) do intervalo direito. Entretanto, o uso da tabela hash 829 é também bem adequado para situações em que os dois intervalos de valores de estado numérico são imediatamente adjacentes, sem um valor de estado significativo entre eles.[000142] Regarding the functionality of the audio signal decoder 800, it should be noted that the arithmetic decoder 820 is configured to select a mapping rule (e.g., the cumulative frequency table) that is, on average, well adapted to the values spectral values to be decoded, as the mapping rule is selected depending on the current context state (described, for example, by the numerical current context value), which in turn is determined depending on the various previously decoded spectral values. Thus, statistical dependencies between adjacent spectral values to be encoded can be explored. Furthermore, the arithmetic decoder 820 can be implemented efficiently, with a good trade-off between computational complexity, table size, and encoding efficiency, which utilizes the mapping rule selector 828. By evaluating a (single) hash table 829 , in entries describing both significant state values and range boundaries of non-significant state value ranges, a single iterative table lookup may be sufficient in order to derive the mapping rule 828a information from the current numeric context value 826a. Furthermore, it was observed that the use of the hash table as defined in figures 22(1), 22(2), 22(3), 22(4) brings particularly high coding efficiency. Of course, it is possible to map a number of different possible numeric context (current) values into a comparably small number of different mapping rule index values. Thus, it is possible to map a comparably large number of different possible numeric context (current) values into a comparably small number of different mapping rule index values. Using the hash table 829, as described above, and as defined in the tabular representation of Figures 22(1) to 22(4), it is possible to explain the observation that, in many cases, a single isolated significant state value (hash value meaningful context) is embedded between a left range of non-significant state values (non-significant context values) and a right range of non-significant state values (non-significant context values), where a different control rule index value mapping is associated with the meaningful state value (meaningful context value), when compared to the state values (context values) of the left bucket and the state values (context values) of the right bucket. However, the use of the hash table 829 is also well suited to situations in which the two ranges of numeric state values are immediately adjacent, without a significant state value between them.

[000143] Para concluir, o selecionador da regra de mapeamento 828, que avalia a tabela hash 829 “ari_hash_m[742], traz uma eficiência particularmente boa ao selecionar uma regra de mapeamento (ou ao prover um valor do índice da regra de mapeamento) dependendo do estado de contexto corrente (ou dependendo do valor de contexto corrente numérico que descreve o estado de contexto corrente), pois o mecanismo de hashing é bem adaptado aos típicos cenários de contexto em um decodificador de áudio.[000143] To conclude, the mapping rule selector 828, which evaluates the hash table 829 “ari_hash_m[742], brings particularly good efficiency when selecting a mapping rule (or when providing a mapping rule index value). depending on the current context state (or depending on the numeric current context value that describes the current context state), as the hashing mechanism is well adapted to typical context scenarios in an audio decoder.

[000144] Outros detalhes serão descritos abaixo.[000144] Other details will be described below.

[000145] Mecanismo de Hashing do valor de contexto de acordo com a figura 9[000145] Context value hashing mechanism according to figure 9

[000146] A seguir, um mecanismo de hashing de contexto será revelado, que pode ser implementado no selecionador da regra de mapeamento 760 e/ou no selecionador da regra de mapeamento 828. A tabela hash 762 e/ou a tabela hash 829, conforme definido na representação em tabela das figuras 22(1) a 22(4), podem ser utilizadas para implementar o dito valor de mecanismo de hashing de contexto.[000146] Next, a context hashing mechanism will be disclosed, which can be implemented in the mapping rule selector 760 and/or the mapping rule selector 828. The hash table 762 and/or the hash table 829, as defined in the table representation of figures 22(1) to 22(4), can be used to implement said value context hashing mechanism.

[000147] Agora com referência à figura 9, que mostra um cenário de hashing do valor de contexto corrente numérico, outros detalhes serão descritos. Na representação gráfica da figura 9, uma abscissa 910 descreve valores do valor de contexto corrente numérico (ou seja, valores de contexto numéricos). Uma ordenada 912 descreve valores de índice de regra de mapeamento. As marcações 914 descrevem valores de índice de regra de mapeamento para valores de contexto não significativos numéricos (que descrevem estados não significativos). As marcações 916 descrevem os valores de índice de regra de mapeamento para valores de contexto significativos numéricos “individuais” (verdadeiros) que descrevem estados significativos individuais (verdadeiros). As marcações 916 descrevem valores de índice de regra de mapeamento para valores de contexto numéricos “impróprios” que descrevem estados significativos “impróprios”, em que um estado significativo “impróprio” é um estado significativo no qual o mesmo valor de índice de regra de mapeamento está associado a um dos intervalos de contexto adjacentes de contextos não significativos numéricos.[000147] Now with reference to figure 9, which shows a hashing scenario of the current numeric context value, other details will be described. In the graphical representation of Figure 9, an abscissa 910 describes values of the current numeric context value (i.e., numeric context values). An ordinate 912 describes mapping rule index values. Tags 914 describe mapping rule index values to numeric non-significant context values (which describe non-significant states). Tags 916 describe mapping rule index values to “individual” (true) numeric meaningful context values that describe individual (true) meaningful states. Tags 916 describe mapping rule index values to “improper” numeric context values that describe “improper” meaningful states, where an “improper” meaningful state is a meaningful state in which the same mapping rule index value is associated with one of the adjacent context ranges of numeric non-significant contexts.

[000148] Como pode ser visto, uma entrada da tabela hash “ari_hash_m[i1]” descreve um estado significativo individual (verdadeiro) tendo um valor de contexto numérico de c1. Como pode ser visto, o valor do índice da regra de mapeamento mriv1 está associado ao estado significativo individual (verdadeiro) tendo o valor de contexto numérico c1. Certamente, tanto o valor de contexto numérico c1 quanto o valor do índice da regra de mapeamento mriv1 podem ser descritos pela entrada da tabela hash “ari_hash_m[i1]”. Um intervalo 932 dos valores de contexto numérico é ligado pelo valor de contexto numérico c1, em que o valor de contexto numérico c1 não pertence ao intervalo 932, de modo que o maior valor de contexto numérico do intervalo 932 seja igual a cl — 1. Um valor do índice da regra de mapeamento de mriv4 (que é diferente de mriv1) é associado com os valores de contexto numérico do intervalo 932. O valor do índice da regra de mapeamento mriv4 pode, por exemplo, ser descrito pela entrada da tabela “ari_lookup_m[i1-1]” de uma tabela adicional “ari_lookup_m”.[000148] As can be seen, a hash table entry “ari_hash_m[i1]” describes an individual meaningful state (true) having a numeric context value of c1. As can be seen, the index value of the mriv1 mapping rule is associated with the individual meaningful state (true) having the numeric context value c1. Of course, both the numeric context value c1 and the mapping rule index value mriv1 can be described by the hash table entry “ari_hash_m[i1]”. A range 932 of the numeric context values is linked by the numeric context value c1, wherein the numeric context value c1 does not belong to the range 932, such that the largest numeric context value of the range 932 is equal to cl — 1. A mapping rule index value of mriv4 (which is different from mriv1) is associated with numeric context values from range 932. The mapping rule index value of mriv4 can, for example, be described by the table entry “ ari_lookup_m[i1-1]” from an additional table “ari_lookup_m”.

[000149] Além disso, um valor do índice da regra de mapeamento mriv2 pode ser associado com os valores de contexto numérico que se encontram dentro de um intervalo 934. Uma ligação inferior do intervalo 934 é determinado pelo valor de contexto numérico c1, que é um valor de contexto numérico significativo, em que o valor de contexto numérico c1 não pertence ao intervalo 932. Certamente, o menor valor do intervalo 934 é igual a c1 + 1 (assumindo valores de número inteiro de contexto numérico). Outro limite do intervalo 934 é determinado pelo valor de contexto numérico c2, em que o valor de contexto numérico c2 não pertence ao intervalo 934, de modo que o maior valor do intervalo 934 é igual a c2 - 1. O valor de contexto numérico c2 é um assim chamado valor de contexto numérico “impróprio”, que é descrito por uma entrada da tabela hash “ari_hash_m[i2]”. Por exemplo, o valor do índice da regra de mapeamento mriv2 pode ser associado com o valor de contexto numérico c2, de modo que o valor de contexto numérico associado com o valor de contexto numérico “impróprio” significativo c2 seja igual ao valor do índice da regra de mapeamento associado com o intervalo 934 ligado pelo valor de contexto numérico c2. Além disso, um intervalo 936 do valor de contexto numérico também é ligado pelo valor de contexto numérico c2, em que o valor de contexto numérico c2 não pertence ao intervalo 936, de modo que o menor valor de contexto numérico do intervalo 936 é igual a c2 + 1. Um valor do índice da regra de mapeamento mriv3, que é tipicamente diferente do valor do índice da regra de mapeamento mriv2, é associado com os valores de contexto numérico do intervalo 936.[000149] Additionally, an index value of the mriv2 mapping rule may be associated with numeric context values that lie within a range 934. A lower link of the range 934 is determined by the numeric context value c1, which is a meaningful numeric context value, where the numeric context value c1 does not belong to the range 932. Of course, the smallest value in the range 934 is equal to c1 + 1 (assuming numeric context integer values). Another limit of the range 934 is determined by the numeric context value c2, where the numeric context value c2 does not belong to the range 934, so the largest value in the range 934 is equal to c2 - 1. The numeric context value c2 is a so-called “improper” numeric context value, which is described by a hash table entry “ari_hash_m[i2]”. For example, the index value of the mriv2 mapping rule may be associated with the numeric context value c2, such that the numeric context value associated with the significant “improper” numeric context value c2 is equal to the index value of the mapping rule associated with the range 934 linked by the numeric context value c2. Furthermore, a range 936 of the numeric context value is also linked by the numeric context value c2, wherein the numeric context value c2 does not belong to the range 936, so that the smallest numeric context value of the range 936 is equal to c2 + 1. An mriv3 mapping rule index value, which is typically different from the mriv2 mapping rule index value, is associated with the numeric context values of range 936.

[000150] Como pode ser visto, o valor do índice da regra de mapeamento mriv4, que é associado ao intervalo 932 dos valores de contexto numérico, pode ser descrito por uma entrada “ari_lookup_m[i1-1]” de uma tabela “ari_lookup_m”, o índice da regra de mapeamento mriv2, que é associado com os valores de contexto numérico do intervalo 934, pode ser descrito por uma entrada da tabela “ari_lookup_m[i1]” da tabela “ari_lookup_m”, e o valor do índice da regra de mapeamento mriv3 pode ser descrito por uma entrada da tabela “ari_lookup_m[i2]” da tabela “ari_lookup_m”. No exemplo dado aqui, o valor do índice da tabela hash i2, pode ser maior, em 1, do que o valor do índice da tabela hash i1.[000150] As can be seen, the index value of the mriv4 mapping rule, which is associated with the range 932 of numeric context values, can be described by an entry “ari_lookup_m[i1-1]” of a table “ari_lookup_m” , the index of the mriv2 mapping rule, which is associated with the numeric context values of the range 934, can be described by an entry of the “ari_lookup_m[i1]” table of the “ari_lookup_m” table, and the index value of the mriv2 mapping rule mriv3 mapping can be described by an entry from the “ari_lookup_m[i2]” table of the “ari_lookup_m” table. In the example given here, the hash table index value i2 may be greater, by 1, than the hash table index value i1.

[000151] Como pode ser visto da figura 9, o selecionador da regra de mapeamento 760 ou o selecionador da regra de mapeamento 828 pode receber um valor de contexto corrente numérico 764, 826a, e decidir, avaliando as entradas da tabela “ari_hash_m”, se o valor de contexto corrente numérico é um valor de estado significativo (independente se for um valor de estado significativo “individual” ou um valor de estado significativo “impróprio”), ou se o valor de contexto corrente numérico dentro de um dos intervalos 932, 934, 936, que são delimitados pelos valores de estado significativos (“individuais” ou “impróprios”) c1, c2. Tanto a verificação se o valor de contexto corrente numérico é igual a um valor de estado significativo c1, c2 quanto uma avaliação dos intervalos 932, 934, 936 na qual o valor de contexto corrente numérico permanece (no caso em que o valor de contexto corrente numérico não é igual a um valor de estado significativo) podem ser realizadas utilizando uma única pesquisa comum da tabela hash.[000151] As can be seen from Figure 9, the mapping rule selector 760 or the mapping rule selector 828 can receive a numeric current context value 764, 826a, and decide, by evaluating the entries of the “ari_hash_m” table, whether the numeric current context value is a meaningful state value (regardless of whether it is an “individual” meaningful state value or an “improper” meaningful state value), or whether the numeric current context value falls within one of the ranges 932 , 934, 936, which are bounded by the significant (“individual” or “improper”) state values c1, c2. Either checking whether the numeric current context value is equal to a significant state value c1, c2 or an evaluation of the intervals 932, 934, 936 in which the numeric current context value remains (in the case where the numeric current context value numeric does not equal a meaningful state value) can be performed using a single common hash table lookup.

[000152] Além disso, uma avaliação da tabela hash “ari_hash_m” pode ser utilizada para obter um valor do índice da tabela hash (por exemplo, i1-1, i1 ou i2). Assim, o selecionador da regra de mapeamento 760, 828 pode ser configurado para obter, avaliando uma única tabela hash 762, 829 (por exemplo, a tabela hash “ari_hash_m”), um valor do índice da tabela hash (por exemplo, i1-1, i1 ou i2) designando um valor de estado significativo (por exemplo, c1 ou c2) e/ou um intervalo (por exemplo, 932,934,936) e uma informação se o valor de contexto corrente numérico for um valor de contexto significativo (também designado como valor de estado significativo) ou não.[000152] Additionally, an evaluation of the hash table “ari_hash_m” can be used to obtain a hash table index value (e.g., i1-1, i1, or i2). Thus, the mapping rule selector 760, 828 may be configured to obtain, by evaluating a single hash table 762, 829 (e.g., the “ari_hash_m” hash table), a hash table index value (e.g., i1- 1, i1 or i2) designating a meaningful state value (e.g., c1 or c2) and/or a range (e.g., 932,934,936) and an information whether the current numeric context value is a meaningful context value (also designated as a meaningful state value) or not.

[000153] Além disso, se for observado em uma avaliação da tabela hash 762, 829, “ari_hash_m”, que o valor de contexto corrente numérico não é um valor de contexto “significativo” (ou valor de estado “significativo”), o valor do índice da tabela hash (por exemplo, i1-1, i1 ou i2) obtido de uma avaliação da tabela hash (“ari_hash_m”) pode ser utilizado para obter um valor de índice de regra de mapeamento associado a um intervalo 932, 934, 936 de valores de contexto numéricos. Por exemplo, o valor do índice da tabela hash (por exemplo, i1-1, i1 ou i2) pode ser utilizado para designar uma entrada da tabela de mapeamento adicional (por exemplo, “ari_lookup_m”), que descreve os valores de índice de regra de mapeamento associados aos intervalos 932, 934, 936 cujo valor de contexto corrente numérico se encontra.[000153] Furthermore, if it is observed in an evaluation of the hash table 762, 829, “ari_hash_m”, that the current numeric context value is not a “meaningful” context value (or “meaningful” state value), the hash table index value (e.g., i1-1, i1, or i2) obtained from a hash table evaluation (“ari_hash_m”) can be used to obtain a mapping rule index value associated with a range 932, 934 ,936 numeric context values. For example, the hash table index value (e.g., i1-1, i1, or i2) can be used to designate an additional mapping table entry (e.g., “ari_lookup_m”) that describes the hash table index values. mapping rule associated with the ranges 932, 934, 936 whose current numeric context value is found.

[000154] Para mais detalhes, a referência é feita à discussão detalhada abaixo do algoritmo “arith_get_pk” (em que há diferentes opções para este algoritmo “arith_get_pk()”, exemplos dos quais são mostrados nas figuras 5e e 5f).[000154] For further details, reference is made to the detailed discussion below of the “arith_get_pk” algorithm (where there are different options for this “arith_get_pk()” algorithm, examples of which are shown in figures 5e and 5f).

[000155] Além disso, deve ser observado que o tamanho dos intervalos pode diferir de um caso para outro. Em alguns casos, um intervalo de valores de contexto numéricos compreende um único valor de contexto numérico. Entretanto, em muitos casos, um intervalo pode compreender diversos valores de contexto numéricos.[000155] Furthermore, it should be noted that the size of the intervals may differ from one case to another. In some cases, a range of numeric context values comprises a single numeric context value. However, in many cases, a range can comprise several numeric context values.

[000156] Codificador de áudio de acordo com a figura 10[000156] Audio encoder according to figure 10

[000157] A figura 10 mostra um diagrama em blocos esquemático de um codificador de áudio 1000 de acordo com uma realização da invenção. O codificador de áudio 1000 de acordo com a figura 10 é semelhante ao codificador de áudio 700 de acordo com a figura 7, de modo que sinais e meios idênticos são designados com numerais de referência idênticos nas figuras 7 e 10.[000157] Figure 10 shows a schematic block diagram of an audio encoder 1000 according to an embodiment of the invention. The audio coder 1000 according to Figure 10 is similar to the audio coder 700 according to Figure 7, so that identical signals and media are designated with identical reference numerals in Figures 7 and 10.

[000158] O codificador de áudio 1000 é configurado para receber uma informação de áudio de entrada 710 e para prover, com base neste, uma informação de áudio codificada 712. O codificador de áudio 1000 compreende um conversor de domínio de tempo em domínio de frequência com compactação de energia 720, que é configurado para prover uma representação de domínio de frequência 722 com base em uma representação de domínio de tempo da informação de áudio de entrada 710, de modo que a representação de áudio de domínio de frequência 722 compreenda um conjunto de valores espectrais. O codificador de áudio 1000 também compreende um codificador aritmético 1030 configurado para codificar um valor espectral (fora do conjunto dos valores espectrais que formam a representação de áudio de domínio de frequência 722), ou uma versão pré-processada desta, utilizando uma senha de comprimento variável para obter a informação de áudio codificada 712 (que pode compreender, por exemplo, diversas senhas de comprimento variável).[000158] The audio coder 1000 is configured to receive an input audio information 710 and to provide, based thereon, a coded audio information 712. The audio coder 1000 comprises a time domain to frequency domain converter with power compression 720, which is configured to provide a frequency domain representation 722 based on a time domain representation of the input audio information 710, such that the frequency domain audio representation 722 comprises a set of spectral values. The audio encoder 1000 also comprises an arithmetic encoder 1030 configured to encode a spectral value (outside the set of spectral values that form the frequency domain audio representation 722), or a preprocessed version thereof, using a password of length variable to obtain the encoded audio information 712 (which may comprise, for example, several passwords of variable length).

[000159] O codificador aritmético 1030 é configurado para mapear um valor espectral, ou diversos valores espectrais, ou um valor de um plano de bits mais significativo de um valor espectral ou de diversos valores espectrais, em um valor de código (ou seja, em uma senha de comprimento variável) dependendo de um estado de contexto. O codificador aritmético 1030 é configurado para selecionar uma regra de mapeamento que descreve um mapeamento de um valor espectral, ou de diversos valores espectrais, ou de um plano de bits mais significativo de um valor espectral ou de diversos valores espectrais, em um valor de código dependendo de um estado de contexto. O codificador aritmético é configurado para determinar o estado de contexto corrente dependendo dos diversos valores espectrais previamente codificados (preferivelmente, não necessariamente adjacentes). Para esta finalidade, o codificador aritmético é configurado para modificar uma representação numérica de um valor de contexto prévio numérico, que descreve um estado de contexto associado com um ou mais valores espectrais previamente codificados (por exemplo, para selecionar uma regra de mapeamento correspondente), dependendo de um valor da sub-região de contexto, para obter uma representação numérica de um valor de contexto corrente numérico que descreve um estado de contexto associado com um ou mais valores espectrais a ser codificados (por exemplo, para selecionar uma regra de mapeamento correspondente).[000159] The arithmetic encoder 1030 is configured to map a spectral value, or multiple spectral values, or a value from a most significant bit plane of a spectral value or multiple spectral values, into a code value (i.e., into a password of variable length) depending on a context state. The arithmetic encoder 1030 is configured to select a mapping rule that describes a mapping of a spectral value, or multiple spectral values, or a most significant bit plane of a spectral value or multiple spectral values, into a code value. depending on a context state. The arithmetic encoder is configured to determine the current context state depending on several previously encoded spectral values (preferably not necessarily adjacent). For this purpose, the arithmetic encoder is configured to modify a numerical representation of a numerical prior context value, which describes a context state associated with one or more previously encoded spectral values (e.g., to select a corresponding mapping rule), depending on a context subregion value, to obtain a numeric representation of a current numeric context value that describes a context state associated with one or more spectral values to be encoded (e.g., to select a corresponding mapping rule ).

[000160] Como pode ser visto, o mapeamento de um valor espectral, ou de diversos valores espectrais, ou de um plano de bits mais significativo de um valor espectral ou de diversos valores espectrais, em um valor de código pode ser realizado por uma codificação do valor espectral 740 utilizando uma regra de mapeamento descrita por uma informação da regra de mapeamento 742. Um rastreador de estado 750 pode ser configurado para rastrear o estado de contexto. O rastreador de estado 750 pode ser configurado para modificar uma representação numérica de um valor de contexto prévio numérico, que descreve um estado de contexto associado com uma codificação de um ou mais valores espectrais previamente codificados, dependendo de um valor da sub-região de contexto, para obter uma representação numérica de um valor de contexto corrente numérico que descreve um estado de contexto associado com uma codificação de um ou mais valores espectrais a ser codificados. A modificação da representação numérica do valor de contexto prévio numérico pode, por exemplo, ser realizada por um modificador da representação numérica 1052, que recebe o valor de contexto prévio numérico e um ou mais valores da sub-região de contexto e provê o valor de contexto corrente numérico. Certamente, o rastreador de estado 1050 provê uma informação 754 que descreve o estado de contexto corrente, por exemplo, na forma de um valor de contexto corrente numérico. Um selecionador da regra de mapeamento 1060 pode selecionar uma regra de mapeamento, por exemplo, uma tabela de frequências cumulativas, que descreve um mapeamento de um valor espectral, ou de diversos valores espectrais, ou de um plano de bits mais significativo de um valor espectral ou de diversos valores espectrais, em um valor de código. Certamente, o selecionador da regra de mapeamento 1060 provê a informação da regra de mapeamento 742 à codificação espectral 740.[000160] As can be seen, the mapping of a spectral value, or several spectral values, or a more significant bit plane of a spectral value or several spectral values, into a code value can be accomplished by an encoding of the spectral value 740 using a mapping rule described by a mapping rule information 742. A state tracker 750 may be configured to track the context state. State tracker 750 may be configured to modify a numerical representation of a numerical prior context value, which describes a context state associated with an encoding of one or more previously encoded spectral values, depending on a value of the context subregion. , to obtain a numerical representation of a numerical current context value that describes a context state associated with an encoding of one or more spectral values to be encoded. Modifying the numeric representation of the numeric prior context value may, for example, be performed by a numeric representation modifier 1052, which receives the numeric prior context value and one or more values from the context subregion and provides the numeric prior context value. numeric current context. Of course, state tracker 1050 provides information 754 that describes the current context state, for example, in the form of a numeric current context value. A mapping rule selector 1060 may select a mapping rule, for example, a cumulative frequency table, that describes a mapping of a spectral value, or multiple spectral values, or a most significant bit plane of a spectral value. or of several spectral values, in one code value. Of course, the mapping rule selector 1060 provides the mapping rule information 742 to the spectral coding 740.

[000161] Deve ser observado que, em algumas realizações, o rastreador de estado 1050 pode ser idêntico ao rastreador de estado 750 ou ao rastreador de estado 826. Também deve ser observado que o selecionador da regra de mapeamento 1060 pode, em algumas realizações, ser idêntico ao selecionador da regra de mapeamento 760, ou ao selecionador da regra de mapeamento 828. Preferivelmente, o selecionador da regra de mapeamento 828 pode ser configurado para utilizar uma tabela hash “ari_hash_m[742]”, conforme definido na representação em tabela das figuras 22(1) a 22(4), para a seleção da regra de mapeamento. Por exemplo, o selecionador da regra de mapeamento pode realizar a funcionalidade conforme descrito acima com referência às figuras 7 e 8.[000161] It should be noted that, in some embodiments, the state tracker 1050 may be identical to the state tracker 750 or the state tracker 826. It should also be noted that the mapping rule selector 1060 may, in some embodiments, be identical to the mapping rule selector 760, or the mapping rule selector 828. Preferably, the mapping rule selector 828 may be configured to use a hash table “ari_hash_m[742]”, as defined in the table representation of the figures 22(1) to 22(4), for selecting the mapping rule. For example, the mapping rule selector may perform functionality as described above with reference to Figures 7 and 8.

[000162] Para resumir o mencionado acima, o codificador de áudio 1000 realiza uma codificação aritmética de uma representação de áudio de domínio de frequência provida pelo conversor de domínio de tempo em domínio de frequência. A codificação aritmética é dependente de contexto, de modo que uma regra de mapeamento (por exemplo, uma tabela de frequências cumulativas) seja selecionada dependendo dos valores espectrais previamente codificados. Certamente, os valores espectrais adjacentes em tempo e/ou frequência (ou pelo menos dentro de um ambiente predeterminado) um ao outro e/ou ao valor espectral atualmente codificado (ou seja, valores espectrais dentro de um ambiente predeterminado do valor espectral atualmente codificado) são considerados na codificação aritmética para ajustar a distribuição de probabilidade avaliada pela codificação aritmética.[000162] To summarize the above, the audio encoder 1000 performs an arithmetic encoding of a frequency domain audio representation provided by the time domain to frequency domain converter. Arithmetic coding is context-dependent, such that a mapping rule (e.g., a cumulative frequency table) is selected depending on the previously encoded spectral values. Certainly, spectral values adjacent in time and/or frequency (or at least within a predetermined environment) to each other and/or to the currently encoded spectral value (i.e., spectral values within a predetermined environment of the currently encoded spectral value) are considered in arithmetic coding to adjust the probability distribution evaluated by arithmetic coding.

[000163] Ao determinar o valor de contexto corrente numérico, uma representação numérica de um valor de contexto prévio numérico, que descreve um estado de contexto associado a um ou mais valores espectrais previamente codificados, é modificado dependendo de um valor da sub-região de contexto, para obter uma representação numérica de um valor de contexto corrente numérico que descreve um estado de contexto associado a um ou mais valores espectrais a ser codificados. Esta abordagem permite evitar um recálculo completo do valor de contexto corrente numérico, cujo recálculo completo consome uma quantidade significante de recursos nas abordagens convencionais. Uma grande variedade de possibilidades existe para a modificação da representação numérica do valor de contexto prévio numérico, incluindo uma combinação de um redimensionamento de uma representação numérica do valor de contexto prévio numérico, uma adição de um valor da sub-região de contexto ou um valor derivado deste para a representação numérica do valor de contexto prévio numérico ou a uma representação numérica processada do valor de contexto prévio numérico, uma substituição de uma parte da representação numérica (em vez de toda a representação numérica) do valor de contexto prévio numérico dependendo do valor da sub-região de contexto, e assim por diante. Assim, tipicamente a representação numérica do valor de contexto corrente numérico é obtida com base na representação numérica do valor de contexto prévio numérico e também com base em pelo menos um valor da sub-região de contexto, em que tipicamente uma combinação de operações é realizada para combinar o valor de contexto prévio numérico com um valor da sub-região de contexto, como, por exemplo, duas ou mais operações fora de uma operação de adição, uma operação de subtração, uma operação de multiplicação, uma operação de divisão, uma operação Boolean-AND, uma operação Boolean-OR, uma operação Boolean-NAND, uma operação Boolean NOR, uma operação Boolean-negation, uma operação complementar ou uma operação de mudança. Assim, pelo menos uma parte da representação numérica do valor de contexto prévio numérico é tipicamente mantida inalterada (exceto para uma mudança opcional em uma posição diferente) ao derivar o valor de contexto corrente numérico do valor de contexto prévio numérico. Em contrapartida, outras partes da representação numérica do valor de contexto prévio numérico são mudadas dependendo de um ou mais valores da sub-região de contexto. Assim, o valor de contexto corrente numérico pode ser obtido com um esforço computacional comparavelmente pequeno, enquanto evita um recálculo completo do valor de contexto corrente numérico.[000163] When determining the current numeric context value, a numeric representation of a numeric prior context value, which describes a context state associated with one or more previously encoded spectral values, is modified depending on a value of the subregion of context, to obtain a numeric representation of a current numeric context value that describes a context state associated with one or more spectral values to be encoded. This approach allows avoiding a complete recalculation of the current numeric context value, whose complete recalculation consumes a significant amount of resources in conventional approaches. A wide variety of possibilities exist for modifying the numeric representation of the numeric prior context value, including a combination of a resizing of a numeric representation of the numeric prior context value, an addition of a value from the context subregion, or a derived therefrom to the numeric representation of the numeric prior context value or to a processed numeric representation of the numeric prior context value, a substitution of a part of the numeric representation (rather than the entire numeric representation) of the numeric prior context value depending on the value of the context subregion, and so on. Thus, typically the numeric representation of the current numeric context value is obtained based on the numeric representation of the previous numeric context value and also based on at least one value of the context subregion, where typically a combination of operations is performed. to combine the numeric prior context value with a context subregion value, such as two or more operations outside of an addition operation, a subtraction operation, a multiplication operation, a division operation, a Boolean-AND operation, a Boolean-OR operation, a Boolean-NAND operation, a Boolean NOR operation, a Boolean-negation operation, a complement operation, or a shift operation. Thus, at least a portion of the numeric representation of the numeric prior context value is typically kept unchanged (except for an optional shift to a different position) when deriving the current numeric context value from the numeric prior context value. In contrast, other parts of the numeric representation of the numeric prior context value are changed depending on one or more values of the context subregion. Thus, the numerical current context value can be obtained with a comparably small computational effort, while avoiding a complete recalculation of the numerical current context value.

[000164] Assim, um valor de contexto corrente numérico significativo pode ser obtido, que é bem adequado para o uso pelo selecionador da regra de mapeamento 1060, e que é particularmente bem adequado para uso em combinação com a tabela hash ari_hash_m conforme definido na representação em tabela das figuras 22(1),22(2),22(3),22(4).[000164] Thus, a meaningful numeric current context value can be obtained, which is well suited for use by the selector of mapping rule 1060, and which is particularly well suited for use in combination with the ari_hash_m hash table as defined in the representation in table of figures 22(1),22(2),22(3),22(4).

[000165] Consequentemente, uma codificação eficiente pode ser obtida mantendo o cálculo de contexto suficientemente simples.[000165] Consequently, efficient coding can be obtained while keeping the context calculation sufficiently simple.

[000166] Decodificador de áudio de acordo com a figura 11[000166] Audio decoder according to figure 11

[000167] A figura 11 mostra um diagrama em blocos esquemático de um decodificador de áudio 1100. O decodificador de áudio 1100 é semelhante ao decodificador de áudio 800 de acordo com a figura 8, de modo que os sinais, meios e funcionalidades idênticos sejam designados com numerais de referência idênticos.[000167] Figure 11 shows a schematic block diagram of an audio decoder 1100. The audio decoder 1100 is similar to the audio decoder 800 according to Figure 8, so that identical signals, means and functionalities are designated with identical reference numerals.

[000168] O decodificador de áudio 1100 é configurado para receber uma informação de áudio codificada 810 e para prover, com base neste, uma informação de áudio decodificada 812. O decodificador de áudio 1100 compreende um decodificador aritmético 1120 que é configurado para prover diversos valores espectrais decodificados 822 com base em uma representação aritmeticamente codificada 821 dos valores espectrais. O decodificador de áudio 1100 também compreende um conversor de domínio de frequência em domínio de tempo 830 que é configurado para receber os valores espectrais decodificados 822 e para prover a representação de áudio de domínio de tempo 812, que pode constituir a informação de áudio decodificada, utilizando os valores espectrais decodificados 822, para obter uma informação de áudio decodificada 812.[000168] Audio decoder 1100 is configured to receive encoded audio information 810 and to provide, based thereon, decoded audio information 812. Audio decoder 1100 comprises an arithmetic decoder 1120 that is configured to provide various values decoded spectral values 822 based on an arithmetically encoded representation 821 of the spectral values. The audio decoder 1100 also comprises a frequency domain to time domain converter 830 that is configured to receive the decoded spectral values 822 and to provide the time domain audio representation 812, which may constitute the decoded audio information. using the decoded spectral values 822, to obtain decoded audio information 812.

[000169] O decodificador aritmético 1120 compreende um determinador do valor espectral 824, que é configurado para mapear um valor de código da representação aritmeticamente codificada 821 dos valores espectrais em um código de símbolo representando um ou mais dos valores espectrais decodificados, ou pelo menos uma parte (por exemplo, um plano de bits mais significativo) de um ou mais dos valores espectrais decodificados. O determinador do valor espectral 824 pode ser configurado para realizar o mapeamento dependendo de uma regra de mapeamento, que pode ser descrito por uma informação da regra de mapeamento 828a. A informação da regra de mapeamento 828a pode, por exemplo, compreender um valor do índice da regra de mapeamento, ou pode compreender um conjunto de entradas selecionado de uma tabela de frequências cumulativas.[000169] The arithmetic decoder 1120 comprises a spectral value determiner 824, which is configured to map a code value of the arithmetically encoded representation 821 of the spectral values into a symbol code representing one or more of the decoded spectral values, or at least one part (e.g., a most significant bit plane) of one or more of the decoded spectral values. The spectral value determiner 824 may be configured to perform mapping depending on a mapping rule, which may be described by information from the mapping rule 828a. The mapping rule information 828a may, for example, comprise an index value of the mapping rule, or may comprise a set of entries selected from a cumulative frequency table.

[000170] O decodificador aritmético 1120 é configurado para selecionar uma regra de mapeamento (por exemplo, uma tabela de frequências cumulativas) que descreve um mapeamento de um valor de código (descrito pela representação aritmeticamente codificada 821 dos valores espectrais) em um código de símbolo (que descreve um ou mais valores espectrais) dependendo de um estado de contexto, cujo estado de contexto pode ser descrito pela informação do estado de contexto 1126a. A informação do estado de contexto 1126a pode ter a forma de um valor de contexto corrente numérico. O decodificador aritmético 1120 é configurado para determinar o estado de contexto corrente dependendo dos diversos valores espectrais previamente decodificados 822. Para esta finalidade, um rastreador de estado 1126 pode ser utilizado, que recebe uma informação que descreve os valores espectrais previamente decodificados. O decodificador aritmético é configurado para modificar uma representação numérica do valor de contexto prévio numérico, que descreve um estado de contexto associado com um ou mais valores espectrais previamente decodificados, dependendo de um valor da sub-região de contexto, para obter uma representação numérica de um valor de contexto corrente numérico que descreve um estado de contexto associado com um ou mais valores espectrais a ser decodificado. Uma modificação da representação numérica do valor de contexto prévio numérico pode, por exemplo, ser realizada por um modificador da representação numérica 1127, que faz parte do rastreador de estado 1126. Certamente, a informação do estado de contexto corrente 1126a é obtida, por exemplo, na forma de um valor de contexto corrente numérico. A seleção da regra de mapeamento pode ser realizada por um selecionador da regra de mapeamento 1128, que deriva uma informação da regra de mapeamento 828a da informação do estado de contexto corrente 1126a, e que provê a informação da regra de mapeamento 828a ao determinador do valor espectral 824. Preferivelmente, o selecionador da regra de mapeamento 1128 pode ser configurado para utilizar uma tabela hash “ari_hash_m[742]”, conforme definido na representação em tabela das figuras 22(1) a 22(4), para a seleção da regra de mapeamento. Por exemplo, o selecionador da regra de mapeamento pode realizar a funcionalidade conforme descrito acima com referência às figuras 7 e 8.[000170] The arithmetic decoder 1120 is configured to select a mapping rule (e.g., a cumulative frequency table) that describes a mapping of a code value (described by the arithmetically encoded representation 821 of the spectral values) into a symbol code (describing one or more spectral values) depending on a context state, which context state may be described by context state information 1126a. The context state information 1126a may be in the form of a numeric current context value. The arithmetic decoder 1120 is configured to determine the current context state depending on the various previously decoded spectral values 822. For this purpose, a state tracker 1126 can be used, which receives information describing the previously decoded spectral values. The arithmetic decoder is configured to modify a numeric representation of the numeric prior context value, which describes a context state associated with one or more previously decoded spectral values, depending on a value of the context subregion, to obtain a numeric representation of a numeric current context value that describes a context state associated with one or more spectral values to be decoded. A modification of the numeric representation of the numeric previous context value can, for example, be performed by a modifier of the numeric representation 1127, which is part of the state tracker 1126. Of course, the current context state information 1126a is obtained, e.g. , in the form of a numeric current context value. Mapping rule selection may be performed by a mapping rule selector 1128, which derives mapping rule information 828a from the current context state information 1126a, and which provides mapping rule information 828a to the value determiner. spectral 824. Preferably, the mapping rule selector 1128 can be configured to use a hash table “ari_hash_m[742]”, as defined in the table representation of figures 22(1) to 22(4), for rule selection mapping. For example, the mapping rule selector may perform functionality as described above with reference to Figures 7 and 8.

[000171] Referente à funcionalidade do decodificador de sinal de áudio 1100, deve ser observado que o decodificador aritmético 1120 é configurado para selecionar uma regra de mapeamento (por exemplo, a tabela de frequências cumulativas) que é, em média, bem adaptada ao valor espectral a ser decodificado, conforme a regra de mapeamento é selecionada dependendo do estado de contexto corrente, que, por sua vez, é determinada dependendo de diversos valores espectrais previamente decodificados. Assim, as dependências estatísticas entre os valores espectrais adjacentes a ser decodificados podem ser explicadas.[000171] Regarding the functionality of the audio signal decoder 1100, it should be noted that the arithmetic decoder 1120 is configured to select a mapping rule (e.g., the cumulative frequency table) that is, on average, well adapted to the value spectral value to be decoded, as the mapping rule is selected depending on the current context state, which, in turn, is determined depending on several previously decoded spectral values. Thus, statistical dependencies between adjacent spectral values to be decoded can be explained.

[000172] Além disso, modificando uma representação numérica de um valor de contexto prévio numérico que descreve um estado de contexto associado a uma decodificação de um ou mais valores espectrais previamente decodificados, dependendo de um valor da sub-região de contexto, para obter uma representação numérica de um valor de contexto corrente numérico que descreve um estado de contexto associado a uma decodificação de um ou mais valores espectrais a ser decodificados, é possível obter uma informação significativa sobre o estado de contexto corrente, que é bem adequado para um mapeamento de um valor do índice da regra de mapeamento, e que é particularmente bem adequado para uso em combinação com a tabela hash ari_hash_m conforme definido na representação em tabela das figuras 22(1),22(2),22(3),22(4), com esforço computacional comparavelmente pequeno. Mantendo pelo menos uma parte de uma representação numérica do valor de contexto prévio numérico (possivelmente em um mudado por bit ou uma versão escalada) enquanto atualiza outra parte da representação numérica do valor de contexto prévio numérico dependendo dos valores da sub-região de contexto que não foram considerados no valor de contexto prévio numérico, mas que deve ser considerados no valor de contexto corrente numérico, um número de operações para derivar o valor de contexto corrente numérico pode ser mantido razoavelmente pequeno. Ainda, é possível explorar o fato de que os contextos utilizados para decodificar os valores espectrais adjacentes são tipicamente semelhantes ou correlacionados. Por exemplo, um contexto para uma decodificação de um primeiro valor espectral (ou de uma primeira pluralidade de valores espectrais) é dependente de um primeiro conjunto de valores espectrais previamente decodificados. Um contexto de decodificação de um segundo valor espectral (ou um segundo conjunto de valores espectrais), que é adjacente ao primeiro valor espectral (ou o primeiro conjunto de valores espectrais) pode compreender um segundo conjunto de valores espectrais previamente decodificados. Como o primeiro valor espectral e o segundo valor espectral são assumidos como adjacentes (por exemplo, com relação às frequências associadas), o primeiro conjunto de valores espectrais, que determina o contexto para a codificação do primeiro valor espectral, pode compreender certa sobreposição com o segundo conjunto de valores espectrais, que determina o contexto para a decodificação do segundo valor espectral. Assim, pode ser facilmente entendido que o estado de contexto para a decodificação do segundo valor espectral compreenda certa correlação com o estado de contexto para a decodificação do primeiro valor espectral. Uma eficiência computacional da derivação de contexto, ou seja, da derivação do valor de contexto corrente numérico, pode ser obtido explorando tais correlações. Foi observado que a correlação entre os estados de contexto para uma decodificação de valores espectrais adjacentes (por exemplo, entre o estado de contexto descrito pelo valor de contexto prévio numérico e pelo estado de contexto descrito pelo valor de contexto corrente numérico) pode ser explorada eficientemente modificando somente estas partes do valor de contexto prévio numérico que são dependentes dos valores da sub-região de contexto não considerados para a derivação do estado de contexto numérico anterior, e derivando o valor de contexto corrente numérico do valor de contexto prévio numérico.[000172] Furthermore, modifying a numerical representation of a numerical prior context value that describes a context state associated with a decoding of one or more previously decoded spectral values, depending on a value of the context subregion, to obtain a numerical representation of a numerical current context value that describes a context state associated with a decoding of one or more spectral values to be decoded, it is possible to obtain meaningful information about the current context state, which is well suited for a mapping of an index value of the mapping rule, and which is particularly well suited for use in combination with the hash table ari_hash_m as defined in the tabular representation of figures 22(1),22(2),22(3),22(4 ), with comparably small computational effort. Maintaining at least one part of a numeric representation of the numeric prior context value (possibly in a bit-shifted or scaled version) while updating another portion of the numeric representation of the numeric prior context value depending on the values of the context subregion that have not been considered in the numeric previous context value, but must be considered in the numeric current context value, the number of operations to derive the numeric current context value can be kept reasonably small. Furthermore, it is possible to exploit the fact that the contexts used to decode adjacent spectral values are typically similar or correlated. For example, a context for a decoding of a first spectral value (or a first plurality of spectral values) is dependent on a first set of previously decoded spectral values. A context for decoding a second spectral value (or a second set of spectral values) that is adjacent to the first spectral value (or the first set of spectral values) may comprise a second set of previously decoded spectral values. Since the first spectral value and the second spectral value are assumed to be adjacent (e.g., with respect to associated frequencies), the first set of spectral values, which determine the context for encoding the first spectral value, may comprise some overlap with the second set of spectral values, which determines the context for decoding the second spectral value. Thus, it can be easily understood that the context state for decoding the second spectral value comprises certain correlation with the context state for decoding the first spectral value. A computational efficiency of context derivation, i.e., of deriving the current numeric context value, can be obtained by exploiting such correlations. It was observed that the correlation between context states for a decoding of adjacent spectral values (e.g., between the context state described by the numerical previous context value and the context state described by the numerical current context value) can be efficiently exploited. modifying only those parts of the numeric prior context value that are dependent on the context subregion values not considered for deriving the prior numeric context state, and deriving the current numeric context value from the numeric prior context value.

[000173] Para concluir, os conceitos descritos aqui permitem uma eficiência computacional particularmente boa ao derivar o valor de contexto corrente numérico.[000173] To conclude, the concepts described here allow particularly good computational efficiency when deriving the current numeric context value.

[000174] Outros detalhes serão descritos abaixo.[000174] Other details will be described below.

[000175] Codificador de áudio de acordo com a figura 12[000175] Audio encoder according to figure 12

[000176] A figura 12 mostra um diagrama em blocos esquemático de um codificador de áudio, de acordo com uma realização da invenção. O codificador de áudio 1200 de acordo com a figura 12 é semelhante ao codificador de áudio 700 de acordo com a figura 7, de modo que meios, sinais e funcionalidades idênticos sejam designados com numerais de referência idênticos.[000176] Figure 12 shows a schematic block diagram of an audio encoder, according to an embodiment of the invention. The audio coder 1200 according to Figure 12 is similar to the audio coder 700 according to Figure 7, such that identical means, signals and functionalities are designated with identical reference numerals.

[000177] O codificador de áudio 1200 é configurado para receber uma informação de áudio de entrada 710 e para prover, com base neste, uma informação de áudio codificada 712. O codificador de áudio 1200 compreende um conversor de domínio de tempo em domínio de frequência com compactação de energia 720 que é configurado para prover uma representação de áudio de domínio de frequência 722 com base em uma representação de áudio de domínio de tempo da informação de áudio de entrada 710, de modo que a representação de áudio de domínio de frequência 722 compreenda um conjunto de valores espectrais. O codificador de áudio 1200 também compreende um codificador aritmético 1230 configurado para codificar um valor espectral (fora do conjunto dos valores espectrais que forma a representação de áudio de domínio de frequência 722), ou diversos valores espectrais, ou uma versão pré-processada desta, utilizando uma senha de comprimento variável para obter a informação de áudio codificada 712 (que pode compreender, por exemplo, diversas senhas de comprimento variável.[000177] The audio coder 1200 is configured to receive an input audio information 710 and to provide, based thereon, a coded audio information 712. The audio coder 1200 comprises a time domain to frequency domain converter with power compression 720 that is configured to provide a frequency domain audio representation 722 based on a time domain audio representation of the input audio information 710, such that the frequency domain audio representation 722 understand a set of spectral values. The audio encoder 1200 also comprises an arithmetic encoder 1230 configured to encode a spectral value (outside the set of spectral values that form the frequency domain audio representation 722), or several spectral values, or a preprocessed version thereof. using a variable length password to obtain the encoded audio information 712 (which may comprise, for example, several variable length passwords.

[000178] O codificador aritmético 1230 é configurado para mapear um valor espectral, ou diversos valores espectrais, ou um valor de um plano de bits mais significativo de um valor espectral ou de diversos valores espectrais, em um valor de código (ou seja, em uma senha de comprimento variável), dependendo de um estado de contexto. O codificador aritmético 1230 é configurado para selecionar uma regra de mapeamento que descreve um mapeamento de um valor espectral, ou de diversos valores espectrais, ou de um plano de bits mais significativo de um valor espectral ou de diversos valores espectrais, em um valor de código, dependendo em um estado de contexto. O codificador aritmético é configurado para determinar o estado de contexto corrente dependendo dos diversos valores espectrais previamente codificados (preferivelmente, mas não necessariamente, adjacentes). Para esta finalidade, o codificador aritmético é configurado para obter diversos valores da sub-região de contexto com base nos valores espectrais previamente codificados, para armazenar os ditos valores da sub- região de contexto, e para derivar um valor de contexto corrente numérico associado a um ou mais valores espectrais a ser codificados dependendo dos valores de sub-região de contexto armazenados. Além disso, o codificador aritmético é configurado para calcular a norma de um vetor formado por diversos valores espectrais previamente codificados, para obter um valor comum da sub-região de contexto associado aos diversos valores espectrais previamente codificados.[000178] The arithmetic encoder 1230 is configured to map a spectral value, or multiple spectral values, or a value from a most significant bit plane of a spectral value or multiple spectral values, into a code value (i.e., into a password of variable length), depending on a context state. The arithmetic encoder 1230 is configured to select a mapping rule that describes a mapping of a spectral value, or multiple spectral values, or a most significant bit plane of a spectral value or multiple spectral values, into a code value , depending on a context state. The arithmetic encoder is configured to determine the current context state depending on several previously encoded spectral values (preferably, but not necessarily, adjacent). For this purpose, the arithmetic encoder is configured to obtain various context subregion values based on previously encoded spectral values, to store said context subregion values, and to derive a current numeric context value associated with one or more spectral values to be encoded depending on the stored context subregion values. Furthermore, the arithmetic encoder is configured to calculate the norm of a vector formed by several previously encoded spectral values, to obtain a common value of the context subregion associated with the several previously encoded spectral values.

[000179] Como pode ser visto, o mapeamento de um valor espectral, ou de diversos valores espectrais, ou de um plano de bits mais significativo de um valor espectral ou de diversos valores espectrais, em um valor de código pode ser realizado por uma codificação do valor espectral 740 utilizando uma regra de mapeamento descrita por uma informação da regra de mapeamento 742. Um rastreador de estado 1250 pode ser configurado para rastrear o estado de contexto e pode compreender um computador do valor da sub-região de contexto 1252, para calcular a norma de um vetor formado por diversos valores espectrais previamente codificados, para obter um valor comum da sub-região de contexto associado aos diversos valores espectrais previamente codificados. O rastreador de estado 1250 também é preferivelmente configurado para determinar o estado de contexto corrente dependendo de um resultado do dito cálculo de um valor da sub-região de contexto realizado pelo computador do valor da sub-região de contexto 1252. Certamente, o rastreador de estado 1250 provê uma informação 1254, que descreve o estado de contexto corrente. Um selecionador da regra de mapeamento 1260 pode selecionar uma regra de mapeamento, por exemplo, uma tabela de frequências cumulativas, que descreve um mapeamento de um valor espectral, ou de um plano de bits mais significativo de um valor espectral, em um valor de código. Certamente, o selecionador da regra de mapeamento 1260 provê a informação da regra de mapeamento 742 à codificação espectral 740. Preferivelmente, o selecionador da regra de mapeamento 1260 pode ser configurado para utilizar uma tabela hash “ari_hash_m[742]”, conforme definido na representação em tabela das figuras 22(1) a 22(4), para a seleção da regra de mapeamento. Por exemplo, o selecionador da regra de mapeamento pode realizar a funcionalidade conforme descrito acima com referência às figuras 7 e 8.[000179] As can be seen, the mapping of a spectral value, or several spectral values, or a more significant bit plane of a spectral value or several spectral values, into a code value can be accomplished by an encoding of the spectral value 740 using a mapping rule described by a mapping rule information 742. A state tracker 1250 may be configured to track the context state, and may understand a computer from the value of the context subregion 1252, to calculate the norm of a vector formed by several previously encoded spectral values, to obtain a common value of the context subregion associated with the several previously encoded spectral values. The state tracker 1250 is also preferably configured to determine the current context state depending on a result of said computation of a context subregion value performed by the computer of the context subregion value 1252. Of course, the state tracker 1250 state 1250 provides information 1254, which describes the current context state. A mapping rule selector 1260 may select a mapping rule, e.g., a cumulative frequency table, that describes a mapping of a spectral value, or a most significant bit plane of a spectral value, into a code value. . Of course, the mapping rule selector 1260 provides the mapping rule information 742 to the spectral encoding 740. Preferably, the mapping rule selector 1260 may be configured to use a hash table “ari_hash_m[742]” as defined in the representation in the table in figures 22(1) to 22(4), for selecting the mapping rule. For example, the mapping rule selector may perform functionality as described above with reference to Figures 7 and 8.

[000180] Para resumir o mencionado acima, o codificador de áudio 1200 realiza uma codificação aritmética de uma representação de áudio de domínio de frequência provida pelo conversor de domínio de tempo em domínio de frequência 720. A codificação aritmética é dependente do contexto, de modo que uma regra de mapeamento (por exemplo, uma tabela de frequências cumulativas) seja selecionada dependendo dos valores espectrais previamente codificados. Certamente, os valores espectrais adjacentes em tempo e/ou frequência (ou, pelo menos, dentro de um ambiente predeterminado) um ao outro e/ou ao valor espectral atualmente codificado (ou seja, valores espectrais dentro de um ambiente predeterminado do valor espectral atualmente codificado) são considerados na codificação aritmética para ajustar a distribuição de probabilidade avaliada pela codificação aritmética.[000180] To summarize the above, the audio encoder 1200 performs an arithmetic encoding of a frequency domain audio representation provided by the time domain to frequency domain converter 720. The arithmetic encoding is context dependent, so that a mapping rule (e.g., a cumulative frequency table) is selected depending on the previously encoded spectral values. Of course, spectral values adjacent in time and/or frequency (or, at least, within a predetermined environment) to each other and/or to the currently encoded spectral value (i.e., spectral values within a predetermined environment of the currently encoded spectral value encoded) are considered in arithmetic coding to adjust the probability distribution evaluated by arithmetic coding.

[000181] A fim de prover um valor de contexto corrente numérico, um valor da sub-região de contexto associado aos diversos valores espectrais previamente codificados é obtido com base em um cálculo de uma norma de um vetor formado pelos diversos valores espectrais previamente codificados. O resultado da determinação do valor de contexto corrente numérico é aplicado na seleção do estado de contexto corrente, ou seja, na seleção de uma regra de mapeamento.[000181] In order to provide a numerical current context value, a value of the context subregion associated with the various previously encoded spectral values is obtained based on a calculation of a norm of a vector formed by the various previously encoded spectral values. The result of determining the numerical current context value is applied to the selection of the current context state, that is, to the selection of a mapping rule.

[000182] Calculando a norma de um vetor formado por diversos valores espectrais previamente codificados, uma informação significativa que descreve uma parte do contexto de um ou mais valores espectrais a serem codificados pode ser obtida, em que a norma de um vetor de valores espectrais previamente codificados pode tipicamente ser representada com um número comparavelmente pequeno de bits. Assim, a quantidade da informação de contexto, que precisa ser armazenada para uso futuro na derivação de um valor de contexto corrente numérico, pode ser mantida suficientemente pequena aplicando a abordagem discutida acima para o cálculo dos valores da sub-região de contexto. Foi observado que a norma de um vetor dos valores espectrais previamente codificados tipicamente compreende a informação mais significativa referente ao estado do contexto. Em contraste, foi observado que o sinal dos ditos valores espectrais previamente codificados tipicamente compreende um impacto subordinado no estrado do contexto, de modo que faz sentido negar o sinal dos valores espectrais previamente decodificados a fim de reduzir a quantidade de informação a ser armazenada para uso futuro. Ainda, foi observado que o cálculo de uma norma de um vetor de valores espectrais previamente codificados é uma abordagem razoável para a derivação de um valor da sub-região de contexto, como o efeito médio, que é tipicamente obtido pelo cálculo da norma, deixa a informação mais importante sobre o estado de contexto substancialmente não afetado. Para resumir, o valor da sub-região de contexto cálculo realizado pelo computador do valor da sub- região de contexto 1252 permite prover uma informação da sub- região de contexto compacto para armazenamento e reuso futuro, em que a informação mais relevante sobre o estado de contexto é preservada em vez da redução da quantidade de informação.[000182] By calculating the norm of a vector formed by several previously encoded spectral values, meaningful information describing a part of the context of one or more spectral values to be encoded can be obtained, wherein the norm of a vector of previously encoded spectral values encoded can typically be represented with a comparably small number of bits. Thus, the amount of context information, which needs to be stored for future use in deriving a current numeric context value, can be kept sufficiently small by applying the approach discussed above for calculating context subregion values. It was observed that the norm of a vector of previously encoded spectral values typically comprises the most significant information regarding the state of the context. In contrast, it has been observed that the signal of said previously encoded spectral values typically comprises a subordinate impact on the context frame, so that it makes sense to negate the signal of the previously decoded spectral values in order to reduce the amount of information to be stored for use. future. Furthermore, it was observed that calculating a norm from a vector of previously encoded spectral values is a reasonable approach for deriving a context subregion value, as the average effect, which is typically obtained by calculating the norm, leaves the most important information about the substantially unaffected context state. To summarize, the value of the context subregion computer's calculation of the value of the context subregion 1252 allows it to provide compact context subregion information for storage and future reuse, in which the most relevant information about the state of context is preserved rather than reducing the amount of information.

[000183] Além disso, foi observado que um valor de contexto corrente numérico obtido conforme discutido acima é muito bem adequado para uma seleção de uma regra de mapeamento utilizando a tabela hash “ari_hash_m[742]”, conforme definido na representação em tabela das figuras 22(1) a 22(4). Por exemplo, o selecionador da regra de mapeamento pode realizar a funcionalidade conforme descrito acima com referência às figuras 7 e 8[000183] Furthermore, it was observed that a numerical current context value obtained as discussed above is very well suited for a selection of a mapping rule using the hash table “ari_hash_m[742]”, as defined in the table representation of the figures. 22(1) to 22(4). For example, the mapping rule selector may perform functionality as described above with reference to Figures 7 and 8

[000184] Certamente, uma codificação eficiente da informação de áudio de entrada 710 pode ser obtida, enquanto mantém o esforço computacional e a quantidade de dados a ser armazenada pelo codificador aritmético 1230 suficientemente pequena.[000184] Certainly, efficient encoding of the input audio information 710 can be obtained, while keeping the computational effort and the amount of data to be stored by the arithmetic encoder 1230 sufficiently small.

[000185] Decodificador de áudio de acordo com a figura 13[000185] Audio decoder according to figure 13

[000186] A figura 13 mostra um diagrama em blocos esquemático de um decodificador de áudio 1300. Como o decodificador de áudio 1300 é semelhante ao decodificador de áudio 800 de acordo com a figura 8, e ao decodificador de áudio 1100 de acordo com a figura 11, meios, sinais e funcionalidades idênticos são designados com números idênticos.[000186] Figure 13 shows a schematic block diagram of an audio decoder 1300. How the audio decoder 1300 is similar to the audio decoder 800 according to Figure 8, and the audio decoder 1100 according to Figure 11, identical means, signs and functionalities are designated with identical numbers.

[000187] O decodificador de áudio 1300 é configurado para receber uma informação de áudio codificada 810 e para prover, com base neste, uma informação de áudio decodificada 812. O decodificador de áudio 1300 compreende um decodificador aritmético 1320 que é configurado para prover diversos valores espectrais decodificados 822 com base em uma representação aritmeticamente codificada 821 dos valores espectrais. O decodificador de áudio 1300 também compreende um conversor de domínio de frequência em domínio de tempo 830 que é configurado para receber os valores espectrais decodificados 822 e para prover a representação de áudio de domínio de tempo 812, que pode constituir a informação de áudio decodificada, utilizando os valores espectrais decodificados 822, para obter uma informação de áudio decodificada 812.[000187] Audio decoder 1300 is configured to receive encoded audio information 810 and to provide, based thereon, decoded audio information 812. Audio decoder 1300 comprises an arithmetic decoder 1320 that is configured to provide various values decoded spectral values 822 based on an arithmetically encoded representation 821 of the spectral values. The audio decoder 1300 also comprises a frequency domain to time domain converter 830 that is configured to receive the decoded spectral values 822 and to provide the time domain audio representation 812, which may constitute the decoded audio information. using the decoded spectral values 822, to obtain decoded audio information 812.

[000188] O decodificador aritmético 1320 compreende um determinador do valor espectral 824 que é configurado para mapear um valor de código da representação aritmeticamente codificada 821 dos valores espectrais em um código de símbolo representando um ou mais dos valores espectrais decodificados, ou pelo menos uma parte (por exemplo, um plano de bits mais significativo) de um ou mais dos valores espectrais decodificados. O determinador do valor espectral 824 pode ser configurado para realizar um mapeamento dependendo de uma regra de mapeamento, que é descrita por uma informação da regra de mapeamento 828a. A informação da regra de mapeamento 828a pode, por exemplo, compreender um valor do índice da regra de mapeamento, ou um conjunto selecionado de entradas da tabela de frequências cumulativas.[000188] The arithmetic decoder 1320 comprises a spectral value determiner 824 that is configured to map a code value of the arithmetically encoded representation 821 of the spectral values into a symbol code representing one or more of the decoded spectral values, or at least a portion (e.g., a most significant bit plane) of one or more of the decoded spectral values. The spectral value determiner 824 may be configured to perform a mapping depending on a mapping rule, which is described by an information of the mapping rule 828a. The mapping rule information 828a may, for example, comprise a mapping rule index value, or a selected set of cumulative frequency table entries.

[000189] O decodificador aritmético 1320 é configurado para selecionar uma regra de mapeamento (por exemplo, a tabela de frequências cumulativas) que descreve um mapeamento de um valor de código (descrito pela representação aritmeticamente codificada 821 dos valores espectrais) em um código de símbolo (que descreve um ou mais valores espectrais) dependendo de um estado de contexto (que pode ser descrito pela informação do estado de contexto 1326a). Preferivelmente, o decodificador aritmético 1320 pode ser configurado para utilizar uma tabela hash “ari_hash_m[742]”, conforme definido na representação em tabela das figuras 22(1) a 22(4), para a seleção da regra de mapeamento. Por exemplo, o decodificador aritmético 1320 pode realizar a funcionalidade conforme descrito acima com referência às figuras 7 e 8. O decodificador aritmético 1320 é configurado para determinar o estado de contexto corrente dependendo dos diversos valores espectrais previamente decodificados 822. Para esta finalidade, um rastreador de estado 1326 pode ser utilizado, que recebe uma informação que descreve os valores espectrais previamente decodificados. O decodificador aritmético também é configurado para obter diversos valores da sub-região de contexto com base nos valores espectrais previamente decodificados e para armazenar os ditos valores da sub-região de contexto. O decodificador aritmético é configurado para derivar um valor de contexto corrente numérico associado com um ou mais valores espectrais a ser codificado dependendo nos valores armazenados da sub-região de contexto. O decodificador aritmético 1320 é configurado para calcular a norma de um vetor formado pelos diversos valores espectrais previamente decodificados, para obter um valor comum da sub-região de contexto associado com diversos valores espectrais previamente decodificados.[000189] The arithmetic decoder 1320 is configured to select a mapping rule (e.g., the cumulative frequency table) that describes a mapping of a code value (described by the arithmetically encoded representation 821 of the spectral values) into a symbol code (which describes one or more spectral values) depending on a context state (which may be described by context state information 1326a). Preferably, the arithmetic decoder 1320 may be configured to use a hash table “ari_hash_m[742]”, as defined in the table representation of figures 22(1) to 22(4), for mapping rule selection. For example, the arithmetic decoder 1320 may perform functionality as described above with reference to FIGS. 7 and 8. The arithmetic decoder 1320 is configured to determine the current context state depending on the various previously decoded spectral values 822. For this purpose, a tracker state code 1326 can be used, which receives information describing the previously decoded spectral values. The arithmetic decoder is also configured to obtain various context subregion values based on previously decoded spectral values and to store said context subregion values. The arithmetic decoder is configured to derive a numeric current context value associated with one or more spectral values to be encoded depending on the stored values of the context subregion. The arithmetic decoder 1320 is configured to calculate the norm of a vector formed by the plurality of previously decoded spectral values, to obtain a common value of the context subregion associated with the plurality of previously decoded spectral values.

[000190] O cálculo da norma de um vetor formado pelos diversos valores espectrais previamente codificados, para obter um valor comum da sub-região de contexto associado aos diversos valores espectrais previamente decodificados, pode, por exemplo, ser realizado pelo computador do valor da sub-região de contexto 1327, que faz parte do rastreador de estado 1326. Certamente, uma informação do estado de contexto corrente 1326a é obtida com base nos valores da sub-região de contexto, em que o rastreador de estado 1326 preferivelmente provê um valor de contexto corrente numérico associado a um ou mais valores espectrais a ser decodificado dependendo dos valores armazenados da sub-região de contexto. A seleção das regras de mapeamento pode ser realizada por um selecionador da regra de mapeamento 1328, que deriva uma informação da regra de mapeamento 828a da informação do estado de contexto corrente 1326a, e que provê a informação da regra de mapeamento 828a ao determinador do valor espectral 824.[000190] The calculation of the norm of a vector formed by the various previously encoded spectral values, to obtain a common value of the context sub-region associated with the various previously decoded spectral values, can, for example, be carried out by the sub-region value computer. -context region 1327, which is part of the state tracker 1326. Of course, current context state information 1326a is obtained based on the values of the context subregion, where the state tracker 1326 preferably provides a value of numeric current context associated with one or more spectral values to be decoded depending on the stored values of the context subregion. The selection of mapping rules may be performed by a mapping rule selector 1328, which derives mapping rule information 828a from the current context state information 1326a, and which provides mapping rule information 828a to the value determiner. spectral 824.

[000191] Referente à funcionalidade do decodificador de sinal de áudio 1300, deve ser observado que o decodificador aritmético 1320 é configurado para selecionar uma regra de mapeamento (por exemplo, a tabela de frequências cumulativas) que é, em média, bem adaptada ao valor espectral a ser decodificado, conforme a regra de mapeamento é selecionada dependendo do estado de contexto corrente, que, por sua vez, é determinada dependendo de diversos valores espectrais previamente decodificados. Assim, as dependências estatísticas entre os valores espectrais adjacentes a ser decodificados podem ser exploradas.[000191] Regarding the functionality of the audio signal decoder 1300, it should be noted that the arithmetic decoder 1320 is configured to select a mapping rule (e.g., the cumulative frequency table) that is, on average, well adapted to the value spectral value to be decoded, as the mapping rule is selected depending on the current context state, which, in turn, is determined depending on several previously decoded spectral values. Thus, statistical dependencies between adjacent spectral values to be decoded can be explored.

[000192] Entretanto, foi observado que é eficiente, em termos de uso da memória, armazenar valores da sub-região de contexto, que têm como base o cálculo de uma norma de um vetor formado em diversos valores espectrais previamente decodificados, para uso futuro na determinação do valor de contexto numérico. Também foi observado que tais valores da sub-região de contexto ainda compreendem a informação de contexto mais relevante. Assim, o conceito utilizado pelo rastreador de estado 1326 constitui um bom compromisso entre a eficiência da codificação, a eficiência computacional e a eficiência de armazenamento.[000192] However, it was observed that it is efficient, in terms of memory usage, to store values of the context sub-region, which are based on the calculation of a norm of a vector formed in several previously decoded spectral values, for future use in determining the numeric context value. It was also observed that such context subregion values still comprise the most relevant context information. Thus, the concept used by state tracker 1326 constitutes a good compromise between coding efficiency, computational efficiency, and storage efficiency.

[000193] Outros detalhes serão descritos abaixo.[000193] Other details will be described below.

[000194] Codificador de áudio de acordo com a figura 1[000194] Audio encoder according to figure 1

[000195] A seguir, um codificador de áudio de acordo com uma realização da presente invenção será descrito. A figura 1 mostra um diagrama em blocos esquemático de tal codificador de áudio 100.[000195] Next, an audio coder according to an embodiment of the present invention will be described. Figure 1 shows a schematic block diagram of such an audio encoder 100.

[000196] O codificador de áudio 100 é configurado para receber uma informação de áudio de entrada 110 e para prover, com base neste, um fluxo de bits 112, que constitui uma informação de áudio codificada. O codificador de áudio 100 opcionalmente compreende um pré-processador 120, que é configurado para receber a informação de áudio de entrada 110 e para prover, com base neste, uma informação pré-processada de áudio de entrada 110a. O codificador de áudio 100 também compreende um transformador de sinal de domínio de tempo em domínio de frequência com compactação de energia 130, que também é designado como conversor de sinal. O conversor de sinal 130 é configurado para receber a informação de áudio de entrada 110, 110a e para prover, com base neste, uma informação de áudio de domínio de frequência 132, que preferivelmente toma a forma de um conjunto de valores espectrais. Por exemplo, o transformador de sinal 130 pode ser configurado para receber uma estrutura da informação de áudio de entrada 110, 110a (por exemplo, um bloco de amostras de domínio de tempo) e para prover um conjunto de valores espectrais representando o conteúdo de áudio da respectiva estrutura de áudio. Além disso, o transformador de sinal 130 pode ser configurado para receber diversas estruturas de áudio subsequentes, de sobreposição ou não sobreposição da informação de áudio de entrada 110, 110a e para prover, com base neste, uma representação de áudio de domínio de frequência de tempo, que compreende uma sequência de conjuntos subsequentes de valores espectrais, um conjunto de valores espectrais associados a cada estrutura.[000196] The audio coder 100 is configured to receive an input audio information 110 and to provide, based on this, a bit stream 112, which constitutes a coded audio information. The audio encoder 100 optionally comprises a preprocessor 120, which is configured to receive the input audio information 110 and to provide, based thereon, a preprocessed input audio information 110a. The audio encoder 100 also comprises a power-compressed time-domain-to-frequency-domain signal transformer 130, which is also referred to as a signal converter. The signal converter 130 is configured to receive the input audio information 110, 110a and to provide, based thereon, a frequency domain audio information 132, which preferably takes the form of a set of spectral values. For example, signal transformer 130 may be configured to receive a structure of input audio information 110, 110a (e.g., a block of time domain samples) and to provide a set of spectral values representing the audio content. of the respective audio structure. Furthermore, signal transformer 130 may be configured to receive various subsequent overlapping or non-overlapping audio structures of input audio information 110, 110a and to provide, based thereon, a frequency domain audio representation of time, which comprises a sequence of subsequent sets of spectral values, a set of spectral values associated with each structure.

[000197] O transformador de sinal de domínio de tempo em domínio de frequência com compactação de energia 130 pode compreender um banco de filtros com compactação de energia, que provê valores espectrais associados a diferentes faixas de frequência, de sobreposição ou não sobreposição. Por exemplo, o transformador de sinal 130 pode compreender um transformador MDCT de janelamento 130a, que é configurado para colocar em janelas a informação de áudio de entrada 110, 110a (ou a sua estrutura) que utiliza uma janela de transformação e para realizar uma transformação de cosseno discreto modificado da informação de áudio de entrada em janela 110, 110a (ou a sua estrutura em janela). Assim, a representação de áudio de domínio de frequência 132 pode compreender um conjunto de, por exemplo, 1024 valores espectrais na forma de coeficientes MDCT associados a uma estrutura da informação de áudio de entrada.[000197] The energy-compressed time-domain-to-frequency-domain signal transformer 130 may comprise an energy-compressed filter bank, which provides spectral values associated with different frequency bands, overlapping or non-overlapping. For example, signal transformer 130 may comprise a windowing MDCT transformer 130a, which is configured to window input audio information 110, 110a (or structure thereof) using a transform window, and to perform a transformation modified discrete cosine of the windowed input audio information 110, 110a (or their windowed structure). Thus, the frequency domain audio representation 132 may comprise a set of, for example, 1024 spectral values in the form of MDCT coefficients associated with a structure of the input audio information.

[000198] O codificador de áudio 100 pode ainda, opcionalmente, compreender um pós-processador espectral 140, que é configurado para receber a representação de áudio de domínio de frequência 132 e prover, com base neste, uma representação de áudio de domínio de frequência pós-processada 142. O pós- processador espectral 140 pode, por exemplo, ser configurado para realizar uma forma de ruído temporal e/ou uma previsão a longo prazo e/ou qualquer outro pós-processamento espectral conhecido na técnica. O codificador de áudio ainda compreende, opcionalmente, um multiplicador de frequências/quantificador 150, que é configurado para receber a representação de áudio de domínio de frequência 132 ou a sua versão pós-processada 142 e prover uma representação de áudio de domínio de frequência escalada e quantizada 152.[000198] The audio encoder 100 may further optionally comprise a spectral post-processor 140, which is configured to receive the frequency domain audio representation 132 and provide, based thereon, a frequency domain audio representation post-processing 142. The spectral post-processor 140 may, for example, be configured to perform a form of temporal noise and/or a long-term forecast and/or any other spectral post-processing known in the art. The audio encoder further optionally comprises a frequency multiplier/quantifier 150, which is configured to receive the frequency domain audio representation 132 or its post-processed version 142 and provide a scaled frequency domain audio representation. and quantized 152.

[000199] O codificador de áudio 100 ainda compreende, opcionalmente, um processador do modelo psicoacústico 160, que é configurado para receber a informação de áudio de entrada 110 (ou a versão pós-processada 110a deste) e prover, com base neste, uma informação de controle opcional, que pode ser utilizada para o controle do transformador de sinal de domínio de tempo em domínio de frequência com compactação de energia 130, para o controle do pós-processador espectral opcional 140 e/ou para o controle do multiplicador de frequências/quantificador opcional 150. Por exemplo, o processador do modelo psicoacústico 160 pode ser configurado para analisar a informação de áudio de entrada, para determinar quais componentes da informação de áudio de entrada 110, 110a são particularmente importantes para a percepção humana do conteúdo de áudio e quais componentes da informação de áudio de entrada 110, 110a são menos importantes para a percepção do conteúdo de áudio. Assim, o processador do modelo psicoacústico 160 pode prover informação de controle, que é utilizado pelo codificador de áudio 100 a fim de ajustar a escala da representação de áudio de domínio de frequência 132, 142 pelo multiplicador de frequências/quantificador 150 e/ou a resolução de quantização aplicada pelo multiplicador de frequências/quantificador 150. Consequentemente, faixas do fator de escala perceptualmente importantes (ou seja, grupos de valores espectrais adjacentes que são particularmente importantes para a percepção humana do conteúdo de áudio) são escaladas com um grande fator de escala e quantizadas com resolução comparavelmente alta, enquanto faixas do fator de escala perceptualmente menos importantes (ou seja, grupos de valores espectrais adjacentes) são escaladas com um fator de escala comparavelmente menor e quantizadas com uma resolução de quantização comparavelmente menor. Assim, os valores espectrais escalados de frequências perceptualmente mais importantes são tipicamente significantemente maiores que os valores espectrais de frequências perceptualmente menos importantes.[000199] Audio encoder 100 further optionally comprises a psychoacoustic model processor 160, which is configured to receive input audio information 110 (or the post-processed version 110a thereof) and provide, based thereon, a optional control information, which may be used for control of the power-compressed time-domain to frequency-domain signal transformer 130, for control of the optional spectral postprocessor 140, and/or for control of the frequency multiplier /optional quantifier 150. For example, the psychoacoustic model processor 160 may be configured to analyze input audio information to determine which components of the input audio information 110, 110a are particularly important to human perception of audio content and which components of the input audio information 110, 110a are least important for the perception of the audio content. Thus, the psychoacoustic model processor 160 can provide control information, which is used by the audio encoder 100 to adjust the scale of the frequency domain audio representation 132, 142 by the frequency multiplier/quantifier 150 and/or the quantization resolution applied by frequency multiplier/quantifier 150. Consequently, perceptually important scale factor bands (i.e., groups of adjacent spectral values that are particularly important to human perception of audio content) are scaled with a large factor of scaled and quantized with a comparably high resolution, while perceptually less important scale factor bands (i.e., groups of adjacent spectral values) are scaled with a comparably smaller scale factor and quantized with a comparably lower quantization resolution. Thus, the scaled spectral values of perceptually more important frequencies are typically significantly larger than the scaled spectral values of perceptually less important frequencies.

[000200] O codificador de áudio também compreende um codificador aritmético 170, que é configurado para receber a versão escalada e quantizada 152 da representação de áudio de domínio de frequência 132 (ou, de modo alternativo, a versão pós- processada 142 da representação de áudio de domínio de frequência 132, ou mesmo a própria representação de áudio de domínio de frequência 132) e prover informação da senha aritmética 172a com base neste, de modo que a informação da senha aritmética representa a representação de áudio de domínio de frequência 152.[000200] The audio encoder also comprises an arithmetic encoder 170, which is configured to receive the scaled and quantized version 152 of the frequency domain audio representation 132 (or, alternatively, the post-processed version 142 of the frequency domain audio representation 142). frequency domain audio 132, or even the frequency domain audio representation 132 itself) and providing arithmetic password information 172a based on this, so that the arithmetic password information represents the frequency domain audio representation 152.

[000201] O codificador de áudio 100 também compreende um formatador de payload do fluxo de bits 190, que é configurado para receber a informação da senha aritmética 172a. O formatador de payload do fluxo de bits 190 é também tipicamente configurado para receber informação adicional, como, por exemplo, a informação do fator de escala que descreve quais fatores de escala foi aplicada pelo multiplicador de frequências/quantificador 150. Além disso, o formatador de payload do fluxo de bits 190 pode ser configurado para receber outra informação de controle. O formatador de payload do fluxo de bits 190 é configurado para prover o fluxo de bits 112 com base na informação recebida montando o fluxo de bits de acordo com uma sintaxe do fluxo de bits desejada, que será discutida abaixo.[000201] Audio encoder 100 also comprises a bitstream payload formatter 190, which is configured to receive arithmetic password information 172a. The bitstream payload formatter 190 is also typically configured to receive additional information, such as scale factor information that describes which scale factors were applied by the frequency multiplier/quantifier 150. Additionally, the formatter Bitstream payload 190 may be configured to receive other control information. The bitstream payload formatter 190 is configured to provision the bitstream 112 based on the information received by assembling the bitstream according to a desired bitstream syntax, which will be discussed below.

[000202] A seguir, detalhes referentes ao codificador aritmético 170 serão descritos. O codificador aritmético 170 é configurado para receber diversos valores espectrais pós- processados e escalados e quantizados da representação de áudio de domínio de frequência 132. O codificador aritmético compreende um extrator do plano de bits mais significante 174, ou mesmo de dois valores espectrais, que é configurado para extrair um plano de bits mais significativo m de um valor espectral. Deve ser observado aqui que o plano de bits mais significativo pode compreender um ou mais bits (por exemplo, dois ou três bits), que são os bits mais significativos do valor espectral. Assim, o extrator do plano de bits mais significativo 174 provê um valor do plano de bits mais significativo 176 de um valor espectral.[000202] Next, details regarding the arithmetic encoder 170 will be described. The arithmetic encoder 170 is configured to receive various post-processed and scaled and quantized spectral values from the frequency domain audio representation 132. The arithmetic encoder comprises an extractor of the most significant bit plane 174, or even of two spectral values, which is configured to extract a most significant bit plane m from a spectral value. It should be noted here that the most significant bit plane may comprise one or more bits (e.g., two or three bits), which are the most significant bits of the spectral value. Thus, the most significant bit plane extractor 174 provides a most significant bit plane value 176 from a spectral value.

[000203] De modo alternativo, entretanto, o extrator do plano de bits mais significativo 174 pode prover um valor combinado do plano de bits mais significativo m que combina o plano de bits mais significativo de diversos valores espectrais (por exemplo, de valores espectrais a e b). O plano de bits mais significativo do valor espectral a é designado com m. De modo alternativo, o valor combinado do plano de bits mais significativo de diversos valores espectrais a,b é designado com m.[000203] Alternatively, however, the most significant bit plane extractor 174 may provide a combined value of the most significant bit plane m that combines the most significant bit plane of several spectral values (e.g., of spectral values a and b ). The most significant bit plane of the spectral value a is designated with m. Alternatively, the combined value of the most significant bit plane of several spectral values a,b is designated with m.

[000204] O codificador aritmético 170 também compreende um primeiro determinador de senha 180, que é configurado para determinar uma senha aritmética acod_m [pki][m] que representa o valor do plano de bits mais significativo m. Opcionalmente, o determinador de senha 180 pode também prover uma ou mais senhas de escape (também designada aqui como “ARITH_ESCAPE”) indicando, por exemplo, quantos planos de bits menos significativos estão disponíveis (e, consequentemente, indicando o peso numérico do plano de bits mais significativo). O primeiro determinador de senha 180 pode ser configurado para prover a senha associada a um valor do plano de bits mais significativo m que utiliza a tabela de frequências cumulativas selecionada tendo (ou sendo referenciada por) um índice da tabela de frequências cumulativas pki.[000204] The arithmetic encoder 170 also comprises a first password determiner 180, which is configured to determine an arithmetic password acod_m [pki][m] that represents the value of the most significant bit plane m. Optionally, the password determiner 180 may also provide one or more escape passwords (also designated herein as “ARITH_ESCAPE”) indicating, for example, how many least significant bit planes are available (and, consequently, indicating the numerical weight of the bit plane). most significant bits). The first password determiner 180 may be configured to provide the password associated with a value of the most significant bit plane m that uses the selected cumulative frequency table having (or being referenced by) a cumulative frequency table index pki.

[000205] A fim de determinar em qual tabela de frequências cumulativas deve ser selecionado, o codificador aritmético preferivelmente compreende um rastreador de estado 182, que é configurado para rastrear o estado do codificador aritmético, por exemplo, observando quais valores espectrais foram codificados previamente. O rastreador de estado 182 consequentemente provê uma informação de estado 184, por exemplo, um valor de estado designado com “s” ou “t” ou “c”. O codificador aritmético 170 também compreende um selecionador da tabela de frequências cumulativas 186, que é configurado para receber a informação de estado 184 e prover uma informação 188 que descreve a tabela de frequências cumulativas selecionada ao determinador de senha 180. Por exemplo, o selecionador da tabela de frequências cumulativas 186 pode prover um índice da tabela de frequências cumulativas “pki” que descreve qual tabela de frequências cumulativas, fora de um conjunto de 96 tabelas de frequências cumulativas, é selecionado para uso pelo determinador de senha. De modo alternativo, o selecionador da tabela de frequências cumulativas 186 pode prover toda a tabela de frequências cumulativas selecionada ou uma sub-tabela ao determinador de senha. Assim, o determinador de senha 180 pode usar a tabela de frequências cumulativas selecionada ou sub-tabela para a provisão da senha acod_m[pki][m] do valor do plano de bits mais significativo m, de modo que a senha atual acod_m[pki][m] que codifica o valor do plano de bits mais significativo m seja dependente do valor de m e o índice da tabela de frequências cumulativas pki, e consequentemente na informação de estado corrente 184. Outros detalhes referentes ao processo de codificação e o formato de senha obtido serão descritos abaixo.[000205] In order to determine which table of cumulative frequencies should be selected from, the arithmetic encoder preferably comprises a state tracker 182, which is configured to track the state of the arithmetic encoder, for example, observing which spectral values were previously encoded. The status tracker 182 consequently provides status information 184, for example, a status value designated with “s” or “t” or “c”. The arithmetic encoder 170 also comprises a cumulative frequency table selector 186, which is configured to receive state information 184 and provide information 188 that describes the selected cumulative frequency table to the password determiner 180. For example, the arithmetic code selector 180. cumulative frequency table 186 may provide a cumulative frequency table index “pki” that describes which cumulative frequency table, out of a set of 96 cumulative frequency tables, is selected for use by the password determiner. Alternatively, the cumulative frequency table selector 186 may provide the entire selected cumulative frequency table or a sub-table to the password determiner. Thus, the password determiner 180 may use the selected cumulative frequency table or sub-table for provisioning the password acod_m[pki][m] of the most significant bit plane value m, such that the current password acod_m[pki ][m] that encodes the value of the most significant bit plane m is dependent on the value of m and the index of the cumulative frequency table pki, and consequently on the current state information 184. Other details regarding the encoding process and the password format obtained will be described below.

[000206] Deve ser observado, entretanto, que em algumas realizações, o rastreador de estado 182 pode ser idêntico a, ou tomar a funcionalidade, do rastreador de estado 750, do rastreador de estado 1050 ou do rastreador de estado 1250. Também deve ser observado que o selecionador da tabela de frequências cumulativas 186 pode, em algumas realizações, ser idêntico a, ou tomar a funcionalidade, do selecionador da regra de mapeamento 760, do selecionador da regra de mapeamento 1060, ou do selecionador da regra de mapeamento 1260. Além disso, o primeiro determinador de senha 180 pode, em algumas realizações, ser idêntico a, ou tomar a funcionalidade, da codificação do valor espectral 740.[000206] It should be noted, however, that in some embodiments, state tracker 182 may be identical to, or take on the functionality of, state tracker 750, state tracker 1050, or state tracker 1250. It should also be It is noted that the cumulative frequency table selector 186 may, in some embodiments, be identical to, or take on the functionality of, the mapping rule selector 760, the mapping rule selector 1060, or the mapping rule selector 1260. Furthermore, the first password determiner 180 may, in some embodiments, be identical to, or take on the functionality of, the spectral value encoding 740.

[000207] O codificador aritmético 170 ainda compreende um extrator do plano de bits menos significativo 189a, que é configurado para extrair um ou mais planos de bits menos significativos da representação de áudio de domínio de frequência escalada e quantizada 152, se um ou mais dos valores espectrais a ser codificado exceder a faixa de valores que podem ser codificados utilizando o plano de bits mais significativo somente. Os planos de bits menos significativos podem compreender um ou mais bits, conforme desejado. Assim, o extrator do plano de bits menos significativo 189a provê uma informação do plano de bits menos significativo 189b. O codificador aritmético 170 também compreende um segundo determinador de senha 189c, que é configurado para receber a informação do plano de bits menos significativo 189d e prover, com base neste, 0, 1 ou mais senhas “acod_r” que representa o conteúdo de 0, 1 ou mais planos de bits menos significativos. O segundo determinador de senha 189c pode ser configurado para aplicar um algoritmo da codificação aritmética ou qualquer outro algoritmo de codificação a fim de derivar as senhas do plano de bit menos significativo “acod_r” da informação do plano de bits menos significativo 189b.[000207] The arithmetic encoder 170 further comprises a least significant bit plane extractor 189a, which is configured to extract one or more least significant bit planes from the scaled and quantized frequency domain audio representation 152, if one or more of the Spectral values to be encoded exceed the range of values that can be encoded using the most significant bit plane only. The least significant bit planes may comprise one or more bits as desired. Thus, the least significant bit plane extractor 189a provides information from the least significant bit plane 189b. The arithmetic encoder 170 also comprises a second password determiner 189c, which is configured to receive information from the least significant bit plane 189d and provide, based thereon, 0, 1 or more passwords "acod_r" representing the content of 0, 1 or more least significant bit planes. The second password determiner 189c may be configured to apply an arithmetic coding algorithm or any other coding algorithm to derive the least significant bit plane passwords “acod_r” from the least significant bit plane information 189b.

[000208] Deve ser observado aqui que o número de planos de bits menos significativos pode variar dependendo do valor dos valores espectrais escalados e quantizados 152, de modo que possa ter nenhum plano de bits menos significativo, se o valor espectral escalado e quantizado a ser codificado é comparavelmente pequeno, de modo que possa ter um plano de bits menos significativo se o valor espectral corrente escalado e quantizado a ser codificado for de uma faixa média e de modo que possa ter mais que um plano de bits menos significativo se o valor espectral escalado e quantizado a ser codificado tiver um valor comparavelmente grande.[000208] It should be noted here that the number of least significant bit planes may vary depending on the value of the scaled and quantized spectral values 152, so that there may be no less significant bit planes if the scaled and quantized spectral value to be encoded is comparably small, so that it may have a less significant bit plane if the current scaled and quantized spectral value to be encoded is of a medium range, and so that it may have more than one less significant bit plane if the spectral value scaled and quantized to be encoded has a comparably large value.

[000209] Para resumir o mencionado acima, o codificador aritmético 170 é configurado para codificar valores espectrais escalados e quantizados, que são descritos pela informação 152, que utiliza um processo de codificação hierárquico. O plano de bits mais significativo (que compreende, por exemplo, um, dois ou três bits por valor espectral) de um ou mais valores espectrais, é codificado para obter uma senha aritmética “acod_m[pki][m]” de um valor do plano de bits mais significativo m. Um ou mais planos de bits menos significativos (cada um dos planos de bits menos significativos que compreende, por exemplo, um, dois ou três bits) de um ou mais valores espectrais são codificados para obter uma ou mais senhas “acod_r”. Ao codificar o plano de bits mais significativo, o valor m do plano de bits mais significativo é mapeado a uma senha acod_m[pki][m]. Para esta finalidade, 96 diferentes tabelas de frequências cumulativas estão disponíveis para a codificação do valor m dependendo de um estado do codificador aritmético 170, ou seja, dependendo de valores espectrais previamente codificados. Assim, a senha “acod_m[pki][m]” é obtida. Além disso, uma ou mais senhas “acod_r” são providas e incluídas no fluxo de bits se um ou mais planos de bits menos significativos estiverem presentes.[000209] To summarize the above, the arithmetic encoder 170 is configured to encode scaled and quantized spectral values, which are described by information 152, which uses a hierarchical coding process. The most significant bit plane (comprising, for example, one, two or three bits per spectral value) of one or more spectral values, is encoded to obtain an arithmetic password “acod_m[pki][m]” of a value of the most significant bit plane m. One or more least significant bit planes (each of the least significant bit planes comprising, for example, one, two or three bits) of one or more spectral values are encoded to obtain one or more passwords “acod_r”. When encoding the most significant bit plane, the value m of the most significant bit plane is mapped to a password acod_m[pki][m]. For this purpose, 96 different cumulative frequency tables are available for encoding the value m depending on a state of the arithmetic encoder 170, i.e. depending on previously encoded spectral values. Thus, the password “acod_m[pki][m]” is obtained. Additionally, one or more passwords “acod_r” are provided and included in the bitstream if one or more less significant bit planes are present.

[000210] DESCRIÇÃO DE REDEFINIÇÃO[000210] RESET DESCRIPTION

[000211] O codificador de áudio 100 pode opcionalmente ser configurado para decidir se uma melhoria na taxa de bit pode ser obtida redefinindo o contexto, por exemplo, definindo o índice de estado a um valor padrão. Assim, o codificador de áudio 100 pode ser configurado para prover uma informação de reset (por exemplo, chamada “arith_reset_flag”) indicando se o contexto para a codificação aritmética é redefinida, e também indicando se o contexto para a decodificação aritmética em um decodificador correspondente deve ser redefinido.[000211] The audio encoder 100 may optionally be configured to decide whether an improvement in bit rate can be obtained by redefining the context, for example, by setting the state index to a default value. Thus, the audio encoder 100 may be configured to provide reset information (e.g., called “arith_reset_flag”) indicating whether the context for arithmetic encoding is reset, and also indicating whether the context for arithmetic decoding in a corresponding decoder must be reset.

[000212] Detalhes referentes ao formato do fluxo de bits e às tabelas de frequência cumulativa aplicadas serão discutidos abaixo.[000212] Details regarding the bitstream format and applied cumulative frequency tables will be discussed below.

[000213] Decodificador de áudio de acordo com a figura 2[000213] Audio decoder according to figure 2

[000214] A seguir, um decodificador de áudio, de acordo com uma realização da invenção, será descrito. A figura 2 mostra um diagrama em blocos esquemático de tal decodificador de áudio 200.[000214] Next, an audio decoder, according to an embodiment of the invention, will be described. Figure 2 shows a schematic block diagram of such an audio decoder 200.

[000215] O decodificador de áudio 200 é configurado para receber um fluxo de bits 210, que representa uma informação de áudio codificada e que pode ser idêntico ao fluxo de bits 112 provido pelo codificador de áudio 100. O decodificador de áudio 200 provê uma informação de áudio decodificada 212 com base no fluxo de bits 210.[000215] The audio decoder 200 is configured to receive a bit stream 210, which represents encoded audio information and which may be identical to the bit stream 112 provided by the audio encoder 100. The audio decoder 200 provides an information decoded audio stream 212 based on bitstream 210.

[000216] O decodificador de áudio 200 compreende um deformatador de payload do fluxo de bits opcional 220, que é configurado para receber o fluxo de bits 210 e para extrair do fluxo de bits 210 uma representação codificada de áudio de domínio de frequência 222. Por exemplo, o deformatador de payload do fluxo de bits 220 pode ser configurado para extrair do fluxo de bits 210 dados espectrais aritmeticamente decodificados como, por exemplo, uma senha aritmética “acod_m [pki][m]” que representa o valor do plano de bits mais significativo m de um valor espectral a, ou de diversos valores espectrais a, b, e uma senha “acod_r” que representa um conteúdo de um plano de bits menos significativo do valor espectral a, ou de diversos valores espectrais a, b, da representação de áudio de domínio de frequência. Assim, a representação codificada de áudio de domínio de frequência 222 constitui (ou compreende) uma representação aritmeticamente codificada de valores espectrais. O deformatador de payload do fluxo de bits 220 é ainda configurado para extrair da informação adicional de controle do fluxo de bits, que não é mostrado na figura 2. Além disso, o deformatador de payload do fluxo de bits é opcionalmente configurado para extrair do fluxo de bits 210, uma informação de reset do estado 224, que é também designada como sinalizador de redefinição aritmético ou “arith_reset_flag”.[000216] Audio decoder 200 comprises an optional bitstream payload deformator 220, which is configured to receive bitstream 210 and to extract from bitstream 210 a frequency domain audio encoded representation 222. By For example, the payload deformator of bitstream 220 may be configured to extract from bitstream 210 arithmetically decoded spectral data such as an arithmetic password “acod_m [pki][m]” representing the value of the bit plane most significant m of a spectral value a, or of several spectral values a, b, and a password “acod_r” that represents a content of a least significant bit plane of the spectral value a, or of several spectral values a, b, of frequency domain audio representation. Thus, the frequency domain audio coded representation 222 constitutes (or comprises) an arithmetically coded representation of spectral values. The bitstream payload deformator 220 is further configured to extract from the bitstream additional control information, which is not shown in FIG. 2. Additionally, the bitstream payload deformator is optionally configured to extract from the bitstream of bits 210, a state reset information 224, which is also referred to as an arithmetic reset flag or “arith_reset_flag”.

[000217] O decodificador de áudio 200 compreende um decodificador aritmético 230, que também é designado como “decodificador silencioso espectral”. O decodificador aritmético 230 é configurado para receber a representação codificada de áudio de domínio de frequência 220 e, opcionalmente, a informação de reset de estado 224. O decodificador aritmético 230 é também configurado para prover uma representação decodificada de áudio de domínio de frequência 232, que pode compreender uma representação decodificada de valores espectrais. Por exemplo, a representação decodificada de áudio de domínio de frequência 232 pode compreender uma representação decodificada de valores espectrais, que são descritos pela representação codificada de áudio de domínio de frequência 220.[000217] The audio decoder 200 comprises an arithmetic decoder 230, which is also referred to as a “spectral silent decoder”. The arithmetic decoder 230 is configured to receive the encoded representation of frequency domain audio 220 and, optionally, the state reset information 224. The arithmetic decoder 230 is also configured to provide a decoded representation of the frequency domain audio 232. which may comprise a decoded representation of spectral values. For example, the frequency domain audio decoded representation 232 may comprise a decoded representation of spectral values, which are described by the frequency domain audio coded representation 220.

[000218] O decodificador de áudio 200 também compreende um quantificador/remultiplicador de frequências inversas opcionais 240, que é configurado para receber a representação decodificada de áudio de domínio de frequência 232 e prover, com base neste, uma representação de áudio de domínio de frequência inversamente quantizada e redimensionada 242.[000218] The audio decoder 200 also comprises an optional inverse frequency quantifier/remultiplier 240, which is configured to receive the decoded frequency domain audio representation 232 and provide, based thereon, a frequency domain audio representation. inversely quantized and rescaled 242.

[000219] O decodificador de áudio 200 ainda compreende um pré-processador espectral opcional 250, que é configurado para receber a representação de áudio de domínio de frequência inversamente quantizada e redimensionada 242 e prover, com base neste, uma versão pré-processada 252 da representação de áudio de domínio de frequência inversamente quantizada e redimensionada 242. O decodificador de áudio 200 também compreende um transformador de sinal de domínio de frequência em domínio de tempo 260, que é também designado como um “conversor de sinal”. O transformador de sinal 260 é configurado para receber a versão pré-processada 252 da representação de áudio de domínio de frequência inversamente quantizada e redimensionada 242 (ou, de modo alternativo, a representação de áudio de domínio de frequência inversamente quantizada e redimensionada 242 ou a representação decodificada de áudio de domínio de frequência 232) e prover, com base neste, uma representação de domínio de tempo 262 da informação de áudio. O transformador de sinal de domínio de frequência em domínio de tempo 260 pode, por exemplo, compreender um transformador para realizar uma transformação de cosseno discreto modificado inverso (IMDCT) e um janelamento apropriado (bem como outras funcionalidades auxiliares, como, por exemplo, uma sobreposição e adição).[000219] The audio decoder 200 further comprises an optional spectral preprocessor 250, which is configured to receive the inversely quantized and scaled frequency domain audio representation 242 and provide, based thereon, a preprocessed version 252 of the inversely quantized and scaled frequency domain audio representation 242. The audio decoder 200 also comprises a time domain frequency domain signal transformer 260, which is also referred to as a “signal converter”. Signal transformer 260 is configured to receive the preprocessed version 252 of the scaled inversely quantized frequency domain audio representation 242 (or, alternatively, the scaled inversely quantized frequency domain audio representation 242 or the frequency domain audio decoded representation 232) and provide, based thereon, a time domain representation 262 of the audio information. The time-domain frequency-domain signal transformer 260 may, for example, comprise a transformer for performing an inverse modified discrete cosine transform (IMDCT) and appropriate windowing (as well as other auxiliary features, such as, for example, a overlapping and addition).

[000220] O decodificador de áudio 200 pode ainda compreender um pós-processador de domínio de tempo opcional 270, que é configurado para receber a representação de domínio de tempo 262 da informação de áudio e para obter a informação de áudio decodificada 212 que utiliza um pós-processamento de domínio de tempo. Entretanto, se o pós-processamento for omitido, a representação de domínio de tempo 262 pode ser idêntica à informação de áudio decodificada 212.[000220] The audio decoder 200 may further comprise an optional time domain postprocessor 270, which is configured to receive the time domain representation 262 of the audio information and to obtain the decoded audio information 212 using a time domain post-processing. However, if post-processing is omitted, the time domain representation 262 may be identical to the decoded audio information 212.

[000221] Deve ser observado aqui que o quantificador/remultiplicador de frequências inversas 240, o pré- processador espectral 250, o transformador de sinal de domínio de frequência em domínio de tempo 260 e o pós-processador de domínio de tempo 270 podem ser controlados dependendo da informação de controle, que é extraída do fluxo de bits 210 pelo deformatador de payload do fluxo de bits 220.[000221] It should be noted here that the inverse frequency quantifier/remultiplier 240, the spectral preprocessor 250, the time domain frequency domain signal transformer 260 and the time domain postprocessor 270 can be controlled depending on the control information, which is extracted from the bitstream 210 by the bitstream payload deformator 220.

[000222] Para resumir toda a funcionalidade do decodificador de áudio 200, uma representação decodificada de áudio de domínio de frequência 232, por exemplo, um conjunto de valores espectrais associado a uma estrutura de áudio da informação de áudio codificada, pode ser obtido com base na representação codificada de domínio de frequência 222 que utiliza o decodificador aritmético 230. Subsequentemente, o conjunto de, por exemplo, 1024 valores espectrais, que pode ser de coeficientes MDCT, é inversamente quantizado, redimensionado e pré-processado. Assim, um conjunto de valores espectrais pré-processados espectralmente inversamente quantizados e redimensionados (por exemplo, 1024 coeficientes MDCT) é obtido. Posteriormente, uma representação de domínio de tempo de uma estrutura de áudio é derivada do conjunto pré-processado de forma espectral, inversamente quantizado e redimensionado de valores de domínio de frequência (por exemplo, coeficientes MDCT). Assim, uma representação de domínio de tempo de uma estrutura de áudio é obtida. A representação de domínio de tempo de uma dada estrutura de áudio pode ser combinada com as representações de domínio de tempo de estruturas de áudio prévias e/ou subsequentes. Por exemplo, uma sobreposição e adição entre as representações de domínio de tempo de estruturas de áudio subsequentes pode ser realizada a fim de suavizar as transações entre as representações de domínio de tempo das estruturas de áudio adjacentes e a fim de obter uma anulação de aliasing. Para detalhes referentes à reconstrução da informação de áudio decodificada 212 com base na representação decodificada de áudio de domínio de frequência de tempo 232, a referência é feita, por exemplo, ao Padrão Internacional ISO/IEC 14496-3, parte 3, subparte 4 onde uma discussão detalhada é dada. Entretanto, outros esquemas de sobreposição mais elaborada e anulação de aliasing podem ser utilizados.[000222] To summarize the entire functionality of the audio decoder 200, a frequency domain audio decoded representation 232, e.g., a set of spectral values associated with an audio structure of the encoded audio information, may be obtained based on in the frequency domain coded representation 222 using the arithmetic decoder 230. Subsequently, the set of, for example, 1024 spectral values, which may be MDCT coefficients, is inversely quantized, rescaled and preprocessed. Thus, a set of spectrally inversely quantized and rescaled preprocessed spectral values (e.g. 1024 MDCT coefficients) is obtained. Subsequently, a time domain representation of an audio structure is derived from the spectrally preprocessed, inversely quantized and rescaled set of frequency domain values (e.g., MDCT coefficients). Thus, a time domain representation of an audio structure is obtained. The time domain representation of a given audio structure may be combined with the time domain representations of previous and/or subsequent audio structures. For example, an overlay and addition between the time domain representations of subsequent audio structures may be performed in order to smooth the transactions between the time domain representations of adjacent audio structures and in order to achieve an aliasing. For details regarding the reconstruction of the decoded audio information 212 based on the decoded time-frequency domain audio representation 232, reference is made, for example, to International Standard ISO/IEC 14496-3, part 3, subpart 4 where a detailed discussion is given. However, other more elaborate overlay and aliasing schemes can be used.

[000223] A seguir, alguns detalhes referentes ao decodificador aritmético 230 serão descritos. O decodificador aritmético 230 compreende um determinador do plano de bits mais significativo 284, que é configurado para receber a senha aritmética acod_m [pki][m] que descreve o valor do plano de bits mais significativo m. O determinador do plano de bits mais significativo 284 pode ser configurado para utilizar a tabela de frequências cumulativas fora de um conjunto que compreende diversas 96 tabelas de frequências cumulativas para derivar o valor do plano de bits mais significativo m da senha aritmética “acod_m [pki][m]”.[000223] Next, some details regarding the arithmetic decoder 230 will be described. The arithmetic decoder 230 comprises a most significant bit plane determiner 284, which is configured to receive the arithmetic password acod_m [pki][m] that describes the value of the most significant bit plane m. The most significant bit plane determiner 284 may be configured to use the cumulative frequency table out of a set comprising multiple 96 cumulative frequency tables to derive the most significant bit plane value m from the arithmetic password “acod_m [pki] [m]”.

[000224] O determinador do plano de bits mais significativo 284 é configurado para derivar valores 286 de um plano de bits mais significativo de um ou mais valores espectrais com base na senha acod_m. O decodificador aritmético 230 ainda compreende um determinador do plano de bits menos significativo 288, que é configurado para receber uma ou mais senhas “acod_r” que representa um ou mais planos de bits menos significativos de um valor espectral. Assim, o determinador do plano de bits menos significativo 288 é configurado para prover valores decodificados 290 de um ou mais planos de bits menos significativos. O decodificador de áudio 200 também compreende um combinador do plano de bits 292, que é configurado para receber os valores decodificados 286 do plano de bits mais significativo de um ou mais valores espectrais e os valores decodificados 290 de um ou mais planos de bits menos significativos dos valores espectrais se tais planos de bits menos significativos estão disponíveis para os valores correntes espectrais. Assim, o combinador do plano de bits 292 provê valores espectrais decodificados, que fazem parte da representação decodificada de áudio de domínio de frequência 232. Naturalmente, o decodificador aritmético 230 é tipicamente configurado para prover diversos valores espectrais a fim de obter um conjunto completo de valores espectrais decodificados associados a uma estrutura corrente do conteúdo de áudio.[000224] The most significant bit plane determiner 284 is configured to derive values 286 of a most significant bit plane from one or more spectral values based on the acod_m password. The arithmetic decoder 230 further comprises a least significant bit plane determiner 288, which is configured to receive one or more passwords “acod_r” representing one or more least significant bit planes of a spectral value. Thus, the least significant bit plane determiner 288 is configured to provide decoded values 290 from one or more least significant bit planes. The audio decoder 200 also comprises a bit plane combiner 292, which is configured to receive the decoded values 286 of the most significant bit plane of one or more spectral values and the decoded values 290 of one or more less significant bit planes. of the spectral values if such least significant bit planes are available for the current spectral values. Thus, the bit plane combiner 292 provides decoded spectral values, which are part of the decoded frequency domain audio representation 232. Naturally, the arithmetic decoder 230 is typically configured to provide several spectral values in order to obtain a complete set of decoded spectral values associated with a current structure of the audio content.

[000225] O decodificador aritmético 230 ainda compreende um selecionador da tabela de frequências cumulativas 296, que é configurado para selecionar uma das 64 tabelas de frequências cumulativas ari_cf_m[64][17] (cada tabela ari_cf_m[pki][17], com 0<pki<63, tendo 17 entradas) dependendo de um índice de estado 298 que descreve um state do decodificador aritmético. Para selecionar uma das tabelas de frequências cumulativas, o selecionador da tabela de frequências cumulativas preferivelmente avalia a tabela hash ari_hash_m[742] conforme definido pela representação em tabela das figuras 22(1), 22(2), 22(3), 22(4). Detalhes referentes a esta avaliação da tabela hash ari_hash_m[742] serão descritos abaixo. O decodificador aritmético 230 ainda compreende um rastreador de estado 299, que é configurado para rastrear um estado do decodificador aritmético dependendo dos valores espectrais previamente decodificados. A informação de estado pode opcionalmente ser redefinida em uma informação padrão de estado em resposta à informação de reset do estado 224. Certamente, o selecionador da tabela de frequências cumulativas 296 é configurado para prover um índice (por exemplo, pki) de uma tabela de frequências cumulativas selecionada, ou uma tabela de frequências cumulativas selecionada ou a própria subtabela, para aplicação na decodificação do valor do plano de bits mais significativo m dependendo do código “acod_m”.[000225] The arithmetic decoder 230 further comprises a cumulative frequency table selector 296, which is configured to select one of 64 cumulative frequency tables ari_cf_m[64][17] (each table ari_cf_m[pki][17], with 0 <pki<63, having 17 entries) depending on a state index 298 that describes a state of the arithmetic decoder. To select one of the cumulative frequency tables, the cumulative frequency table selector preferably evaluates the hash table ari_hash_m[742] as defined by the tabular representation of figures 22(1), 22(2), 22(3), 22( 4). Details regarding this evaluation of the ari_hash_m[742] hash table will be described below. The arithmetic decoder 230 further comprises a state tracker 299, which is configured to track a state of the arithmetic decoder depending on previously decoded spectral values. The state information may optionally be reset to a standard state information in response to the state reset information 224. Of course, the cumulative frequency table selector 296 is configured to provide an index (e.g., pki) of a table of selected cumulative frequencies, or a selected cumulative frequency table or the subtable itself, for application in decoding the value of the most significant bit plane m depending on the code “acod_m”.

[000226] Para resumir a funcionalidade do decodificador de áudio 200, o decodificador de áudio 200 é configurado para receber uma representação eficientemente codificada de áudio de domínio de frequência da taxa de bits 222 e para obter uma representação decodificada de áudio de domínio de frequência com base neste. No decodificador aritmético 230, que é utilizado para obter a representação decodificada de áudio de domínio de frequência 232 com base na representação codificada de áudio de domínio de frequência 222, uma probabilidade de diferentes combinações de valores do plano de bits mais significativo de valores espectrais adjacentes é explorada utilizando um decodificador aritmético 280, que é configurado para aplicar a tabela de frequências cumulativas. Em outras palavras, as dependências estatísticas entre os valores espectrais são explorados selecionando diferentes tabelas de frequências cumulativas fora de um conjunto que compreende 64 diferentes tabelas de frequências cumulativas dependendo de um índice de estado 298, que é obtido observando os valores espectrais decodificados previamente calculados.[000226] To summarize the functionality of audio decoder 200, audio decoder 200 is configured to receive an efficiently encoded representation of frequency domain audio of bit rate 222 and to obtain a decoded representation of frequency domain audio with based on this. In the arithmetic decoder 230, which is used to obtain the frequency domain audio decoded representation 232 based on the frequency domain audio encoded representation 222, a probability of different combinations of values of the most significant bit plane of adjacent spectral values is explored using an arithmetic decoder 280, which is configured to apply the cumulative frequency table. In other words, statistical dependencies between spectral values are explored by selecting different cumulative frequency tables out of a set comprising 64 different cumulative frequency tables depending on a state index 298, which is obtained by observing the previously calculated decoded spectral values.

[000227] Deve ser observado que o rastreador de estado 299 pode ser idêntico a, ou pode tomar a funcionalidade, do rastreador de estado 826, do rastreador de estado 1126, ou do rastreador de estado 1326. O selecionador da tabela de frequências cumulativas 296 pode ser idêntico a ou pode tomar a funcionalidade, do selecionador da regra de mapeamento 828, do selecionador da regra de mapeamento 1128, ou do selecionador da regra de mapeamento 1328. O determinador do plano de bits mais significativo 284 pode ser idêntico a, ou pode tomar a funcionalidade, do determinador do valor espectral 824.[000227] It should be noted that state tracker 299 may be identical to, or may take on the functionality of, state tracker 826, state tracker 1126, or state tracker 1326. The cumulative frequency table selector 296 may be identical to, or may take the functionality of, the mapping rule selector 828, the mapping rule selector 1128, or the mapping rule selector 1328. The most significant bit plane determiner 284 may be identical to, or may take the functionality of the spectral value determiner 824.

[000228] Visão geral da ferramenta de codificação espectral silenciosa[000228] Silent Spectral Coding Tool Overview

[000229] A seguir, detalhes referentes à codificação e decodificação do algoritmo, que é realizada, por exemplo, pelo codificador aritmético 170 e pelo decodificador aritmético 230, serão explicados.[000229] Next, details regarding the encoding and decoding of the algorithm, which is performed, for example, by the arithmetic encoder 170 and the arithmetic decoder 230, will be explained.

[000230] O foco deve ser colocado na descrição da decodificação do algoritmo. Deve ser observado, entretanto, que uma codificação do algoritmo correspondente poder ser realizada de acordo com os ensinamentos da decodificação do algoritmo, em que mapeamentos entre valores espectrais codificados e decodificados são inversos, e em que o cálculo do valor de índice de regra de mapeamento é substancialmente idêntico. Em um codificador, os valores espectrais codificados assumem o lugar dos valores espectrais decodificados. Ainda, os valores espectrais a ser codificados assumem o lugar dos valores espectrais a ser decodificados.[000230] Focus should be placed on describing the decoding of the algorithm. It should be noted, however, that a corresponding encoding algorithm can be performed in accordance with the teachings of the decoding algorithm, in which mappings between encoded and decoded spectral values are inverse, and in which the calculation of the mapping rule index value is substantially identical. In an encoder, the encoded spectral values take the place of the decoded spectral values. Furthermore, the spectral values to be encoded take the place of the spectral values to be decoded.

[000231] Deve ser observado que a decodificação, que será discutida a seguir, é utilizada a fim de permitir a chamada “codificação espectral silenciosa” de valores espectrais escalados e quantizados tipicamente pós-processados. A codificação espectral silenciosa é utilizada em um conceito de codificação/decodificação de áudio (ou em qualquer outro conceito de codificação/decodificação) para ainda reduzir a redundância do espectro quantizado, que é obtido, por exemplo, por um transformador de domínio de tempo em domínio de frequência com compactação de energia. O esquema espectral de codificação silenciosa, que é utilizado nas realizações da invenção, tem como base uma codificação aritmética com um contexto dinamicamente adaptado.[000231] It should be noted that decoding, which will be discussed below, is used in order to enable so-called “silent spectral coding” of scaled and quantized spectral values typically post-processed. Silent spectral coding is used in an audio coding/decoding concept (or in any other coding/decoding concept) to further reduce the redundancy of the quantized spectrum, which is obtained, for example, by a time-domain transformer in frequency domain with energy compression. The spectral silent coding scheme, which is used in embodiments of the invention, is based on an arithmetic coding with a dynamically adapted context.

[000232] Em algumas realizações, de acordo com a invenção, o esquema espectral de codificação silenciosa tem como base 2 tuplos, ou seja, dois coeficientes espectrais próximos são combinados. Cada tuplo duplo é dividido em sinal, o plano amplo de 3 bits mais significativo, e os planos de bits menos significativos restantes. A codificação silenciosa para o plano de bit a bit mais significativo m utiliza tabelas de frequências cumulativas dependentes de contexto derivadas de quatro tuplos duplos previamente decodificados. A codificação silenciosa é alimentada, por exemplo, pelos valores espectrais quantizados e utiliza as tabelas de frequências cumulativas dependentes de contexto derivadas de quatro tuplos duplos próximos previamente codificados. Aqui, próximo tanto em tempo quanto em frequência é preferivelmente considerado, conforme ilustrado na figura 4. As tabelas de frequências cumulativas (que serão explicadas abaixo) são então utilizadas pelo codificador aritmético para gerar um código binário de comprimento variável (e pelo decodificador aritmético para derivar valores decodificados de um código binário de comprimento variável).[000232] In some embodiments, according to the invention, the silent coding spectral scheme is based on 2 tuples, that is, two close spectral coefficients are combined. Each double tuple is divided into sign, the most significant 3-bit wide plane, and the remaining least significant bit planes. Silent encoding for the most significant bitwise plane m uses context-dependent cumulative frequency tables derived from four previously decoded double tuples. Silent encoding is fed, for example, by the quantized spectral values and uses the context-dependent cumulative frequency tables derived from four previously encoded close double tuples. Here, close in both time and frequency is preferably considered, as illustrated in figure 4. The cumulative frequency tables (which will be explained below) are then used by the arithmetic encoder to generate a binary code of variable length (and by the arithmetic decoder to derive decoded values from a variable-length binary code).

[000233] Por exemplo, o codificador aritmético 170 produz um código binário para um determinado conjunto de símbolos e suas respectivas probabilidades (ou seja, dependendo das respectivas probabilidades). O código binário é gerado pelo mapeamento de um intervalo de probabilidade, onde o conjunto de símbolos se encontra em uma senha.[000233] For example, the arithmetic encoder 170 produces a binary code for a given set of symbols and their respective probabilities (i.e., depending on the respective probabilities). The binary code is generated by mapping a probability range where the set of symbols lies in a password.

[000234] A codificação silenciosa para o plano de bits menos significativo r restante utiliza, por exemplo, uma única tabela de frequências cumulativas. As frequências cumulativas correspondem, por exemplo, a uma distribuição uniforme dos símbolos que ocorrem nos planos de bits menos significativos, ou seja, é esperado que haja a mesma probabilidade que um 0 ou um 1 ocorre nos planos de bits menos significativos. Entretanto, outras soluções para a codificação do plano de bits menos significativo restante ou planos de bits podem ser utilizados.[000234] Silent encoding for the remaining least significant bit plane r uses, for example, a single cumulative frequency table. Cumulative frequencies correspond, for example, to a uniform distribution of symbols that occur in the least significant bit planes, that is, it is expected that there is the same probability that a 0 or a 1 occurs in the least significant bit planes. However, other solutions for encoding the remaining least significant bit plane or bit planes can be used.

[000235] A seguir, outra breve visão geral da ferramenta de codificação espectral silenciosa será dada. A codificação espectral silenciosa é utilizada para ainda reduzir a redundância do espectro quantizado. O esquema espectral de codificação silenciosa tem como base uma codificação aritmética, com um contexto dinamicamente adaptado. A codificação silenciosa é alimentada pelos valores espectrais quantizados e utiliza as tabelas de frequências cumulativas dependentes de contexto derivadas de, por exemplo, quatro tuplos duplos próximos previamente decodificados de valores espectrais. Aqui, próximo, em tempo e frequência, é considerado conforme ilustrado na figura 4. As tabelas de frequências cumulativas são então utilizadas pelo codificador aritmético para gerar um código binário de comprimento variável.[000235] Next, another brief overview of the silent spectral coding tool will be given. Silent spectral coding is used to further reduce the redundancy of the quantized spectrum. The spectral silent coding scheme is based on an arithmetic coding, with a dynamically adapted context. Silent coding is fed by the quantized spectral values and uses the context-dependent cumulative frequency tables derived from, for example, four previously decoded close double tuples of spectral values. Here, proximate, in time and frequency, is considered as illustrated in figure 4. The cumulative frequency tables are then used by the arithmetic encoder to generate a binary code of variable length.

[000236] O codificador aritmético produz um código binário para um determinado conjunto de símbolos e suas respectivas probabilidades. O código binário é gerado pelo mapeamento de um intervalo de probabilidade, onde o conjunto de símbolos permanece, em um código.[000236] The arithmetic coder produces a binary code for a given set of symbols and their respective probabilities. Binary code is generated by mapping a probability interval, where the set of symbols remains, into a code.

[000237] Processo de decodificação[000237] Decoding process

[000238] 11.1 Visão geral do processo de decodificação[000238] 11.1 Overview of the decoding process

[000239] A seguir, uma visão geral do processo de codificação de um valor espectral será apresentada, tendo como referência a figura 3, que mostra uma representação do código do pseudo-programa do processo de decodificação de diversos valores espectrais.[000239] Next, an overview of the coding process for a spectral value will be presented, with reference to figure 3, which shows a representation of the pseudo-program code of the decoding process for various spectral values.

[000240] O processo de decodificação de diversos valores espectrais compreende uma inicialização 310 de um contexto. A inicialização 310 do contexto compreende uma derivação do contexto corrente de um contexto prévio, que utiliza a função “arith_map_context(N, arith_reset_flag)”. A derivação do contexto corrente de um contexto prévio pode seletivamente compreender uma redefinição do contexto. A redefinição do contexto e a derivação do contexto corrente de um contexto prévio serão discutidas abaixo. Preferivelmente, a função “arith_map_context(N, arith_reset_flag)” de acordo com a figura 5a pode ser utilizada, mas de modo alternativo a função de acordo com a figura 5b pode ser utilizada.[000240] The process of decoding various spectral values comprises an initialization 310 of a context. Context initialization 310 comprises a derivation of the current context from a previous context, which uses the function “arith_map_context(N, arith_reset_flag)”. The derivation of the current context from a previous context can selectively comprise a redefinition of the context. Context redefinition and the derivation of the current context from a previous context will be discussed below. Preferably, the function “arith_map_context(N, arith_reset_flag)” according to figure 5a can be used, but alternatively the function according to figure 5b can be used.

[000241] A decodificação de diversos valores espectrais também compreende uma iteração de uma decodificação do valor espectral 312 e uma atualização de contexto 313, cuja atualização de contexto 313 é realizada pela função “arith_update_context(i, a,b)” que é descrita abaixo. A decodificação do valor espectral 312 e a atualização de contexto 312 são repetidas l g/2 vezes, em que l g/2 indica o número de 2 tuplos de valores espectrais a ser decodificados (por exemplo, para uma estrutura de áudio), a menos que o símbolo chamado “ARITH_STOP” seja detectado. Além disso, a decodificação de um conjunto de valores espectrais l g também compreende uma decodificação de sinais 314 e uma etapa de acabamento 315.[000241] The decoding of various spectral values also comprises an iteration of a spectral value decoding 312 and a context update 313, which context update 313 is performed by the function “arith_update_context(i, a, b)” which is described below . Spectral value decoding 312 and context update 312 are repeated 1 g/2 times, where 1 g/2 indicates the number of 2-tuples of spectral values to be decoded (e.g., for an audio structure), unless the symbol called “ARITH_STOP” is detected. Furthermore, decoding a set of spectral values l g also comprises a signal decoding 314 and a finishing step 315.

[000242] A decodificação 312 de um tuplo de valores espectrais compreende um cálculo do valor de contexto 312a, uma decodificação do plano de bits mais significativo 312b, uma detecção do símbolo de parada aritmética 312c, uma adição do plano de bits menos significativo 312d, e uma atualização da matriz 312e.[000242] Decoding 312 of a tuple of spectral values comprises a calculation of the context value 312a, a decoding of the most significant bit plane 312b, a detection of the arithmetic stop symbol 312c, an addition of the least significant bit plane 312d, and an update to the 312e matrix.

[000243] O cálculo do valor de estado 312a compreende uma chamada da função “arith_get_context(c,i,N)” conforme mostrado, por exemplo, na figura 5c ou 5d. Preferivelmente, a função “arith_get_context(c,i,N)” de acordo com a figura 5c é utilizada. Assim, um valor (de estado) de contexto corrente numérico c é provido como um valor de retorno da função chamada da função “arith_get_context(c,i,N)”. Como pode ser visto, o valor de contexto prévio numérico (também designado como “c”), que serve como uma variável de entrada na função “arith_get_context(c,i,N)”, é atualizada para obter, como um valor de retorno, o valor de contexto corrente numérico c.[000243] The calculation of the state value 312a comprises a call to the function “arith_get_context(c,i,N)” as shown, for example, in figure 5c or 5d. Preferably, the function “arith_get_context(c,i,N)” according to figure 5c is used. Thus, a numeric current context (state) value c is provided as a return value of the function call “arith_get_context(c,i,N)”. As can be seen, the numeric prior context value (also designated as “c”), which serves as an input variable in the function “arith_get_context(c,i,N)”, is updated to get, as a return value , the current numeric context value c.

[000244] A decodificação do plano de bits mais significativo 312b compreende uma execução iterativa de uma decodificação de algoritmo 312ba, e uma derivação 312bb de valores a,b do valor de resultado m do algoritmo 312ba. Na preparação do algoritmo 312ba, a variável lev é inicializada a zero. O algoritmo 312ba é repetido, até que uma instrução de “interrupção” (ou condição) seja atingida. O algoritmo 312ba compreende um cálculo de um índice de estado “pki” (que também serve como um índice da tabela de frequências cumulativas) dependendo do valor de contexto corrente numérico c, e também dependendo do valor de nível “esc_nb” que utiliza a função “arith_get_pk()”, que é discutido abaixo (e realizações destas são mostradas, por exemplo, nas figuras. 5e e 5f). Preferivelmente, a função “arith_get_pk(c)” de acordo com a figura 5e é utilizada. O algoritmo 312ba também compreende a seleção de uma tabela de frequências cumulativas dependendo do índice de estado “pki”, que é retornado pela chamada da função “arith_get_pk”, em que uma variável “cum_freq” pode ser definida a um endereço inicial de uma das 96 tabelas de frequências cumulativas (ou subtabelas) dependendo do índice de estado “pki”. Uma variável “cfl” pode também ser inicializada em um comprimento da tabela de frequências cumulativas selecionada (ou uma sub-tabela), que é, por exemplo, igual a um número de símbolos no alfabeto, ou seja, o número de diferentes valores que pode ser decodificado. O comprimento de todas as tabelas de frequências cumulativas (ou subtabelas) de “ari_cf_m[pki=0][17]” a “ari_cf_m[pki=95][17]” disponíveis para a decodificação do valor do plano de bits mais significativo m é 17, como 16 diferentes valores do plano de bits mais significativo e um símbolo de escape (“ARITH_ESCAPE”) podem ser decodificados. Preferivelmente, a tabela de frequências cumulativas ari_cf_m[64][17], conforme definido na representação em tabela de acordo com as figuras 23(1), 23(2), 23(3), que definem as tabelas de frequências cumulativas (ou subtabelas) “ari_cf_m[pki=0][17]” a “ari_cf_m[pki=63][17]”, é avaliada, para obter a tabela de frequências cumulativas selecionada (ou sub-tabela).[000244] Decoding the most significant bit plane 312b comprises an iterative execution of an algorithm decoding 312ba, and a derivation 312bb of values a, b of the result value m of the algorithm 312ba. In preparing the 312ba algorithm, the variable lev is initialized to zero. Algorithm 312ba is repeated until an “interrupt” instruction (or condition) is met. Algorithm 312ba comprises a calculation of a state index “pki” (which also serves as an index of the cumulative frequency table) depending on the current numeric context value c, and also depending on the level value “esc_nb” that uses the function “arith_get_pk()”, which is discussed below (and realizations of these are shown, for example, in Figs. 5e and 5f). Preferably, the function “arith_get_pk(c)” according to figure 5e is used. Algorithm 312ba also comprises selecting a table of cumulative frequencies depending on the state index “pki”, which is returned by calling the function “arith_get_pk”, wherein a variable “cum_freq” can be set to a starting address of one of the 96 cumulative frequency tables (or subtables) depending on the state index “pki”. A variable “cfl” can also be initialized to a length of the selected cumulative frequency table (or a sub-table), which is, for example, equal to a number of symbols in the alphabet, i.e. the number of different values that can be decoded. The length of all cumulative frequency tables (or subtables) from “ari_cf_m[pki=0][17]” to “ari_cf_m[pki=95][17]” available for decoding the most significant bit plane value m is 17, as 16 different values of the most significant bit plane and an escape symbol (“ARITH_ESCAPE”) can be decoded. Preferably, the cumulative frequency table ari_cf_m[64][17], as defined in the table representation according to figures 23(1), 23(2), 23(3), which define the cumulative frequency tables (or subtables) “ari_cf_m[pki=0][17]” to “ari_cf_m[pki=63][17]”, is evaluated, to obtain the selected cumulative frequency table (or sub-table).

[000245] Subsequentemente, um valor do plano de bits mais significativo m pode ser obtido executando uma função “arith_decode()”, levando em consideração a tabela de frequências cumulativas selecionada (descrita pela variável “cum_freq” e a variável “cfl”). Ao derivar o valor do plano de bits mais significativo m, os bits chamados “acod_m” do fluxo de bits 210 podem ser avaliados (veja, por exemplo, a figura 6g ou a figura 6h). Preferivelmente, a função “arith_decode(cum_freq,cfl)” de acordo com a figura 5g é utilizada, mas de modo alternativo a função “arith_decode(cum_freq,cfl)” de acordo com as figuras 5h e 5i pode ser utilizada.[000245] Subsequently, a value of the most significant bit plane m can be obtained by executing a function “arith_decode()”, taking into account the selected cumulative frequency table (described by the variable “cum_freq” and the variable “cfl”). By deriving the value of the most significant bit plane m, bits called “acod_m” of bit stream 210 can be evaluated (see, for example, Figure 6g or Figure 6h). Preferably, the function “arith_decode(cum_freq,cfl)” according to Figure 5g is used, but alternatively the function “arith_decode(cum_freq,cfl)” according to Figures 5h and 5i can be used.

[000246] O algoritmo 312ba também compreende verificar se o valor do plano de bits mais significativo m é igual a um símbolo de escape “ARITH_ESCAPE”, ou não. Se o valor do plano de bits mais significativo m não for igual ao símbolo de escape aritmético, o algoritmo 312ba é abortado (condição de “interrupção”) e as instruções restantes do algoritmo 312ba são então puladas. Assim, a execução do processo é continuada com a definição do valor b e do valor a na etapa 312bb. Em contraste, se o valor do plano de bits mais significativo decodificado m for idêntico ao símbolo de escape aritmético, ou “ARITH_ESCAPE”, o valor de nível “lev” é aumentado por um. O valor de nível “esc_nb” é definido para ser igual ao valor de nível “lev”, a menos que a variável “lev” seja maior que sete, cujo caso, a variável “esc_nb” é definida para ser igual a sete. Conforme mencionado, o algoritmo 312ba é então repetido até que o valor do plano de bits mais significativo decodificado m seja diferente do símbolo de escape aritmético, em que um contexto modificado seja utilizado (por causa do parâmetro de entrada da função “arith_get_pk()” ser adaptado dependendo do valor da variável “esc_nb”).[000246] Algorithm 312ba also comprises checking whether the value of the most significant bit plane m is equal to an escape symbol “ARITH_ESCAPE”, or not. If the value of the most significant bit plane m is not equal to the arithmetic escape symbol, the 312ba algorithm is aborted (“break” condition) and the remaining instructions of the 312ba algorithm are then skipped. Thus, the execution of the process is continued with the definition of the value b and the value a in step 312bb. In contrast, if the decoded most significant bit plane value m is identical to the arithmetic escape symbol, or “ARITH_ESCAPE”, the level value “lev” is increased by one. The “esc_nb” level value is set to be equal to the “lev” level value, unless the “lev” variable is greater than seven, in which case, the “esc_nb” variable is set to be equal to seven. As mentioned, the 312ba algorithm is then repeated until the decoded most significant bit plane value m is different from the arithmetic escape symbol, in which a modified context is used (because of the function input parameter “arith_get_pk()” be adapted depending on the value of the variable “esc_nb”).

[000247] Logo que o plano de bits mais significativo é decodificado utilizando execução de um período ou a execução iterativa do algoritmo 312ba, ou seja, um valor do plano de bits mais significativo m diferente do símbolo de escape aritmético foi decodificado, o variável do valor espectral “b” é definido para ser igual a diversos (por exemplo, 2) bits mais significativos do valor do plano de bits mais significativo m, e a variável do valor espectral “a” é definida (por exemplo, 2) nos bits menos significativos do valor do plano de bits mais significativo m. Detalhes referentes a esta funcionalidade podem ser vistos, por exemplo, no número de referência 312bb.[000247] As soon as the most significant bit plane is decoded using one-period execution or iterative execution of algorithm 312ba, i.e., a value of the most significant bit plane m other than the arithmetic escape symbol has been decoded, the variable of the spectral value “b” is defined to be equal to several (e.g. 2) most significant bits of the most significant bit plane value m, and the spectral value variable “a” is defined (e.g. 2) in the bits least significant of the value of the most significant bit plane m. Details regarding this functionality can be seen, for example, in reference number 312bb.

[000248] Subsequentemente, é verificado na etapa 312c, se um símbolo de parada aritmética está presente. Este é o caso se o valor do plano de bits mais significativo m for igual a zero e a variável “lev” for maior que zero. Assim, uma condição de parada aritmética é sinalizada por uma condição “incomum”, na qual o valor do plano de bits mais significativo m é igual a zero, enquanto a variável “lev” indica que um peso numérico aumentado está associado ao valor do plano de bits mais significativo m. Em outras palavras, uma condição de parada aritmética é detectada se o fluxo de bits indica que um peso numérico aumentado, maior que um peso numérico mínimo, deve ser dado a um valor do plano de bits mais significativo que é igual a zero, que é uma condição que não ocorre em uma situação de codificação normal. Em outras palavras, uma condição de parada aritmética é sinalizada se um símbolo de escape aritmético codificado for seguido por um valor do plano de bits mais significativo codificado de 0.[000248] Subsequently, it is checked in step 312c whether an arithmetic stop symbol is present. This is the case if the value of the most significant bit plane m is equal to zero and the variable “lev” is greater than zero. Thus, an arithmetic stop condition is signaled by an “unusual” condition, in which the value of the most significant bit plane m is equal to zero, while the variable “lev” indicates that an increased numerical weight is associated with the value of the plane of bits most significant m. In other words, an arithmetic stop condition is detected if the bit stream indicates that an increased numeric weight, greater than a minimum numeric weight, should be given to a value of the most significant bit plane that is equal to zero, which is a condition that does not occur in a normal coding situation. In other words, an arithmetic stop condition is signaled if a coded arithmetic escape symbol is followed by a coded most significant bit plane value of 0.

[000249] Depois de uma avaliação se houver uma condição de parada aritmética, que é realizada na etapa 212c, os planos de bits menos significativos são obtidos, por exemplo, conforme mostrado no número de referência 212d na figura 3. Para cada plano de bits menos significativo, dois valores binários são decodificados. Um dos valores binários está associado à variável a (ou o primeiro valor espectral de um tuplo de valores espectrais) e um dos valores binários está associado à variável b (ou um segundo valor espectral de um tuplo de valores espectrais). Um número de planos de bits menos significativos é designado pela variável lev.[000249] After an evaluation if there is an arithmetic stop condition, which is performed in step 212c, the least significant bit planes are obtained, for example, as shown in reference number 212d in Figure 3. For each bit plane least significant, two binary values are decoded. One of the binary values is associated with variable a (or the first spectral value of a tuple of spectral values) and one of the binary values is associated with variable b (or a second spectral value of a tuple of spectral values). A number of least significant bit planes are designated by the variable lev.

[000250] Na decodificação de um ou mais planos de bits menos significativos (se houver) um algoritmo 212da é realizado de forma iterativa, em que um número de execuções do algoritmo 212da é determinado pela variável “lev”. Deve ser observado aqui que a primeira iteração do algoritmo 212da é realizada com base nos valores das variáveis a, b conforme definido na etapa 212bb. Outras iterações do algoritmo 212da devem ser realizadas com base nos valores da variável atualizada da variável a, b.[000250] When decoding one or more less significant bit planes (if any) an algorithm 212da is performed iteratively, in which a number of executions of the algorithm 212da is determined by the variable “lev”. It should be noted here that the first iteration of algorithm 212da is performed based on the values of variables a, b as defined in step 212bb. Further iterations of the 212da algorithm should be performed based on the updated variable values of variable a, b.

[000251] No início de uma iteração, uma tabela de frequências cumulativas é selecionada. Subsequentemente, uma decodificação aritmética é realizada para obter um valor de uma variável r, em que o valor da variável r descreve diversos bits menos significativos, por exemplo, um bit menos significativo associado à variável a e um bit menos significativo associado à variável b. A função “ARITH_DECODE” (por exemplo, conforme definido na figura 5g) é utilizada para obter o valor r, em que a tabela de frequências cumulativas “arith_cf_r” é utilizada para a decodificação aritmética.[000251] At the beginning of an iteration, a cumulative frequency table is selected. Subsequently, an arithmetic decoding is performed to obtain a value of a variable r, wherein the value of the variable r describes several less significant bits, for example, a less significant bit associated with variable a and a less significant bit associated with variable b. The function “ARITH_DECODE” (for example, as defined in Figure 5g) is used to obtain the r value, where the cumulative frequency table “arith_cf_r” is used for arithmetic decoding.

[000252] Subsequentemente, os valores das variáveis a e b são atualizados. Para esta finalidade, a variável a é mudada à esquerda por um bit, e o bit menos significativo da variável mudada a é definido o valor definido pelo bit menos significativo do valor r. A variável b é mudada à esquerda por um bit, e o bit menos significativo da variável mudada b é definido o valor definido por bit 1 da variável r, em que o bit 1 da variável r tem um peso numérico de 2 na representação binária da variável r. O algoritmo 412ba é então repetido até que todos os bits menos significativos sejam decodificados.[000252] Subsequently, the values of variables a and b are updated. For this purpose, the variable a is shifted left by one bit, and the least significant bit of the shifted variable a is set to the value defined by the least significant bit of the value r. The variable b is shifted left by one bit, and the least significant bit of the shifted variable b is set to the value defined by bit 1 of the variable r, wherein bit 1 of the variable r has a numerical weight of 2 in the binary representation of the variable r. The 412ba algorithm is then repeated until all least significant bits are decoded.

[000253] Depois da decodificação dos planos de bits menos significativos, uma matriz “x_ac_dec” é atualizada em que os valores das variáveis a,b são armazenados nas entradas da dita matriz tendo índices da matriz 2*i e 2*i+1.[000253] After decoding the least significant bit planes, a matrix “x_ac_dec” is updated in which the values of the variables a, b are stored in the entries of said matrix having matrix indices 2*i and 2*i+1.

[000254] Subsequentemente, o estado de contexto é atualizado chamando a função “arith_update_context(i,a,b)”, detalhes que serão explicados abaixo tendo como referência a figura 5g. Preferivelmente, a função “arith_update_context(i,a,b)”, conforme definido na figura 5l, pode ser utilizada.[000254] Subsequently, the context state is updated by calling the function “arith_update_context(i,a,b)”, details of which will be explained below with reference to figure 5g. Preferably, the function “arith_update_context(i,a,b)”, as defined in figure 5l, can be used.

[000255] Subsequente à atualização do estado de contexto, que é realizada na etapa 313, os algoritmos 312 e 313 são repetidos, até que a variável de execução i atinja o valor de lg/2 ou uma condição de parada aritmética seja detectada.[000255] Subsequent to updating the context state, which is performed in step 313, algorithms 312 and 313 are repeated, until the execution variable i reaches the value of lg/2 or an arithmetic stop condition is detected.

[000256] Subsequentemente, um algoritmo de acabamento “arith_finish()” é realizado, como pode ser visto no número de referência 315. Detalhes do algoritmo de acabamento “arith_finish()” serão descritos abaixo tendo como referência a figura 5m.[000256] Subsequently, an “arith_finish()” finishing algorithm is performed, as can be seen in reference number 315. Details of the “arith_finish()” finishing algorithm will be described below with reference to figure 5m.

[000257] Subsequente ao algoritmo de acabamento 315, os sinais dos valores espectrais são decodificados utilizando o algoritmo 314. Como pode ser visto, os sinais dos valores espectrais que são diferentes de zero são individualmente codificados. No algoritmo 314, os sinais são lidos para todos os valores espectrais tendo índices i entre i=0 e i=lg-1 que não são zero. Para cada valor espectral não zero tendo um índice do valor espectral i entre i=0 e i=lg-1, um valor (tipicamente um único bit) s é lido do fluxo de bits. Se o valor de s, que é lido do fluxo de bits é igual a 1, o sinal do dito valor espectral é invertido. Para esta finalidade, o acesso é feito à matriz “x_ac_dec”, para determinar se o valor espectral tendo o índice i é igual a zero e para atualizar o sinal dos valores espectrais decodificados. Entretanto, deve ser observado que os sinais das variáveis a, b não são mudados na decodificação de sinal 314.[000257] Subsequent to finishing algorithm 315, the spectral value signals are decoded using algorithm 314. As can be seen, the spectral value signals that are non-zero are individually encoded. In algorithm 314, signals are read for all spectral values having indices i between i=0 and i=lg-1 that are not zero. For each non-zero spectral value having a spectral value index i between i=0 and i=lg-1, a value (typically a single bit) s is read from the bit stream. If the value of s, which is read from the bit stream, is equal to 1, the sign of said spectral value is inverted. For this purpose, access is made to the matrix “x_ac_dec”, to determine whether the spectral value having the index i is equal to zero and to update the signal of the decoded spectral values. However, it should be noted that the signs of variables a, b are not changed in signal decoding 314.

[000258] Realizando o algoritmo de acabamento 315 antes da decodificação de sinais 314, é possível redefinir todos os bins necessários depois de um símbolo ARITH_STOP.[000258] By performing the finishing algorithm 315 before decoding signals 314, it is possible to reset all necessary bins after an ARITH_STOP symbol.

[000259] Deve ser observado aqui que o conceito para obter os valores dos planos de bits menos significativos não é de relevância particular em algumas realizações de acordo com a presente invenção. Em algumas realizações, a decodificação de quaisquer planos de bits menos significativos pode ser omitida. De modo alternativo, diferentes algoritmos de decodificação podem ser utilizados para esta finalidade.[000259] It should be noted here that the concept of obtaining the values of the least significant bit planes is not of particular relevance in some embodiments according to the present invention. In some embodiments, decoding of any least significant bit planes may be omitted. Alternatively, different decoding algorithms can be used for this purpose.

[000260] 11.2 Ordem de decodificação de acordo com a figura 4[000260] 11.2 Decoding order according to figure 4

[000261] A seguir, a ordem de decodificação dos valores espectrais será descrita.[000261] Next, the order of decoding the spectral values will be described.

[000262] Os coeficientes espectrais quantizados “x_ac_dec[]” são silenciosamente codificados e transmitidos (por exemplo, no fluxo de bits) começando do coeficiente com frequência mais baixa e continuando até o coeficiente com frequência mais alta.[000262] The quantized spectral coefficients “x_ac_dec[]” are silently encoded and transmitted (e.g., in the bit stream) starting from the coefficient with the lowest frequency and continuing to the coefficient with the highest frequency.

[000263] Consequentemente, os coeficientes espectrais quantizados “x_ac_dec[]” são silenciosamente codificados começando do coeficiente com frequência mais baixa e continuando ao coeficiente com frequência mais alta. Os coeficientes espectrais quantizados são decodificados por grupos de dois coeficientes sucessivos (por exemplo, adjacentes na frequência) a e b reunindo em um tuplo duplo (a,b) (também designado como {a,b}). Deve ser observado aqui que os coeficientes espectrais quantizados são às vezes designados como “qdec”.[000263] Consequently, the quantized spectral coefficients “x_ac_dec[]” are silently encoded starting from the lowest frequency coefficient and continuing to the highest frequency coefficient. The quantized spectral coefficients are decoded by groups of two successive (e.g., adjacent in frequency) coefficients a and b assembling into a double tuple (a,b) (also designated as {a,b}). It should be noted here that quantized spectral coefficients are sometimes designated as “qdec”.

[000264] Os coeficientes decodificados “x_ac_dec[]” para um modo de domínio de frequência (por exemplo, coeficientes decodificados para uma codificação de áudio avançado, por exemplo, obtido utilizando uma transformação de cosseno discreto modificado, conforme discutido em ISO/IEC 14496, parte 3, subparte 4) são então armazenados em uma matriz “x_ac_quant[g][win][sfb][bin]”. A ordem de transmissão das senhas de codificação silenciosa é de modo que quando elas são decodificadas na ordem recebida e armazenada na matriz, “bin” é o índice que aumenta mais rapidamente, e “g” é o índice que aumenta mais lentamente. Dentro de uma senha, a ordem da decodificação é a,b (ou seja, a, e então b).[000264] The decoded coefficients “x_ac_dec[]” for a frequency domain mode (e.g., decoded coefficients for an advanced audio encoding, e.g., obtained using a modified discrete cosine transformation, as discussed in ISO/IEC 14496 , part 3, subpart 4) are then stored in an array “x_ac_quant[g][win][sfb][bin]”. The transmission order of silently encoded passwords is such that when they are decoded in the order received and stored in the array, “bin” is the fastest-increasing index, and “g” is the slowest-increasing index. Within a password, the decryption order is a,b (that is, a, then b).

[000265] Os coeficientes decodificados “x_ac_dec[]” para a excitação codificada por transformação (TCX) são armazenados, por exemplo, diretamente em uma matriz “x_tcx_invquant[win][bin]”, e uma ordem da transmissão da senha de codificação silenciosa é de modo que quando elas são decodificadas na ordem recebida e armazenada na matriz “bin” é o índice que aumenta mais rapidamente, e “win” é o índice que aumenta mais lentamente. Dentro de uma senha, uma ordem da decodificação é a, b. Em outras palavras, se os valores espectrais descrevem uma excitação codificada por transformação do filtro de previsão linear de um codificador de discurso, os valores espectrais a, b são associados às frequências adjacentes e de aumento da excitação codificada por transformação. Os coeficientes espectrais associados a uma frequência inferior são tipicamente codificados e decodificados antes de um coeficiente espectral associado a uma frequência mais alta.[000265] The decoded coefficients “x_ac_dec[]” for the transformation coded excitation (TCX) are stored, for example, directly in an array “x_tcx_invquant[win][bin]”, and a silent coding password transmission order is such that when they are decoded in the order received and stored in the array “bin” is the index that increases most quickly, and “win” is the index that increases most slowly. Within a password, a decryption order is a, b. In other words, if the spectral values describe a transformation-encoded excitation of the linear prediction filter of a speech encoder, the spectral values a, b are associated with the adjacent and rising frequencies of the transformation-encoded excitation. Spectral coefficients associated with a lower frequency are typically encoded and decoded before a spectral coefficient associated with a higher frequency.

[000266] Notavelmente, o decodificador de áudio 200 pode ser configurado para aplicar a representação decodificada de domínio de frequência 232, que é provida pelo decodificador aritmético 230, para uma geração “direta” de uma representação do sinal de áudio de domínio de tempo que utiliza uma transformação do sinal de domínio de frequência em domínio de tempo e para uma provisão “indireta” de uma representação do sinal de áudio de domínio de tempo que utiliza um decodificador de domínio de frequência em domínio de tempo e um filtro de previsão linear excitado pela saída do transformador de sinal de domínio de frequência em domínio de tempo.[000266] Notably, the audio decoder 200 can be configured to apply the decoded frequency domain representation 232, which is provided by the arithmetic decoder 230, to a “direct” generation of a time domain audio signal representation that utilizes a frequency-domain to time-domain signal transformation and for an “indirect” provision of a time-domain audio signal representation that utilizes a time-domain frequency-domain decoder and an excited linear prediction filter by the output of the signal transformer from frequency domain to time domain.

[000267] Em outras palavras, o decodificador aritmético, a funcionalidade que é discutida aqui em detalhes, é bem adequada de valores espectrais de decodificação de uma representação de domínio de frequência de tempo de um conteúdo de áudio codificado no domínio de frequência, e para a provisão de uma representação de domínio de frequência de tempo de um sinal de estímulo para um filtro de previsão linear adaptado para decodificar (ou sintetizar) um sinal de discurso codificado no domínio de previsão linear. Assim, o decodificador aritmético é bem adequado para uso em um decodificador de áudio que pode lidar com o conteúdo de áudio codificado de domínio de frequência e conteúdo de áudio codificado de domínio de frequência previsivo linear (modo de excitação codificada por transformação-domínio de previsão linear).[000267] In other words, the arithmetic decoder, the functionality of which is discussed here in detail, is well suited to decoding spectral values of a time-frequency domain representation of an audio content encoded in the frequency domain, and to the provision of a time-frequency domain representation of a stimulus signal to a linear prediction filter adapted to decode (or synthesize) a speech signal encoded in the linear prediction domain. Thus, the arithmetic decoder is well suited for use in an audio decoder that can handle both frequency domain encoded audio content and linear predictive frequency domain encoded audio content (transformation-domain encoded excitation mode). linear).

[000268] 11.3 Inicialização de contexto de acordo com as figuras 5a e 5b[000268] 11.3 Context initialization according to figures 5a and 5b

[000269] A seguir, a inicialização de contexto (também designada como um “mapeamento de contexto”), que é realizada em uma etapa 310, será descrita.[000269] Next, context initialization (also referred to as a “context mapping”), which is performed in step 310, will be described.

[000270] A inicialização de contexto compreende um mapeamento entre um contexto anterior e um contexto corrente de acordo com o algoritmo “arith_map_context()”, um primeiro exemplo do que é mostrado na figura 5a e um segundo exemplo do que é mostrado na figura 5b.[000270] Context initialization comprises a mapping between a previous context and a current context according to the “arith_map_context()” algorithm, a first example of what is shown in figure 5a and a second example of what is shown in figure 5b .

[000271] Como pode ser visto, o contexto corrente é armazenado em uma variável global “q[2][n_context]” que toma a forma de uma matriz tendo uma primeira dimensão de 2 e uma segunda dimensão de “n_context”. Um contexto anterior pode opcionalmente (mas não necessariamente) ser armazenado em uma variável “qs[n_context]” que toma a forma da tabela tendo uma dimensão de “n_context” (se for utilizado).[000271] As can be seen, the current context is stored in a global variable “q[2][n_context]” which takes the form of a matrix having a first dimension of 2 and a second dimension of “n_context”. A previous context can optionally (but not necessarily) be stored in a variable “qs[n_context]” which takes the form of the table having a dimension of “n_context” (if used).

[000272] Tendo como referência o algoritmo de exemplo “arith_map_context” na figura 5a, a variável de entrada N descreve um comprimento de uma janela corrente e a variável de entrada “arith_reset_flag” indica se o contexto deve ser redefinido. Além disso, a variável global “previous_N” descreve um comprimento de uma janela prévia. Deve ser observado aqui que tipicamente um número de valores espectrais associado a uma janela é, pelo menos aproximadamente, igual à metade de um comprimento da dita janela em termos de amostras de domínio de tempo. Além disso, deve ser observado que um número de 2 tuplos de valores espectrais é, consequentemente, pelo menos aproximadamente igual a um quarto de um comprimento da dita janela em termos de amostras de domínio de tempo.[000272] With reference to the example algorithm “arith_map_context” in figure 5a, the input variable N describes a length of a current window and the input variable “arith_reset_flag” indicates whether the context should be reset. Furthermore, the global variable “previous_N” describes a length of a previous window. It should be noted here that typically a number of spectral values associated with a window is at least approximately equal to half a length of said window in terms of time domain samples. Furthermore, it should be noted that a 2-tuple number of spectral values is consequently at least approximately equal to a quarter of a length of said window in terms of time domain samples.

[000273] Primeiro, deve ser observado que o indicador “arith_reset_flag” determina se o contexto deve ser redefinido.[000273] First, it should be noted that the “arith_reset_flag” indicator determines whether the context should be reset.

[000274] Tendo como referência o exemplo da figura 5a, o mapeamento do contexto pode ser realizado de acordo com o algoritmo “arith_map_context()”. Deve ser observado aqui que a função “arith_map_context()” define as entradas “q[0][j]” da matriz de contexto corrente q a zero para j=0 aj=N/4-1, se o indicador “arith_reset_flag” estiver ativo e consequentemente indica que o contexto deve ser redefinido. Caso contrário, ou seja, se o indicador “arith_reset_flag” estiver inativo, as entradas “q[0][j]” da matriz de contexto corrente q são derivadas das entradas “q[1][k]” da matriz de contexto corrente q. Deve ser observado que a função “arith_map_context()” de acordo com a figura 5a define as entradas “q[0][j]” da matriz de contexto corrente q aos valores “q[1][k]” da matriz de contexto corrente q, se o número de valores espectrais associado ao corrente (por exemplo, codificado pelo domínio de frequência) a estrutura de áudio for idêntico ao número de valores espectrais associado à estrutura de áudio anterior para j=k=0 a j=k=N/4-1.[000274] Taking the example in figure 5a as a reference, context mapping can be carried out according to the “arith_map_context()” algorithm. It should be noted here that the “arith_map_context()” function sets the entries “q[0][j]” of the current context matrix q to zero for j=0 to j=N/4-1, if the “arith_reset_flag” indicator is active and consequently indicates that the context must be redefined. Otherwise, that is, if the “arith_reset_flag” indicator is inactive, the entries “q[0][j]” of the current context matrix q are derived from the entries “q[1][k]” of the current context matrix q. It should be noted that the function “arith_map_context()” according to figure 5a sets the entries “q[0][j]” of the current context matrix q to the values “q[1][k]” of the context matrix current q, if the number of spectral values associated with the current (e.g., frequency domain encoded) audio structure is identical to the number of spectral values associated with the previous audio structure for j=k=0 to j=k=N /4-1.

[000275] Um mapeamento mais complicado é realizado se o número de valores espectrais que está associado à estrutura corrente de áudio presente for diferente do número de valores espectrais que está associado à estrutura de áudio anterior. Entretanto, detalhes referentes ao mapeamento neste caso não são particularmente relevantes para esta ideia principal da presente invenção, de modo que a referência é feita ao código do pseudo- programa da figura 5a para detalhes.[000275] A more complicated mapping is performed if the number of spectral values that are associated with the current audio structure is different from the number of spectral values that are associated with the previous audio structure. However, details regarding the mapping in this case are not particularly relevant to this main idea of the present invention, so reference is made to the pseudo-program code of Figure 5a for details.

[000276] Além disso, um valor de inicialização para o valor de contexto corrente numérico c é retornado pela função “arith_map_context()”. Este valor de inicialização é, por exemplo, igual ao valor da entrada “q[0][0]” mudada à esquerda em 12 bits. Assim, o valor de contexto (corrente) numérico c é apropriadamente inicializado para uma atualização iterativa.[000276] Additionally, an initialization value for the current numeric context value c is returned by the “arith_map_context()” function. This initialization value is, for example, equal to the value of the input “q[0][0]” shifted left by 12 bits. Thus, the numeric context (current) value c is appropriately initialized for an iterative update.

[000277] Além disso, a figura 5b mostra outro exemplo de um algoritmo “arith_map_context()” que pode de modo alternativo ser utilizado. Para detalhes, a referência é feita ao código do pseudo-programa na figura 5b.[000277] Furthermore, figure 5b shows another example of an “arith_map_context()” algorithm that can alternatively be used. For details, reference is made to the pseudo-program code in Figure 5b.

[000278] Para resumir o mencionado acima, o indicador “arith_reset_flag” determina se o contexto deve ser redefinido. Se o indicador for verdadeiro, um sub-algoritmo de redefinição 500a do algoritmo “arith_map_context()” é chamado. De modo alternativo, entretanto, se o indicador “arith_reset_flag” estiver inativo (que indica que nenhuma redefinição do contexto deve ser realizada), o processo de decodificação começa com uma fase de inicialização onde o vetor do elemento de contexto (ou matriz) q é atualizado copiando e mapeando os elementos de contexto da estrutura prévia armazenados em q[1][] em q[0][]. Os elementos de contexto dentro de q são armazenados em 4 bits por 2 tuplos. A cópia e/ou mapeamento do elemento de contexto são realizados em um sub- algoritmo 500b.[000278] To summarize the above, the “arith_reset_flag” indicator determines whether the context should be reset. If the indicator is true, a reset sub-algorithm 500a of the “arith_map_context()” algorithm is called. Alternatively, however, if the “arith_reset_flag” indicator is inactive (which indicates that no context reset should be performed), the decoding process begins with an initialization phase where the context element vector (or matrix) q is updated by copying and mapping the previous structure context elements stored in q[1][] into q[0][]. The context elements within q are stored in 4 bits by 2 tuples. The copying and/or mapping of the context element is performed in a sub-algorithm 500b.

[000279] Além disso, deve ser observado que se o contexto não pode ser confiavelmente determinado, por exemplo, se os dados da estrutura anterior não estiverem disponíveis, e se “arith_reset_flag” não for definida, então a decodificação dos dados espectrais não pode ser continuada e a leitura do elemento atual “arith_data()” deve ser pulada.[000279] Furthermore, it should be noted that if the context cannot be reliably determined, for example, if the previous structure data is not available, and if “arith_reset_flag” is not defined, then decoding of the spectral data cannot be continued and reading the current element “arith_data()” must be skipped.

[000280] No exemplo da figura 5b, o processo de decodificação começa com uma fase de inicialização onde um mapeamento é feito entre o contexto anterior salvo armazenado em qs e o contexto da estrutura corrente q. O contexto anterior qs é armazenado em 2 bits por linha de frequência.[000280] In the example of figure 5b, the decoding process begins with an initialization phase where a mapping is made between the previous saved context stored in qs and the context of the current structure q. The previous context qs is stored in 2 bits per frequency line.

[000281] 11.4 Cálculo do valor de estado de acordo com as figuras 5c e 5d[000281] 11.4 Calculation of the state value according to figures 5c and 5d

[000282] A seguir, o cálculo do valor de estado 312a será descrito em mais detalhes.[000282] Next, the calculation of the state value 312a will be described in more detail.

[000283] Um primeiro algoritmo de exemplo será descrito tendo como referência a figura 5c e um segundo algoritmo de exemplo será descrito tendo como referência a figura 5d.[000283] A first example algorithm will be described with reference to figure 5c and a second example algorithm will be described with reference to figure 5d.

[000284] Deve ser observado que o valor de contexto corrente numérico c (conforme mostrado na figura 3) pode ser obtido como um valor de retorno da função “arith_get_context(c,i,N)”, uma representação do código do pseudo- programa que é mostrada na figura 5c. De modo alternativo, entretanto, o valor de contexto corrente numérico c pode ser obtido como um valor de retorno da função “arith_get_context(c,i)”, uma representação do código do pseudo- programa que é mostrada na figura 5d.[000284] It should be noted that the current numeric context value c (as shown in figure 3) can be obtained as a return value from the function “arith_get_context(c,i,N)”, a representation of the pseudo-program code which is shown in figure 5c. Alternatively, however, the current numeric context value c can be obtained as a return value from the function “arith_get_context(c,i)”, a representation of the pseudo-program code that is shown in Figure 5d.

[000285] Referente ao cálculo do valor de estado, a referência é também feita à figura 4, que mostra o contexto utilizado para uma avaliação de estado, ou seja, para o cálculo de um valor de contexto corrente numérico c. A figura 4 mostra uma representação bidimensional de valores espectrais, sobre o tempo e frequência. Uma abscissa 410 descreve o tempo, e uma ordenada 412 descreve a frequência. Como pode ser visto na figura 4, um tuplo 420 de valores espectrais para decodificar (preferivelmente que utiliza o valor de contexto corrente numérico), é associado a um índice de tempo t0 e um índice de frequência i. Como pode ser visto, para o índice de tempo t0, os tuplos tendo índices de frequência i-1, i-2, e i-3 já são decodificados no tempo cujos valores espectrais do tuplo 120, tendo o índice de frequência i, devem ser decodificados. Como pode ser visto da figura 4, um valor espectral 430 tendo um índice de tempo t0 e um índice de frequência i-1 já é decodificado antes de o tuplo 420 de valores espectrais serem decodificados, e o tuplo 430 de valores espectrais é considerado para o contexto que é utilizado para a decodificação do tuplo 420 de valores espectrais. De forma semelhante, um tuplo 440 de valores espectrais tendo um índice de tempo t0-1 e um índice de frequência de i-1, um tuplo 450 de valores espectrais tendo um índice de tempo t0-1 e um índice de frequência de i, e um tuplo 460 de valores espectrais tendo um índice de tempo t0-1 e um índice de frequência de i+1, já é decodificado antes de o tuplo 420 de valores espectrais ser decodificado, e são considerados para a determinação do contexto, que é utilizado para decodificar o tuplo 420 de valores espectrais. Os valores espectrais (coeficientes) já decodificados no tempo quando os valores espectrais do tuplo 420 são decodificados e considerados para o contexto são mostrados por um quadrado sombreado. Em contraste, alguns outros valores espectrais já decodificados (no tempo quando os valores espectrais do tuplo 420 são decodificados), mas não considerados para o contexto (para a decodificação dos valores espectrais do tuplo 420) são representados por quadrados tendo linhas tracejadas, e outros valores espectrais (que ainda não são decodificados no tempo quando os valores espectrais do tuplo 420 são decodificados) são mostrados por círculos tendo linhas tracejadas. Os tuplos representados por quadrados tendo linhas tracejadas e os tuplos representados por círculos tendo linhas tracejadas não são utilizados para determinar o contexto de decodificação dos valores espectrais do tuplo 420.[000285] Regarding the calculation of the state value, reference is also made to figure 4, which shows the context used for a state evaluation, that is, for the calculation of a numerical current context value c. Figure 4 shows a two-dimensional representation of spectral values, over time and frequency. An abscissa 410 describes time, and an ordinate 412 describes frequency. As can be seen in Figure 4, a tuple 420 of spectral values to decode (preferably using the current numeric context value), is associated with a time index t0 and a frequency index i. As can be seen, for time index t0, the tuples having frequency indexes i-1, i-2, and i-3 are already decoded at the time whose spectral values of tuple 120, having frequency index i, must be decoded. As can be seen from Figure 4, a spectral value 430 having a time index t0 and a frequency index i-1 is already decoded before the tuple 420 of spectral values are decoded, and the tuple 430 of spectral values is considered for the context that is used for decoding the 420-tuple of spectral values. Similarly, a tuple 440 of spectral values having a time index t0-1 and a frequency index of i-1, a tuple 450 of spectral values having a time index t0-1 and a frequency index of i, and a tuple 460 of spectral values having a time index t0-1 and a frequency index of i+1, is already decoded before the tuple 420 of spectral values is decoded, and are considered for determining the context, which is used to decode the 420-tuple of spectral values. The spectral values (coefficients) already decoded at the time when the spectral values of tuple 420 are decoded and considered for context are shown by a shaded square. In contrast, some other spectral values already decoded (at the time when the spectral values of tuple 420 are decoded) but not considered for context (for decoding the spectral values of tuple 420) are represented by squares having dashed lines, and others Spectral values (which are not yet decoded in time when the spectral values of tuple 420 are decoded) are shown by circles having dashed lines. Tuples represented by squares having dashed lines and tuples represented by circles having dashed lines are not used to determine the decoding context of the spectral values of tuple 420.

[000286] Entretanto, deve ser observado que alguns destes valores espectrais, que não são utilizados para o cálculo “regular” ou “normal” do contexto de decodificação dos valores espectrais do tuplo 420 podem, entretanto, ser avaliados para a detecção de diversos valores espectrais adjacentes previamente decodificados que cumprem, individualmente ou juntos, uma condição predeterminada referente às suas magnitudes. Detalhes referentes a esta questão serão discutidos abaixo.[000286] However, it should be noted that some of these spectral values, which are not used for the “regular” or “normal” calculation of the decoding context of the spectral values of tuple 420 can, however, be evaluated for the detection of different values previously decoded adjacent spectra that fulfill, individually or together, a predetermined condition regarding their magnitudes. Details regarding this issue will be discussed below.

[000287] Agora com referência à figura 5c, detalhes do algoritmo “arith_get_context(c,i,N)” serão descritos. A figura 5c mostra a funcionalidade da dita função “arith_get_context(c,i,N)” na forma de um código do pseudo-programa, que utiliza as convenções da linguagem C e/ou linguagem C++ bem conhecidas. Assim, outros detalhes referentes ao cálculo do valor de contexto corrente numérico “c” que é realizado pela função “arith_get_context(c,i,N)” serão descritos.[000287] Now with reference to figure 5c, details of the “arith_get_context(c,i,N)” algorithm will be described. Figure 5c shows the functionality of said function “arith_get_context(c,i,N)” in the form of a pseudo-program code, which uses the conventions of the well-known C language and/or C++ language. Thus, other details regarding the calculation of the current numeric context value “c” which is performed by the function “arith_get_context(c,i,N)” will be described.

[000288] Deve ser observado que a função “arith_get_context(c,i,N)” recebe, como variáveis de entrada, um “contexto de estado antigo”, que pode ser descrito por um valor de contexto prévio numérico c. A função “arith_get_context(c,i,N)” também recebe, como uma variável de entrada, um índice i de um tuplo duplo de valores espectrais para decodificar. O índice i é tipicamente um índice de frequência. Uma variável de entrada N descreve um comprimento da janela de uma janela, na qual os valores espectrais são decodificados.[000288] It should be noted that the function “arith_get_context(c,i,N)” receives, as input variables, an “old state context”, which can be described by a numerical previous context value c. The function “arith_get_context(c,i,N)” also receives, as an input variable, an index i of a double tuple of spectral values to decode. The index i is typically a frequency index. An input variable N describes a window length of a window, in which spectral values are decoded.

[000289] A função “arith_get_context(c,i,N)” provê, como um valor de saída, uma versão atualizada da variável de entrada c, que descreve um contexto de estado atualizado, e que pode ser considerado como um valor de contexto corrente numérico. Para resumir, a função “arith_get_context(c,i,N)” recebe um valor de contexto prévio numérico c como uma variável de entrada e provê uma versão atualizada deste, que é considerada como um valor de contexto corrente numérico. Além disso, a função “arith_get_context” considera as variáveis i, N, e também avalia a matriz “global” q[][].[000289] The function “arith_get_context(c,i,N)” provides, as an output value, an updated version of the input variable c, which describes an updated state context, and which can be considered as a context value numeric current. To summarize, the function “arith_get_context(c,i,N)” takes a previous numeric context value c as an input variable and provides an updated version of it, which is considered as a current numeric context value. Furthermore, the “arith_get_context” function considers the variables i, N, and also evaluates the “global” matrix q[][].

[000290] Referente aos detalhes da função “arith_get_context(c,i,N)”, deve ser observado que a variável c, que inicialmente representa o valor de contexto prévio numérico em uma forma binária, é mudada à direita em 4 bits em uma etapa 504a. Assim, os quatro bits menos significativos do valor de contexto prévio numérico (representado pela variável de entrada c) são descartados. Ainda, os pesos numéricos de outros bits dos valores de contexto prévios numéricos são reduzidos, por exemplo, um fator de 16.[000290] Referring to the details of the function “arith_get_context(c,i,N)”, it should be noted that the variable c, which initially represents the numeric previous context value in a binary form, is shifted to the right by 4 bits in a step 504a. Thus, the four least significant bits of the numeric prior context value (represented by the input variable c) are discarded. Furthermore, the numeric weights of other bits of the numeric prior context values are reduced, for example, by a factor of 16.

[000291] Além disso, se o índice i do tuplo duplo for menor que N/4-1, ou seja, não assume um valor máximo, o valor de contexto corrente numérico é modificado em que o valor da entrada q[0][i+1] é adicionado aos bits 12 a 15 (ou seja, aos bits tendo um peso numérico de 212, 213, 214, e 215) do valor de contexto mudado que é obtido na etapa 504a. Para esta finalidade, a entrada q[0][i+1] da matriz q[][] (ou, mais precisamente, uma representação binária do valor representado pela dita entrada) é mudada à esquerda em 12 bits. A versão mudada do valor representado pela entrada q[0][i+1] é então adicionada ao valor de contexto c, que é derivado na etapa 504a, ou seja, a representação numérica do valor de contexto prévio numérico um mudado por bit (mudado à direita em 4 bits). Deve ser observado aqui que a entrada q [0][i+1] da matriz q[][] representa um valor da sub- região associado a uma parte prévia do conteúdo de áudio (por exemplo, uma parte do conteúdo de áudio tendo índice de tempo t0- 1, conforme definido com referência à figura 4), e com uma frequência mais alta (por exemplo, uma frequência tendo um índice de frequência i+1, conforme definido com referência à figura 4) que o tuplo de valores espectrais a ser atualmente decodificado (que utiliza o valor de contexto corrente numérico c emitido pela função “arith_get_context(c,i,N)”). Em outras palavras, se o tuplo 420 de valores espectrais deve ser decodificado utilizando o valor de contexto corrente numérico, a entrada q[0][i+1] pode ter como base o tuplo 460 de valores espectrais previamente decodificados.[000291] Furthermore, if the index i of the double tuple is less than N/4-1, that is, it does not assume a maximum value, the current numeric context value is modified in that the value of the input q[0][ i+1] is added to bits 12 to 15 (i.e., to bits having a numerical weight of 212, 213, 214, and 215) of the changed context value that is obtained in step 504a. For this purpose, the entry q[0][i+1] of the matrix q[][] (or, more precisely, a binary representation of the value represented by said entry) is left-shifted by 12 bits. The changed version of the value represented by the input q[0][i+1] is then added to the context value c, which is derived in step 504a, i.e., the numeric representation of the previous numeric context value one bit changed ( shifted right by 4 bits). It should be noted here that the entry q[0][i+1] of the matrix q[][] represents a subregion value associated with a prior piece of audio content (e.g., a piece of audio content having time index t0-1, as defined with reference to figure 4), and with a higher frequency (e.g., a frequency having a frequency index i+1, as defined with reference to figure 4) than the tuple of values spectral data currently being decoded (which uses the current numeric context value c issued by the “arith_get_context(c,i,N)” function). In other words, if the 420-tuple of spectral values is to be decoded using the current numeric context value, the input q[0][i+1] can be based on the 460-tuple of previously decoded spectral values.

[000292] Uma adição seletiva da entrada q[0][i+1] da matriz q[][] (mudada à esquerda em 12 bits) é mostrada no número de referência 504b. Como pode ser visto, a adição do valor representado pela entrada q[0][i+1] é naturalmente realizada somente se o índice de frequência i não designar um tuplo de valores espectrais tendo o índice de frequência mais alta i=N/4-1.[000292] A selective addition of the entry q[0][i+1] of the matrix q[][] (shifted left by 12 bits) is shown in reference number 504b. As can be seen, the addition of the value represented by the input q[0][i+1] is naturally performed only if the frequency index i does not designate a tuple of spectral values having the highest frequency index i=N/4 -1.

[000293] Subsequentemente, em uma etapa 504c, uma operação Boolean AND é realizada, na qual o valor da variável c é AND- combinado com um valor hexadecimal de 0xFFF0 para obter um valor atualizado da variável c. Realizando tal operação AND, os quatro bits menos significativos da variável c são efetivamente definidos a zero.[000293] Subsequently, in a step 504c, a Boolean AND operation is performed, in which the value of variable c is AND- combined with a hexadecimal value of 0xFFF0 to obtain an updated value of variable c. By performing such an AND operation, the four least significant bits of the variable c are effectively set to zero.

[000294] Em uma etapa 504d, o valor da entrada q[1][i-1] é adicionado ao valor da variável c, que é obtido pela etapa 504c, para então atualizar o valor da variável c. Entretanto, a dita atualização da variável c na etapa 504d é somente realizada se o índice de frequência i do tuplo duplo para decodificar for maior que zero. Deve ser observado que a entrada q[1][i-1] é um valor da sub-região de contexto com base em um tuplo de valores espectrais previamente decodificados da parte corrente do conteúdo de áudio para frequências menores que as frequências dos valores espectrais a ser decodificados que utilizam o valor de contexto corrente numérico. Por exemplo, a entrada q[1][i-1] da matriz q[][] pode ser associada ao tuplo 430 tendo o índice de tempo t0 e o índice de frequência i-1, se for assumido que o tuplo 420 de valores espectrais deve ser decodificado utilizando o valor de contexto corrente numérico retornado pela presente execução da função “arith_get_context(c,i,N)”.[000294] In a step 504d, the value of the input q[1][i-1] is added to the value of the variable c, which is obtained by step 504c, to then update the value of the variable c. However, said update of variable c in step 504d is only performed if the frequency index i of the double tuple to decode is greater than zero. It should be noted that the input q[1][i-1] is a context subregion value based on a tuple of previously decoded spectral values of the current part of the audio content for frequencies lower than the frequencies of the spectral values to be decoded using the current numeric context value. For example, the entry q[1][i-1] of the matrix q[][] can be associated with the tuple 430 having the time index t0 and the frequency index i-1, if it is assumed that the tuple 420 of Spectral values must be decoded using the current numeric context value returned by the current execution of the “arith_get_context(c,i,N)” function.

[000295] Para resumir, os bits 0, 1, 2, e 3 (ou seja, uma parte de quatro bits menos significativos) do valor de contexto prévio numérico são descartados na etapa 504a alternando-os da representação numérica binária do valor de contexto prévio numérico. Além disso, os bits 12, 13, 14, e 15 da variável mudada c (ou seja, do valor de contexto mudado prévio numérico) são definidos para ter valores definidos pelo valor da sub-região de contexto q[0][i+1] na etapa 504b. Os bits 0, 1, 2, e 3 do valor de contexto mudado prévio numérico (ou seja, bits 4, 5, 6, e 7 do valor de contexto prévio numérico original) são sobrescritos pelo valor da sub-região de contexto q[1][i-1] nas etapas 504c e 504d.[000295] To summarize, bits 0, 1, 2, and 3 (i.e., a portion of four least significant bits) of the numeric prior context value are discarded in step 504a by toggling them from the binary numeric representation of the context value numerical preview. Furthermore, bits 12, 13, 14, and 15 of the changed variable c (i.e., of the previous numeric changed context value) are set to have values defined by the value of the context subregion q[0][i+ 1] in step 504b. Bits 0, 1, 2, and 3 of the numeric prior changed context value (that is, bits 4, 5, 6, and 7 of the original numeric prior context value) are overwritten by the value of the context subregion q[ 1][i-1] in steps 504c and 504d.

[000296] Consequentemente, pode ser dito que os bits 0 a 3 do valor de contexto prévio numérico representam o valor da sub- região de contexto associado ao tuplo 432 de valores espectrais, os bits 4 a 7 do valor de contexto prévio numérico representam o valor da sub-região de contexto associado a um tuplo 434 de valores espectrais previamente decodificados, os bits 8 a 11 do valor de contexto prévio numérico representam o valor da sub- região de contexto associado ao tuplo 440 dos valores espectrais previamente decodificados e os bits 12 a 15 do valor de contexto prévio numérico representam um valor da sub-região de contexto associado ao tuplo 450 de valores espectrais previamente decodificados. O valor de contexto prévio numérico, que é inserido na função “arith_get_context(c,i,N)”, é associado a uma decodificação do tuplo 430 de valores espectrais.[000296] Consequently, it can be said that bits 0 to 3 of the numeric prior context value represent the value of the context subregion associated with tuple 432 of spectral values, bits 4 to 7 of the numeric prior context value represent the value of the context subregion associated with a tuple 434 of previously decoded spectral values, bits 8 to 11 of the numeric prior context value represent the value of the context subregion associated with the tuple 440 of previously decoded spectral values, and the bits 12 to 15 of the numerical prior context value represent a context subregion value associated with the 450-tuple of previously decoded spectral values. The numeric prior context value, which is entered in the function “arith_get_context(c,i,N)”, is associated with a decoding of the 430 tuple of spectral values.

[000297] O valor de contexto corrente numérico, que é obtido como uma variável de saída da função “arith_get_context(c,i,N)”, é associado a uma decodificação do tuplo 420 de valores espectrais. Assim, os bits 0 a 3 dos valores de contexto corrente numérico descrevem o valor da sub-região de contexto associado ao tuplo 430 dos valores espectrais, os bits 4 a 7 do valor de contexto corrente numérico descrevem o valor da sub-região de contexto associado ao tuplo 440 de valores espectrais, os bits 8 a 11 do valor de contexto corrente numérico descrevem o valor numérico da sub-região associado ao tuplo 450 de valor espectral e os bits 12 a 15 do valor de contexto corrente numérico descreveu o valor da sub-região de contexto associado ao tuplo 460 de valores espectrais. Assim, pode ser visto que uma parte do valor de contexto prévio numérico, a saber, os bits 8 a 15 do valor de contexto prévio numérico, são também incluídos no valor de contexto corrente numérico, como os bits 4 a 11 do valor de contexto corrente numérico. Em contraste, os bits 0 a 7 do valor de contexto corrente prévio numérico são descartados ao derivar a representação numérica do valor de contexto corrente numérico da representação numérica do valor de contexto prévio numérico.[000297] The current numeric context value, which is obtained as an output variable of the function “arith_get_context(c,i,N)”, is associated with a decoding of the tuple 420 of spectral values. Thus, bits 0 to 3 of the numeric current context value describe the value of the context subregion associated with the 430 tuple of the spectral values, bits 4 to 7 of the numeric current context value describe the value of the context subregion associated with the tuple 440 of spectral values, bits 8 to 11 of the numeric current context value describe the numeric value of the subregion associated with the tuple 450 of spectral value, and bits 12 to 15 of the numeric current context value describe the value of the context subregion associated with the 460-tuple of spectral values. Thus, it can be seen that a part of the numeric prior context value, namely bits 8 to 15 of the numeric prior context value, are also included in the numeric current context value, such as bits 4 to 11 of the numeric prior context value. numeric current. In contrast, bits 0 through 7 of the numeric prior current context value are discarded when deriving the numeric representation of the numeric current context value from the numeric prior context value representation.

[000298] Em uma etapa 504e, a variável c que representa o valor de contexto corrente numérico é seletivamente atualizada se o índice de frequência i do tuplo duplo para decodificar for maior que um número predeterminado de, por exemplo, 3. Neste caso, ou seja, se i for maior que 3, é determinado se a soma dos valores da sub-região de contexto q[1][i-3], q[1][i-2], e q[1][i-1] for menor que (ou igual a) um valor predeterminado de, por exemplo, 5. Caso seja descoberto que a soma dos ditos valores da sub-região de contexto for menor que o dito valor predeterminado, um valor hexadecimal de, por exemplo, 0x10000, é adicionado à variável c. Assim, a variável c é definida de modo que a variável c indica se há uma condição na qual os valores da sub-região de contexto q[1][i-3], q[1][i-2], e q[1][i-1] compreendem um valor de soma particularmente pequeno. Por exemplo, o bit 16 do valor de contexto corrente numérico pode agir como um indicador para indicar tal condição.[000298] In a step 504e, the variable c representing the current numeric context value is selectively updated if the frequency index i of the double tuple to decode is greater than a predetermined number of, for example, 3. In this case, either that is, if i is greater than 3, it is determined whether the sum of the values of the context subregion q[1][i-3], q[1][i-2], and q[1][i-1 ] is less than (or equal to) a predetermined value of, for example, 5. If it is discovered that the sum of said context subregion values is less than said predetermined value, a hexadecimal value of, e.g. 0x10000, is added to variable c. Thus, the variable c is defined such that the variable c indicates whether there is a condition in which the context subregion values q[1][i-3], q[1][i-2], and q[ 1][i-1] comprise a particularly small sum value. For example, bit 16 of the current numeric context value may act as an indicator to indicate such a condition.

[000299] Para concluir, o valor de retorno da função “arith_get_context(c,i,N)” é determinado pelas etapas 504a, 504b, 504c, 504d, e 504e, onde o valor de contexto corrente numérico é derivado do valor de contexto prévio numérico nas etapas 504a, 504b, 504c, e 504d, e em que um indicador indicando um ambiente de valores espectrais previamente decodificados tendo, em média, valores absolutos particularmente pequenos, é derivado na etapa 504e e adicionado à variável c. Assim, o valor da variável c obtido nas etapas 504a, 504b, 504c, 504d é retornado, em uma etapa 504f, como um valor de retorno da função “arith_get_context(c,i,N)”, se uma condição avaliada na etapa 504e não for cumprida. Em contraste, o valor da variável c, que é derivado nas etapas 504a, 504b, 504c, e 504d, é aumentado pelo valor hexadecimal de 0x10000 e o resultado desta operação de aumento é retornado, na etapa 504e, se a condição avaliada na etapa 540e for cumprida.[000299] To conclude, the return value of the function “arith_get_context(c,i,N)” is determined by steps 504a, 504b, 504c, 504d, and 504e, where the current numeric context value is derived from the context value numerical prior in steps 504a, 504b, 504c, and 504d, and in which an indicator indicating an environment of previously decoded spectral values having, on average, particularly small absolute values, is derived in step 504e and added to the variable c. Thus, the value of the variable c obtained in steps 504a, 504b, 504c, 504d is returned, in a step 504f, as a return value of the function “arith_get_context(c,i,N)”, if a condition evaluated in step 504e is not fulfilled. In contrast, the value of variable c, which is derived in steps 504a, 504b, 504c, and 504d, is increased by the hexadecimal value of 0x10000 and the result of this increase operation is returned, in step 504e, if the condition evaluated in step 540e is fulfilled.

[000300] Para resumir o mencionado acima, deve ser observado que o decodificador silencioso emite 2 tuplos de coeficientes espectrais quantizados não assinados (conforme será descrito em mais detalhes abaixo). Primeiramente, o estado c do contexto é calculado com base nos coeficientes espectrais previamente decodificados “ao redor” do tuplo duplo para decodificar. Em uma realização preferida, o estado (que é, por exemplo, representado por um valor de contexto numérico) é adicionalmente atualizado utilizando o estado de contexto do último tuplo duplo decodificado (que é designado como um valor de contexto prévio numérico), considerando somente dois novos tuplos duplos (por exemplo, 2 tuplos 430 e 460). O estado é codificado nos 17 bits (por exemplo, utilizando uma representação numérica de um valor de contexto corrente numérico) e é retornado pela função “arith_get_context()”. Para detalhes, a referência é feita à representação do código do programa da figura 5c.[000300] To summarize the above, it should be noted that the silent decoder outputs 2 tuples of unsigned quantized spectral coefficients (as will be described in more detail below). First, the state c of the context is calculated based on the previously decoded spectral coefficients “around” the double tuple to decode. In a preferred embodiment, the state (which is, for example, represented by a numeric context value) is further updated using the context state of the last decoded double tuple (which is designated as a numeric prior context value), considering only two new double tuples (e.g. 2 tuples 430 and 460). The state is encoded in 17 bits (for example, using a numeric representation of a current numeric context value) and is returned by the “arith_get_context()” function. For details, reference is made to the program code representation of Figure 5c.

[000301] Além disso, deve ser observado que um código do pseudo-programa de uma realização alternativa da função “arith_get_context()” é mostrado na figura 5d. A função “arith_get_context(c,i)” de acordo com a figura 5d é semelhante à função “arith_get_context(c,i,N)” de acordo com a figura 5c. Entretanto, a função “arith_get_context(c,i)” de acordo com a figura 5d não compreende um manuseio especial ou decodificação de tuplos de valores espectrais que compreendem um índice mínimo de frequência de i=0 ou um índice máximo de frequência de i=N/4-1.[000301] Furthermore, it should be noted that a pseudo-program code of an alternative realization of the “arith_get_context()” function is shown in figure 5d. The function “arith_get_context(c,i)” according to figure 5d is similar to the function “arith_get_context(c,i,N)” according to figure 5c. However, the function “arith_get_context(c,i)” according to figure 5d does not comprise a special handling or decoding of tuples of spectral values that comprise a minimum frequency index of i=0 or a maximum frequency index of i= N/4-1.

[000302] 11.5 Seleção da regra de mapeamento[000302] 11.5 Mapping rule selection

[000303] A seguir, a seleção de uma regra de mapeamento, por exemplo, a tabela de frequências cumulativas que descreve um mapeamento de um valor de senha em um código de símbolo, será descrita. A seleção da regra de mapeamento é feita dependendo de um estado de contexto, que é descrito pelo valor de contexto corrente numérico c.[000303] Next, the selection of a mapping rule, for example, the cumulative frequency table that describes a mapping of a password value to a symbol code, will be described. The selection of the mapping rule is made depending on a context state, which is described by the numeric current context value c.

[000304] 11.5.1 Seleção da regra de mapeamento utilizando o algoritmo de acordo com a figura 5e[000304] 11.5.1 Selection of the mapping rule using the algorithm according to figure 5e

[000305] A seguir, a seleção de uma regra de mapeamento utilizando a função “arith_get_pk(c)” será descrita. Deve ser observado que a função “arith_get_pk()” é chamada no início do sub-algoritmo 312ba ao decodificar um valor de código “acod_m” para prover um tuplo de valores espectrais. Deve ser observado que a função “arith_get_pk(c)” é chamada com diferentes argumentos em diferentes iterações do algoritmo 312b. Por exemplo, em uma primeira iteração do algoritmo 312b, a função “arith_get_pk(c)” é chamada com um argumento que é igual ao valor de contexto corrente numérico c, provido pela prévia execução da função “arith_get_context(c,i,N)” na etapa 312a. Em contraste, em outras iterações do sub-algoritmo 312ba, a função “arith_get_pk(c)” é chamada com um argumento que é uma soma do valor de contexto corrente numérico c provida pela função “arith_get_context(c,i,N)” na etapa 312a, e uma versão de bit mudado do valor da variável “esc_nb”, em que o valor da variável “esc_nb” é mudado à esquerda em 17 bits. Assim, o valor de contexto corrente numérico c provido pela função “arith_get_context(c,i,N)” é utilizado como um valor de entrada da função “arith_get_pk()” na primeira iteração do algoritmo 312ba, ou seja, na decodificação de valores espectrais comparavelmente pequenos. Em contraste, ao decodificar valores espectrais comparavelmente maiores, a variável de entrada da função “arith_get_pk()” é modificada onde o valor da variável “esc_nb”, é levado em consideração, conforme é mostrado na figura 3.[000305] Next, the selection of a mapping rule using the “arith_get_pk(c)” function will be described. It should be noted that the function “arith_get_pk()” is called at the beginning of sub-algorithm 312ba when decoding a code value “acod_m” to provide a tuple of spectral values. It should be noted that the function “arith_get_pk(c)” is called with different arguments in different iterations of algorithm 312b. For example, in a first iteration of algorithm 312b, the function “arith_get_pk(c)” is called with an argument that is equal to the current numeric context value c, provided by the previous execution of the function “arith_get_context(c,i,N) ” in step 312a. In contrast, in other iterations of the 312ba sub-algorithm, the function “arith_get_pk(c)” is called with an argument that is a sum of the current numeric context value c provided by the function “arith_get_context(c,i,N)” in step 312a, and a bit-shifted version of the value of the variable “esc_nb”, in which the value of the variable “esc_nb” is left-shifted by 17 bits. Thus, the current numeric context value c provided by the function “arith_get_context(c,i,N)” is used as an input value of the function “arith_get_pk()” in the first iteration of the 312ba algorithm, that is, in decoding values comparably small spectra. In contrast, when decoding comparably larger spectral values, the input variable of the “arith_get_pk()” function is modified where the value of the variable “esc_nb” is taken into account, as shown in figure 3.

[000306] Agora com referência à figura 5e, que mostra uma representação do código do pseudo-programa de uma primeira realização da função “arith_get_pk(c)”, deve ser observado que a função “arith_get_pk()” recebe a variável c como um valor de entrada, em que a variável c descreve o estado do contexto, e em que a variável de entrada c da função “arith_get_pk()” é igual ao valor de contexto corrente numérico provido como uma variável de retorno da função “arith_get_context()” pelo menos em algumas situações. Além disso, deve ser observado que a função “arith_get_pk()” provê, como uma variável de saída, a variável “pki”, que descreve um índice de um modelo de probabilidade e que pode ser considerado como um valor de índice de regra de mapeamento.[000306] Now referring to figure 5e, which shows a representation of the pseudo-program code of a first realization of the function “arith_get_pk(c)”, it should be noted that the function “arith_get_pk()” receives the variable c as a input value, where the variable c describes the state of the context, and where the input variable c of the “arith_get_pk()” function is equal to the current numeric context value provided as a return variable of the “arith_get_context()” function ” at least in some situations. Furthermore, it should be noted that the function “arith_get_pk()” provides, as an output variable, the variable “pki”, which describes an index of a probability model and which can be considered as an index value of the rule of thumb. mapping.

[000307] Tendo como referência a figura 5e, pode ser visto que a função “arith_get_pk()” compreende uma inicialização da variável 506a, em que a variável “i_min” é inicializada para ter o valor de -1. Semelhantemente, a variável i é definida para ser igual à variável “i_min”, de modo que a variável i também seja inicializada a um valor de -1. A variável “i_max” é inicializada para assumir um valor que é menor, em 1, do que o número de entradas da tabela “ari_lookup_m[]” (detalhes que serão descritos tendo como referência a figura 21). Assim, as variáveis “i_min” e “i_max” definem um intervalo. Por exemplo, i_max pode ser inicializada ao valor 741.[000307] With reference to figure 5e, it can be seen that the function “arith_get_pk()” comprises an initialization of the variable 506a, in which the variable “i_min” is initialized to have the value of -1. Similarly, the variable i is defined to be equal to the variable “i_min”, so that the variable i is also initialized to a value of -1. The variable “i_max” is initialized to assume a value that is smaller, by 1, than the number of entries in the table “ari_lookup_m[]” (details that will be described with reference to figure 21). Thus, the variables “i_min” and “i_max” define an interval. For example, i_max can be initialized to the value 741.

[000308] Subsequentemente, uma pesquisa 506b é realizada para identificar um valor de índice que designa uma entrada da tabela “ari_hash_m”, de modo que o valor da variável de entrada c da função “arith_get_pk()” dentro de um intervalo definido pela dita entrada e uma entrada adjacente.[000308] Subsequently, a search 506b is performed to identify an index value designating an entry of the table “ari_hash_m”, such that the value of the input variable c of the function “arith_get_pk()” within a range defined by said entrance and an adjacent entrance.

[000309] Na pesquisa 506b, um sub-algoritmo 506ba é repetido, enquanto uma diferença entre as variáveis “i_max” e “i_min” for maior que 1. No sub-algoritmo 506ba, a variável i é definida para ser igual a um meio aritmético dos valores das variáveis “i_min” e “i_max”. Consequentemente, a variável i designa uma entrada da tabela “ari_hash_m[]” (conforme definido na representação em tabelas das figuras 22(1), 22(2), 22(3) e 22(4)) em um meio de um intervalo da tabela definido pelos valores das variáveis “i_min” e “i_max”. Subsequentemente, a variável j é definida para ser igual ao valor da entrada “ari_hash_m[i]” da tabela “ari_hash_m[]”.a variável j assume um valor definido por uma entrada da tabela “ari_hash_m[]”,cuja entrada permanece no meio de um intervalo da tabela definido pelas variáveis “i_min” e “i_max”. Subsequentemente, o intervalo definido pelas variáveis “i_min” e “i_max” é atualizado se o valor da variável de entrada c da função “arith_get_pk()” for diferente de um valor de estado definido pelos bits superiores da entrada de tabela “j=ari_hash_m[i]” da tabela “ari_hash_m[]”.Por exemplo, os “bits superiores” (bits 8 e acima) das entradas da tabela “ari_hash_m[]”descrevem valores de estado significativos. Assim, o valor “j>>8” descreve um valor de estado significativo representado pela entrada “j=ari_hash_m[i]” da tabela “ari_hash_m[]” designada pela tabela hash-valor de índice i. Assim, se o valor da variável c for menor que o valor “j>>8”, isto significa que o valor de estado descrito pela variável c é menor que um valor de estado significativo descrito pela entrada “ari_hash_m[i]” da tabela “ari_hash_m[]”. Neste caso, o valor da variável “i_max” é definido para ser igual ao valor da variável i, que por sua vez tem o efeito que um tamanho do intervalo definido por “i_min” e “i_max” é reduzido, em que o novo intervalo é aproximadamente igual à metade inferior do intervalo prévio. Se for observado que a variável de entrada c da função “arith_get_pk()” é maior que o valor “j>>8”, que significa que o valor de contexto descrito pela variável c é maior que um valor de estado significativo descrito pela entrada “ari_hash_m[i]” da matriz “ari_hash_m[]”, o valor da variável “i_min” é definido para ser igual ao valor da variável i. Assim, o tamanho do intervalo definido pelos valores das variáveis “i_min” e “i_max” é reduzido aproximadamente metade do tamanho do intervalo prévio, definido pelos valores prévios das variáveis “i_min” e “i_max”. Para ser mais preciso, o intervalo definido pelo valor atualizado da variável “i_min” e pelo valor prévio da variável (não mudado) “i_max” é aproximadamente igual à metade superior do intervalo prévio no caso em que o valor da variável c é maior que o valor de estado significativo definido pela entrada “ari_hash_m[i]”.[000309] In search 506b, a sub-algorithm 506ba is repeated as long as a difference between the variables “i_max” and “i_min” is greater than 1. In the sub-algorithm 506ba, the variable i is defined to be equal to one-half arithmetic of the values of the variables “i_min” and “i_max”. Consequently, the variable i designates a table entry “ari_hash_m[]” (as defined in the tabular representation of figures 22(1), 22(2), 22(3) and 22(4)) in the middle of a range of the table defined by the values of the variables “i_min” and “i_max”. Subsequently, variable j is set to be equal to the value of the entry “ari_hash_m[i]” of the table “ari_hash_m[]”. through a table range defined by the variables “i_min” and “i_max”. Subsequently, the range defined by the variables “i_min” and “i_max” is updated if the value of the input variable c of the function “arith_get_pk()” is different from a state value defined by the upper bits of the table entry “j=ari_hash_m [i]” of the “ari_hash_m[]” table. For example, the “high bits” (bits 8 and above) of the “ari_hash_m[]” table entries describe meaningful state values. Thus, the value “j>>8” describes a meaningful state value represented by the entry “j=ari_hash_m[i]” of the table “ari_hash_m[]” designated by the hash-value table of index i. Thus, if the value of variable c is less than the value “j>>8”, this means that the state value described by variable c is less than a significant state value described by the table entry “ari_hash_m[i]” “ari_hash_m[]”. In this case, the value of the variable “i_max” is set to be equal to the value of the variable i, which in turn has the effect that a range size defined by “i_min” and “i_max” is reduced, whereby the new range is approximately equal to the lower half of the previous range. If it is observed that the input variable c of the function “arith_get_pk()” is greater than the value “j>>8”, which means that the context value described by the variable c is greater than a significant state value described by the input “ari_hash_m[i]” from the array “ari_hash_m[]”, the value of the variable “i_min” is set to be equal to the value of the variable i. Thus, the size of the interval defined by the values of the variables “i_min” and “i_max” is reduced to approximately half the size of the previous interval, defined by the previous values of the variables “i_min” and “i_max”. To be more precise, the interval defined by the updated value of the variable “i_min” and the previous value of the (unchanged) variable “i_max” is approximately equal to the upper half of the previous interval in the case where the value of the variable c is greater than the meaningful state value defined by the “ari_hash_m[i]” entry.

[000310] Se, entretanto, for observado que o valor de contexto descrito pela variável de entrada c do algoritmo “arith_get_pk()” é igual ao valor de estado significativo definido pela entrada “ari_hash_m[i]” (ou seja, c==(j>>8)), um valor de índice de regra de mapeamento definido pelos 8 bits mais inferiores da entrada “ari_hash_m[i]” é retornado como o valor de retorno da função “arith_get_pk()” (instrução “return (j&0xFF)”).[000310] If, however, it is observed that the context value described by the input variable c of the algorithm “arith_get_pk()” is equal to the meaningful state value defined by the input “ari_hash_m[i]” (i.e. c== (j>>8)), a mapping rule index value defined by the lower 8 bits of the “ari_hash_m[i]” input is returned as the return value of the “arith_get_pk()” function (“return (j&0xFF) )”).

[000311] Para resumir o mencionado acima, uma entrada “ari_hash_m[i]”, os bits superiores (bits 8 e acima) dos quais descrevem um valor de estado significativo, é avaliada em cada iteração 506ba, e o valor de contexto (ou valor de contexto corrente numérico) descrito pela variável de entrada c da função “arith_get_pk()” é comparado com o valor de estado significativo descrito pela dita entrada de tabela “ari_hash_m[i]”. Se o valor de contexto representado pela variável de entrada c for menor que o valor de estado significativo representado pela entrada de tabela “ari_hash_m[i]”, o limite superior (descrito pelo valor “i_max”) do intervalo da tabela é reduzido, e se o valor de contexto descrito pela variável de entrada c é maior que o valor de estado significativo descrito pela entrada de tabela “ari_hash_m[i]”, o limite inferior (que é descrito pelo valor da variável “i_min”) do intervalo da tabela é aumentado. Em ambos os ditos casos, o sub-algoritmo 506ba é repetido, a menos que o tamanho do intervalo (definido pela diferença entre “i_max” e “i_min”) seja menor que, ou igual a, 1. Se, em contraste, o valor de contexto descrito pela variável c for igual ao valor de estado significativo descrito pela entrada de tabela “ari_hash_m[i]”, a função “arith_get_pk()” é abortada, em que o valor de retorno é definido pelos 8 bits mais inferiores da entrada de tabela “ari_hash_m[i]”.[000311] To summarize the above, an input “ari_hash_m[i]”, the upper bits (bits 8 and above) of which describe a meaningful state value, is evaluated at each 506ba iteration, and the context value (or numeric current context value) described by the input variable c of the function “arith_get_pk()” is compared with the meaningful state value described by said table entry “ari_hash_m[i]”. If the context value represented by the input variable c is less than the meaningful state value represented by the table entry “ari_hash_m[i]”, the upper limit (described by the value “i_max”) of the table range is reduced, and if the context value described by the input variable c is greater than the meaningful state value described by the table entry “ari_hash_m[i]”, the lower bound (which is described by the value of the variable “i_min”) of the table range is increased. In both said cases, sub-algorithm 506ba is repeated unless the size of the interval (defined by the difference between “i_max” and “i_min”) is less than, or equal to, 1. If, in contrast, the context value described by the variable c is equal to the meaningful state value described by the table entry “ari_hash_m[i]”, the function “arith_get_pk()” is aborted, where the return value is defined by the lowest 8 bits of the table entry “ari_hash_m[i]”.

[000312] Se, entretanto, a pesquisa 506b for finalizada por causa do tamanho do intervalo atingir seu valor mínimo (“i_max” - “i_min” é menor que, ou igual a, 1), o valor de retorno da função “arith_get_pk()” é determinado por uma entrada “ari_lookup_m[i_max]” da tabela “ari_lookup_m[]”, que pode ser vista no número de referência 506c. A tabela ari_lookup_m[] é preferivelmente escolhida conforme definido na representação em tabela da figura 21, e pode então ser igual à tabela ari_lookup_m[742]. Assim, as entradas da tabela “ari_hash_m[]” (que é preferivelmente igual à tabela ari_hash_m[742] conforme definido nas figuras 22(1), 22(2), 22(3), 22(4)) definem ambos os valores de estado significativo e limites dos intervalos. No sub- algoritmo 506ba, os limites de intervalo da pesquisa “i_min” e “i_max” são adaptados de forma iterativa, de modo que a entrada “ari_hash_m[i]” da tabela “ari_hash_m[]”, um índice da tabela hash i do qual permanece, pelo menos aproximadamente, no centro do intervalo da pesquisa definido pelos valores de limite de intervalo “i_min” e “i_max”, pelo menos aproxima um valor de contexto descrito pela variável de entrada c. É então atingido que o valor de contexto descrito pela variável de entrada c dentro de um intervalo definido por “ari_hash_m[i_min]” e “ari_hash_m[i_max]” depois da conclusão das iterações do sub- algoritmo 506ba, a menos que o valor de contexto descrito pela variável de entrada c seja igual a um valor de estado significativo descrito por uma entrada da tabela “ari_hash_m[]”.[000312] If, however, the 506b search is terminated because the range size reaches its minimum value (“i_max” - “i_min” is less than, or equal to, 1), the return value of the function “arith_get_pk( )” is determined by an entry “ari_lookup_m[i_max]” of the table “ari_lookup_m[]”, which can be seen in reference number 506c. The ari_lookup_m[] table is preferably chosen as defined in the table representation of figure 21, and can then be equal to the ari_lookup_m[742] table. Thus, the entries of the “ari_hash_m[]” table (which is preferably the same as the ari_hash_m[742] table as defined in figures 22(1), 22(2), 22(3), 22(4)) define both values of significant state and interval limits. In sub-algorithm 506ba, the search range limits “i_min” and “i_max” are adapted iteratively, so that the entry “ari_hash_m[i]” of the table “ari_hash_m[]”, an index of the hash table i which remains at least approximately in the center of the search range defined by the range boundary values “i_min” and “i_max”, at least approximates a context value described by the input variable c. It is then reached that the context value described by the input variable c within a range defined by “ari_hash_m[i_min]” and “ari_hash_m[i_max]” after the completion of the iterations of sub-algorithm 506ba, unless the value of context described by the input variable c is equal to a meaningful state value described by an entry in the “ari_hash_m[]” table.

[000313] Se, entretanto, a repetição iterativa do sub- algoritmo 506ba for terminada por causa do tamanho do intervalo (definido por “i_max” - i_min”) ela atinge ou excede seu valor mínimo, é assumido que o valor de contexto descrito pela variável de entrada c não é um valor de estado significativo. Neste caso, o índice “i_max”, que designa um limite superior do intervalo, é entretanto utilizado. O valor superior “i_max” do intervalo, que é atingido na última iteração do sub-algoritmo 506ba, é reutilizado como um valor do índice da tabela para um acesso à tabela “ari_lookup_m” (que pode ser igual à tabela ari_lookup_m[742] da figura 21). A tabela “ari_lookup_m[]” descreve os valores do índice da regra de mapeamento associados aos intervalos de diversos valores de contexto numérico adjacentes. Os intervalos, nos quais os valores de índice de regra de mapeamento descritos pelas entradas da tabela “ari_lookup_m[]” estão associados, são definidos pelos valores de estado significativos descritos pelas entradas da tabela “ari_hash_m[]”.As entradas da tabela “ari_hash_m” definem ambos os valores de estado significativos e os limites de intervalos de valores de contexto numéricos adjacentes. Na execução do algoritmo 506b, é determinado se o valor de contexto numérico descrito pela variável de entrada c é igual a um valor de estado significativo, e se este não for o caso, cujo intervalo de valores de contexto numéricos (dos diversos intervalos, limites dos quais são definidos pelos valores de estado significativo) o valor de contexto descrito pela variável de entrada c permanece. Assim, o algoritmo 506b cumpre uma funcionalidade dupla para determinar se a variável de entrada c descreve um valor de estado significativo e, se não for o caso, para identificar um intervalo, delimitado por valores de estado significativos, no qual o valor de contexto representado pela variável de entrada c permanece. Assim, o algoritmo 506e é particularmente eficiente e requer somente um número comparavelmente pequeno de acessos da tabela.[000313] If, however, the iterative repetition of sub-algorithm 506ba is terminated because the size of the interval (defined by “i_max” - i_min”) reaches or exceeds its minimum value, it is assumed that the context value described by input variable c is not a meaningful state value. In this case, the index “i_max”, which designates an upper limit of the range, is however used. The upper value “i_max” of the range, which is reached in the last iteration of the 506ba sub-algorithm, is reused as a table index value for an access to the “ari_lookup_m” table (which may be the same as the ari_lookup_m[742] table of figure 21). The “ari_lookup_m[]” table describes the mapping rule index values associated with ranges of multiple adjacent numeric context values. The ranges, in which the mapping rule index values described by the “ari_lookup_m[]” table entries are associated, are defined by the significant state values described by the “ari_hash_m[]” table entries. ” define both significant state values and the limits of adjacent numeric context value ranges. In executing algorithm 506b, it is determined whether the numeric context value described by the input variable c is equal to a significant state value, and if this is not the case, whose range of numeric context values (of the various ranges, limits of which are defined by the meaningful state values) the context value described by the input variable c remains. Thus, algorithm 506b fulfills a dual functionality to determine whether the input variable c describes a meaningful state value and, if not the case, to identify a range, bounded by meaningful state values, in which the represented context value by the input variable c remains. Thus, the 506e algorithm is particularly efficient and requires only a comparably small number of table accesses.

[000314] Para resumir o mencionado acima, o estado de contexto c determina a tabela de frequências cumulativas utilizada para decodificar o plano de bit a bit mais significativo m. O mapeamento de c ao índice da tabela de frequências cumulativas “pki” correspondente conforme realizado pela função “arith_get_pk()”. Uma representação do código do pseudo-programa da dita função “arith_get_pk()” foi explicado tendo como referência a figura 5e.[000314] To summarize the above, the context state c determines the cumulative frequency table used to decode the most significant bitwise plane m. The mapping of c to the corresponding cumulative frequency table index “pki” as performed by the “arith_get_pk()” function. A representation of the pseudo-program code of said function “arith_get_pk()” was explained with reference to figure 5e.

[000315] Para ainda resumir o mencionado acima, o valor m é decodificado utilizando a função “arith_decode()” (que é descrita em mais detalhes abaixo) chamada com a tabela de frequências cumulativas “arith_cf_m[pki][]”, onde “pki” corresponde ao índice (também designado como valor de índice de regra de mapeamento) retornado pela função “arith_get_pk()”, que é descrita com referência à figura 5e na forma de um pseudo código C.[000315] To further summarize the above, the value m is decoded using the function “arith_decode()” (which is described in more detail below) called with the cumulative frequency table “arith_cf_m[pki][]”, where “ pki” corresponds to the index (also designated as mapping rule index value) returned by the function “arith_get_pk()”, which is described with reference to Figure 5e in the form of pseudo C code.

[000316] 11.5.2 Seleção da regra de mapeamento utilizando o algoritmo de acordo com a figura 5f[000316] 11.5.2 Selection of the mapping rule using the algorithm according to figure 5f

[000317] A seguir, outra realização de uma seleção do algoritmo da regra de mapeamento “arith_get_pk()” será descrito com referência à figura 5f que mostra uma representação do código do pseudo-programa de tal algoritmo, que pode ser utilizado na decodificação de um tuplo de valores espectrais. O algoritmo, de acordo com a figura 5f, pode ser considerado uma versão otimizada (por exemplo, versão otimizada de velocidade) do algoritmo, “get_pk()” ou do algoritmo “arith_get_pk()”.[000317] In the following, another realization of a selection of the mapping rule algorithm “arith_get_pk()” will be described with reference to figure 5f which shows a representation of the pseudo-program code of such an algorithm, which can be used in decoding a tuple of spectral values. The algorithm, according to figure 5f, can be considered an optimized version (e.g., speed optimized version) of the algorithm, “get_pk()” or the “arith_get_pk()” algorithm.

[000318] O algoritmo “arith_get_pk()” de acordo com a figura 5f recebe, como uma variável de entrada, uma variável c que descreve o estado do contexto. A variável de entrada c pode, por exemplo, representar um valor de contexto corrente numérico.[000318] The “arith_get_pk()” algorithm according to figure 5f receives, as an input variable, a variable c that describes the state of the context. The input variable c can, for example, represent a numeric current context value.

[000319] O algoritmo “arith_get_pk()” provê, como uma variável de saída, uma variável “pki”, que descreve o índice de uma distribuição de probabilidade (ou modelo de probabilidade) associado a um estado do contexto descrito pela variável de entrada c. A variável “pki” pode, por exemplo, ser um valor de índice de regra de mapeamento.[000319] The “arith_get_pk()” algorithm provides, as an output variable, a variable “pki”, which describes the index of a probability distribution (or probability model) associated with a state of the context described by the input variable w. The variable “pki” can, for example, be a mapping rule index value.

[000320] O algoritmo de acordo com a figura 5f compreende uma definição dos conteúdos da matriz “i_diff[]”. Como pode ser visto, uma primeira entrada da matriz “i_diff[]” (tendo um índice da matriz 0) é igual a 299 e outras entradas da matriz (tendo índices da matriz 1 a 8) tomam os valores de 149, 74, 37, 18, 9, 4, 2, e 1. Assim, o tamanho da etapa para a seleção de um valor do índice da tabela hash “i_min” é reduzido com cada iteração, como as entradas das matrizes “i_diff[]” definem os ditos tamanhos das etapas. Para detalhes, a referência é feita à discussão abaixo.[000320] The algorithm according to figure 5f comprises a definition of the contents of the “i_diff[]” matrix. As can be seen, a first entry of the array “i_diff[]” (having an array index 0) is equal to 299 and other entries of the array (having array indices 1 to 8) take the values of 149, 74, 37 , 18, 9, 4, 2, and 1. Thus, the step size for selecting a value from the “i_min” hash table index is reduced with each iteration, as the entries of the “i_diff[]” arrays define the said step sizes. For details, reference is made to the discussion below.

[000321] Entretanto, diferentes tamanhos das etapas, por exemplo, diferentes conteúdos da matriz “i_diff[]” podem geralmente ser escolhidos, em que os conteúdos da matriz “i_diff[]” podem naturalmente ser adaptados ao tamanho da tabela hash “ari_hash_m[i]”.[000321] However, different step sizes, for example, different contents of the array “i_diff[]” can generally be chosen, whereby the contents of the array “i_diff[]” can naturally be adapted to the size of the hash table “ari_hash_m[ i]”.

[000322] Deve ser observado que a variável “i_min” é inicializada para assumir um valor de 0 correto no início do algoritmo “arith_get_pk()”.[000322] It should be noted that the variable “i_min” is initialized to assume a correct value of 0 at the beginning of the “arith_get_pk()” algorithm.

[000323] Em uma etapa de inicialização 508a, uma variável s é inicializada dependendo da variável de entrada c, em que uma representação numérica da variável c é mudada à esquerda em 8 bits a fim de obter a representação numérica da variável s.[000323] In an initialization step 508a, a variable s is initialized depending on the input variable c, wherein a numerical representation of the variable c is left shifted by 8 bits in order to obtain the numerical representation of the variable s.

[000324] Subsequentemente, uma pesquisa de tabela 508b é realizada, a fim de identificar um valor de índice da tabela hash “i_min” de uma entrada da tabela hash “ari_hash_m[]”, de modo que o valor de contexto descrito pelo valor de contexto c dentro de um intervalo que é delimitado pelo valor de contexto descrito pela entrada da tabela hash “ari_hash_m[i_min]” e um valor de contexto descrito por outra entrada da tabela hash “ari_hash_m” cuja outra entrada “ari_hash_m” seja adjacente (em termos de seu valor do índice da tabela hash) à entrada da tabela hash “ari_hash_m[i_min]”. Assim, o algoritmo 508b permite determinar um valor de índice da tabela hash “i_min” designando uma entrada “j=ari_hash_m[i_min]” da tabela hash “ari_hash_m[]”, de modo que a entrada da tabela hash “ari_hash_m[i_min]” pelo menos aproxime o valor de contexto descrito pela variável de entrada c.[000324] Subsequently, a table lookup 508b is performed in order to identify a hash table index value “i_min” from a hash table entry “ari_hash_m[]”, such that the context value described by the value of context c within a range that is bounded by the context value described by the hash table entry “ari_hash_m[i_min]” and a context value described by another hash table entry “ari_hash_m” whose other entry “ari_hash_m” is adjacent (in terms of its hash table index value) to the hash table entry “ari_hash_m[i_min]”. Thus, algorithm 508b allows determining an index value of the hash table “i_min” by assigning an entry “j=ari_hash_m[i_min]” of the hash table “ari_hash_m[]”, such that the hash table entry “ari_hash_m[i_min] ” at least approximate the context value described by the input variable c.

[000325] A pesquisa de tabela 508b compreende uma execução iterativa de um sub-algoritmo 508ba, em que o sub-algoritmo 508ba é executado para um número predeterminado de, por exemplo, nove iterações. Na primeira etapa do sub-algoritmo 508ba, a variável i é definida a um valor que é igual a uma soma de um valor de uma variável “i_min” e um valor de uma entrada de tabela “i_diff[k]”. Deve ser observado aqui que k é uma variável de execução, que é aumentada, começando de um valor inicial de k=0, com cada iteração do sub-algoritmo 508ba. A matriz “i_diff[]” define predeterminar os valores de aumento, em que os valores de aumento diminuem com o aumento do índice da tabela k, ou seja, com aumento dos números de iterações.[000325] Table lookup 508b comprises an iterative execution of a sub-algorithm 508ba, wherein the sub-algorithm 508ba is executed for a predetermined number of, for example, nine iterations. In the first step of sub-algorithm 508ba, the variable i is set to a value that is equal to a sum of a value from a variable “i_min” and a value from a table entry “i_diff[k]”. It should be noted here that k is an execution variable, which is increased, starting from an initial value of k=0, with each iteration of the 508ba sub-algorithm. The “i_diff[]” array defines predetermine the increase values, where the increase values decrease with the increase in the table index k, that is, with the increase in the number of iterations.

[000326] Em uma segunda etapa do sub-algoritmo 508ba, um valor de uma entrada de tabela “ari_hash_m[]” é copiado em uma variável j. Preferivelmente, os bits superiores das entradas da tabela “ari_hash_m[]” descrevem valores de estado significativos de um valor de contexto numérico, e os bits mais inferiores (bits 0 a 7) das entradas da tabela “ari_hash_m[]”descrevem valores de índice de regra de mapeamento associado aos respectivos valores de estado significativos.[000326] In a second step of sub-algorithm 508ba, a value from a table entry “ari_hash_m[]” is copied into a variable j. Preferably, the upper bits of the “ari_hash_m[]” table entries describe meaningful state values of a numeric context value, and the lower bits (bits 0 to 7) of the “ari_hash_m[]” table entries describe index values. mapping rule associated with their respective significant state values.

[000327] Em uma terceira etapa do sub-algoritmo 508ba, o valor da variável S é comparado com o valor da variável j, e a variável “i_min” é seletivamente definida ao valor “i+1” se o valor da variável s for maior que o valor da variável j. Subsequentemente, a primeira etapa, a segunda etapa, e a terceira etapa do sub-algoritmo 508ba são repetidas por um número predeterminado de vezes, por exemplo, nove vezes. Assim, em cada execução do sub-algoritmo 508ba, o valor da variável “i_min” é aumentado por i_diff[]+1, se, e somente se, o valor de contexto descrito pelo índice da tabela hash atualmente válido i_min + i_diff[] for menor que o valor de contexto descrito pela variável de entrada c. Assim, o valor de índice da tabela hash “i_min” é (de forma iterativa) aumentado em cada execução do sub-algoritmo 508ba se (e somente se) o valor de contexto descrito pela variável de entrada c e, consequentemente, pela variável s, for maior que o valor de contexto descrito pela entrada “ari_hash_m[i=i_min + diff[k]]”.[000327] In a third step of sub-algorithm 508ba, the value of variable S is compared with the value of variable j, and the variable “i_min” is selectively set to the value “i+1” if the value of variable s is greater than the value of variable j. Subsequently, the first step, the second step, and the third step of sub-algorithm 508ba are repeated for a predetermined number of times, e.g., nine times. Thus, in each execution of sub-algorithm 508ba, the value of the variable “i_min” is increased by i_diff[]+1, if and only if the context value described by the currently valid hash table index i_min + i_diff[] is less than the context value described by the input variable c. Thus, the hash table index value “i_min” is (iteratively) increased in each execution of sub-algorithm 508ba if (and only if) the context value described by the input variable c and, consequently, by the variable s, is greater than the context value described by the entry “ari_hash_m[i=i_min + diff[k]]”.

[000328] Além disso, deve ser observado que somente uma única comparação, a saber, a comparação como se o valor da variável s fosse maior que o valor da variável j, é realizada em cada execução do sub-algoritmo 508ba. Assim, o algoritmo 508ba é particularmente eficiente de forma computacional. Além disso, deve ser observado que há diferentes possíveis resultados com relação ao valor final da variável “i_min”. Por exemplo, é possível que o valor da variável “i_min” depois da última execução do sub- algoritmo 512ba seja de modo que o valor de contexto descrito pela entrada de tabela “ari_hash_m[i_min]” seja menor que o valor de contexto descrito pela variável de entrada c, e que o valor de contexto descrito pela entrada de tabela “ari_hash_m[i_min +1]” seja maior que o valor de contexto descrito pela variável de entrada c. De modo alternativo, pode acontecer que depois da última execução do sub-algoritmo 508ba, o valor de contexto descrito pela entrada da tabela hash “ari_hash_m[i_min -1]” seja menor que o valor de contexto descrito pela variável de entrada c, e que o valor de contexto descrito pela entrada “ari_hash_m[i_min]” seja maior que o valor de contexto descrito pela variável de entrada c. De modo alternativo, entretanto, pode acontecer que o valor de contexto descrito pela entrada da tabela hash “ari_hash_m[i_min]” seja idêntico ao valor de contexto descrito pela variável de entrada c.[000328] Furthermore, it should be noted that only a single comparison, namely, the comparison as if the value of variable s were greater than the value of variable j, is performed in each execution of sub-algorithm 508ba. Thus, the 508ba algorithm is particularly computationally efficient. Furthermore, it should be noted that there are different possible results regarding the final value of the “i_min” variable. For example, it is possible that the value of the variable “i_min” after the last execution of sub-algorithm 512ba is such that the context value described by the table entry “ari_hash_m[i_min]” is smaller than the context value described by input variable c, and that the context value described by the table entry “ari_hash_m[i_min +1]” is greater than the context value described by the input variable c. Alternatively, it may happen that after the last execution of sub-algorithm 508ba, the context value described by the hash table entry “ari_hash_m[i_min -1]” is smaller than the context value described by the input variable c, and that the context value described by the input “ari_hash_m[i_min]” is greater than the context value described by the input variable c. Alternatively, however, it may happen that the context value described by the hash table entry “ari_hash_m[i_min]” is identical to the context value described by the input variable c.

[000329] Por esta razão, uma provisão do valor de retorno com base na decisão 508c é realizada. A variável j é definida para ter o valor da entrada da tabela hash “ari_hash_m[i_min]”. Subsequentemente, é determinado se o valor de contexto descrito pela variável de entrada c (e também pela variável s) é maior que o valor de contexto descrito pela entrada “ari_hash_m[i_min]” (primeiro caso definido por uma condição “s>j”), ou se o valor de contexto descrito pela variável de entrada c for menor que o valor de contexto descrito pela entrada da tabela hash “ari_hash_m[i_min]” (segundo caso definido por uma condição “c<j>>8”), ou se o valor de contexto descrito pela variável de entrada c é igual ao valor de contexto descrito pela entrada “ari_hash_m[i_min]” (terceiro caso).[000329] For this reason, a return value provision based on the 508c decision is made. The variable j is defined to have the value of the hash table entry “ari_hash_m[i_min]”. Subsequently, it is determined whether the context value described by the input variable c (and also by the variable s) is greater than the context value described by the input “ari_hash_m[i_min]” (first case defined by a condition “s>j” ), or if the context value described by the input variable c is smaller than the context value described by the hash table entry “ari_hash_m[i_min]” (second case defined by a condition “c<j>>8”), or if the context value described by the input variable c is equal to the context value described by the input “ari_hash_m[i_min]” (third case).

[000330] No primeiro caso, (s>j), uma entrada “ari_lookup_m[i_min +1]” da tabela “ari_lookup_m[]” designada pelo valor de índice da tabela “i_min+1” é retornada como o valor de saída da função “arith_get_pk()”.No segundo caso (c<(j>>8)), uma entrada “ari_lookup_m[i_min]” da tabela “ari_lookup_m[]” designada pelo valor de índice da tabela “i_min” é retornado como o valor de retorno da função “arith_get_pk()”. No terceiro caso (ou seja, se o valor de contexto descrito pela variável de entrada c for igual ao valor de estado significativo descrito pela entrada de tabela “ari_hash_m[i_min]”), um valor de índice de regra de mapeamento descrito pelos 8 bits mais inferiores da entrada da tabela hash “ari_hash_m[i_min]” é retornado como o valor de retorno da função “arith_get_pk()”.[000330] In the first case, (s>j), an entry “ari_lookup_m[i_min +1]” from the table “ari_lookup_m[]” designated by the table index value “i_min+1” is returned as the output value of the function “arith_get_pk()”. In the second case (c<(j>>8)), an entry “ari_lookup_m[i_min]” from table “ari_lookup_m[]” designated by the index value of table “i_min” is returned as the return value of the “arith_get_pk()” function. In the third case (that is, if the context value described by the input variable c is equal to the meaningful state value described by the table entry “ari_hash_m[i_min]”), a mapping rule index value described by the 8 bits lowermost hash table entry “ari_hash_m[i_min]” is returned as the return value of the “arith_get_pk()” function.

[000331] Para resumir o mencionado acima, uma pesquisa de tabela particularmente simples é realizada na etapa 508b, em que a pesquisa de tabela provê um valor da variável de uma variável “i_min” sem distinguir se o valor de contexto descrito pela variável de entrada c é igual a um valor de estado significativo definido por uma das entradas da tabela de estado “ari_hash_m[]” ou não. Na etapa 508c, que é realizada subsequente à pesquisa de tabela 508b, uma relação de magnitude entre o valor de contexto descrito pela variável de entrada c e um valor de estado significativo descrito pela entrada da tabela hash “ari_hash_m[i_min]” é avaliada, e o valor de retorno da função “arith_get_pk()” é selecionado dependendo de um resultado da dita avaliação, em que o valor da variável “i_min”, que é determinado na avaliação da tabela 508b, é considerado para selecionar um valor de índice de regra de mapeamento mesmo se o valor de contexto descrito pela variável de entrada c for diferente do valor de estado significativo descrito pela entrada da tabela hash “ari_hash_m[i_min]”.[000331] To summarize the above, a particularly simple table lookup is performed in step 508b, wherein the table lookup provides a variable value from a variable “i_min” without distinguishing whether the context value described by the input variable c is equal to a meaningful state value defined by one of the state table entries “ari_hash_m[]” or not. In step 508c, which is performed subsequent to table lookup 508b, a magnitude relationship between the context value described by the input variable c and a significant state value described by the hash table entry “ari_hash_m[i_min]” is evaluated, and the return value of the function “arith_get_pk()” is selected depending on a result of said evaluation, wherein the value of the variable “i_min”, which is determined in the evaluation of table 508b, is considered to select a rule index value mapping even if the context value described by the input variable c is different from the meaningful state value described by the hash table entry “ari_hash_m[i_min]”.

[000332] Ainda deve ser observado que a comparação no algoritmo deve preferivelmente (ou de modo alternativo) ser feita entre o índice de contexto (valor de contexto numérico) c e j=ari_hash_m[i]>>8. Ainda, cada entrada da tabela “ari_hash_m[]” representa um índice de contexto, codificado além do 8° bit, e seu modelo de probabilidade correspondente codificado nos primeiros 8 bits (bits menos significativos). Na implementação corrente, estamos interessados principalmente no conhecimento se o presente contexto c é maior que ari_hash_m[i]>>8, que é equivalente à detecção se s=c<<8 for também maior que ari_hash_m[i].[000332] It should also be noted that the comparison in the algorithm should preferably (or alternatively) be made between the context index (numeric context value) c and j=ari_hash_m[i]>>8. Furthermore, each entry in the “ari_hash_m[]” table represents a context index, encoded beyond the 8th bit, and its corresponding probability model encoded in the first 8 bits (least significant bits). In the current implementation, we are mainly interested in knowing whether the present context c is greater than ari_hash_m[i]>>8, which is equivalent to detecting whether s=c<<8 is also greater than ari_hash_m[i].

[000333] Para resumir o mencionado acima, visto que o estado de contexto é calculado (que pode, por exemplo, ser obtido utilizando o algoritmo “arith_get_context(c,i,N)” de acordo com a figura 5c, ou o algoritmo “arith_get_context(c,i)” de acordo com a figura 5d, o plano de bit a bit mais significativo é decodificado utilizando o algoritmo “arith_decode” (que será descrito abaixo) chamado com a tabela de frequências cumulativas apropriada correspondente ao modelo de probabilidade correspondente ao estado de contexto. A correspondência é feita pela função “arith_get_pk()”, por exemplo, a função “arith_get_pk()” que foi discutida com referência à figura 5f.[000333] To summarize the above, since the context state is calculated (which can, for example, be obtained using the “arith_get_context(c,i,N)” algorithm according to figure 5c, or the “arith_get_context(c,i,N)” algorithm arith_get_context(c,i)” according to figure 5d, the most significant bitwise plane is decoded using the “arith_decode” algorithm (which will be described below) called with the appropriate cumulative frequency table corresponding to the corresponding probability model to the context state.The matching is done by the “arith_get_pk()” function, for example, the “arith_get_pk()” function that was discussed with reference to figure 5f.

[000334] 11.6 Decodificação aritmética[000334] 11.6 Arithmetic decoding

[000335] 11.6.1 Decodificação aritmética utilizando o algoritmo de acordo com a figura 5g[000335] 11.6.1 Arithmetic decoding using the algorithm according to figure 5g

[000336] A seguir, a funcionalidade de uma implementação preferida da função “arith_decode()” será discutida em detalhes com referência à figura 5g. A figura 5g mostra um pseudo-código C que descreve o algoritmo utilizado.[000336] In the following, the functionality of a preferred implementation of the “arith_decode()” function will be discussed in detail with reference to figure 5g. Figure 5g shows a C pseudo-code that describes the algorithm used.

[000337] Deve ser observado que a função “arith_decode()” utiliza a função de ajuda “arith_first_symbol (void)”, que retorna VERDADEIRA, se for o primeiro símbolo da sequência e FALSA caso contrário. A função “arith_decode()” também utiliza a função de ajuda “arith_get_next_bit(void)”, que obtém e provê o próximo bit do fluxo de bits.[000337] It should be noted that the “arith_decode()” function uses the help function “arith_first_symbol (void)”, which returns TRUE if it is the first symbol in the sequence and FALSE otherwise. The “arith_decode()” function also uses the “arith_get_next_bit(void)” helper function, which obtains and provides the next bit of the bit stream.

[000338] Além disso, a função “arith_decode()” utiliza as variáveis globais “low” [baixa], “high” [alta] e “value” [valor]. Ainda, a função “arith_decode()” recebe, como uma variável de entrada, a variável “cum_freq[]”, que aponta em direção a uma primeira entrada ou elemento (tendo o índice de elemento ou índice de entrada 0) da tabela de frequências cumulativas selecionada ou sub-tabela de frequências cumulativas (preferivelmente, uma das subtabelas ari_cf_m[pki=0][17] a ari_cf_m[pki=63][17] da tabela ari_cf_m[64][17], conforme definido pela representação em tabela das figuras 23(1), 23(2), 23(3)). Ainda, a função “arith_decode()” utiliza a variável de entrada “cfl”, que indica o comprimento da tabela de frequências cumulativas selecionada ou sub-tabela de frequências cumulativas designada pela variável “cum_freq[]”.[000338] Furthermore, the “arith_decode()” function uses the global variables “low”, “high” and “value”. Furthermore, the “arith_decode()” function receives, as an input variable, the variable “cum_freq[]”, which points towards a first entry or element (having the element index or entry index 0) of the selected cumulative frequencies or subtable of cumulative frequencies (preferably one of the ari_cf_m[pki=0][17] to ari_cf_m[pki=63][17] subtables of the ari_cf_m[64][17] subtable, as defined by the representation in table of figures 23(1), 23(2), 23(3)). Furthermore, the “arith_decode()” function uses the input variable “cfl”, which indicates the length of the selected cumulative frequency table or cumulative frequency sub-table designated by the variable “cum_freq[]”.

[000339] A função “arith_decode()” compreende, como uma primeira etapa, uma inicialização da variável 570a, que é realizada se a função de ajuda “arith_first_symbol()” indicar que o primeiro símbolo de uma sequência de símbolos está sendo decodificado. A inicialização do valor 550a inicializa a variável “value” [valor] dependendo de diversos, por exemplo, 16 bits, que são obtidos do fluxo de bits utilizando a função de ajuda “arith_get_next_bit”, de modo que a variável “value” tenha o valor representado pelos ditos bits. Ainda, a variável “low” é inicializada para ter o valor de 0, e a variável “high” é inicializada para ter o valor de 65535.[000339] The “arith_decode()” function comprises, as a first step, an initialization of the variable 570a, which is performed if the “arith_first_symbol()” helper function indicates that the first symbol of a sequence of symbols is being decoded. Initializing the value 550a initializes the “value” variable depending on several, for example, 16 bits, which are obtained from the bit stream using the “arith_get_next_bit” helper function, so that the “value” variable has the value represented by said bits. Furthermore, the “low” variable is initialized to have the value of 0, and the “high” variable is initialized to have the value of 65535.

[000340] Em uma segunda etapa 570b, a variável “range” [faixa] é definida a um valor, que é maior, em 1, que a diferença entre os valores das variáveis “high” e “low”. A variável “cum” é definida a um valor que representa uma posição relativa do valor da variável “value” entre o valor da variável “low” e o valor da variável “high”. Assim, a variável “cum” tem, por exemplo, um valor entre 0 e 216 dependendo do valor da variável “value”.[000340] In a second step 570b, the variable “range” is set to a value, which is greater, by 1, than the difference between the values of the variables “high” and “low”. The “cum” variable is set to a value that represents a relative position of the value of the “value” variable between the value of the “low” variable and the value of the “high” variable. Thus, the “cum” variable has, for example, a value between 0 and 216 depending on the value of the “value” variable.

[000341] O apontador p é inicializado a um valor que é menor, em 1, do que o endereço inicial da tabela de frequências cumulativas selecionada ou da sub-tabela.[000341] The pointer p is initialized to a value that is smaller, by 1, than the starting address of the selected cumulative frequency table or sub-table.

[000342] O algoritmo “arith_decode()” também compreende uma pesquisa iterativa da tabela de frequências cumulativas 570c. A pesquisa iterativa da tabela de frequências cumulativas é repetida até que a variável cfl seja menor que ou igual a 1. Na pesquisa iterativa da tabela de frequências cumulativas 570c, a variável do apontador q é definida a um valor, que é igual a uma soma do valor corrente da variável do apontador p e metade do valor da variável “cfl”. Se o valor da entrada *q da tabela de frequências cumulativas selecionada, cuja entrada é direcionada pela variável do apontador q, for maior que o valor da variável “cum”, a variável do apontador p é definida ao valor da variável do apontador q, e a variável “cfl” é aumentada. Finalmente, a variável “cfl” é mudada à direita por um bit, assim divide efetivamente o valor da variável “cfl” por 2 e ignora a parte do módulo.[000342] The “arith_decode()” algorithm also comprises an iterative search of the cumulative frequency table 570c. The iterative search of the cumulative frequency table is repeated until the variable cfl is less than or equal to 1. In the iterative search of the cumulative frequency table 570c, the pointer variable q is set to a value, which is equal to a sum of the current value of the pointer variable p and half of the value of the “cfl” variable. If the value of the entry *q of the selected cumulative frequency table, whose input is driven by the pointer variable q, is greater than the value of the variable “cum”, the pointer variable p is set to the value of the pointer variable q, and the variable “cfl” is increased. Finally, the “cfl” variable is shifted right by one bit, thus effectively dividing the value of the “cfl” variable by 2 and ignoring the modulus part.

[000343] Assim, a pesquisa iterativa da tabela de frequências cumulativas 570c efetivamente compara o valor da variável “cum” com diversas entradas da tabela de frequências cumulativas selecionada, a fim de identificar um intervalo dentro da tabela de frequências cumulativas selecionada, que é ligada pelas entradas da tabela de frequências cumulativas, de modo que o valor cum permaneça dentro do intervalo identificado. Assim, as entradas da tabela de frequências cumulativas selecionada definem os intervalos, em que um respectivo valor do símbolo está associado a cada um dos intervalos da tabela de frequências cumulativas selecionada. Ainda, as larguras dos intervalos entre dois valores adjacentes da tabela de frequências cumulativas definem as probabilidades dos símbolos associados aos ditos intervalos, de modo que a tabela de frequências cumulativas selecionada em sua totalidade defina uma distribuição de probabilidade de diferentes símbolos (ou valores de símbolos). Detalhes referentes às tabelas de frequências cumulativas disponíveis serão discutidos abaixo tendo como referência a figura 23.[000343] Thus, the iterative search of the cumulative frequency table 570c effectively compares the value of the variable “cum” with several entries of the selected cumulative frequency table in order to identify a range within the selected cumulative frequency table, which is linked by the cumulative frequency table entries so that the cum value remains within the identified range. Thus, the entries of the selected cumulative frequency table define the intervals, where a respective symbol value is associated with each of the intervals of the selected cumulative frequency table. Furthermore, the widths of the intervals between two adjacent values of the cumulative frequency table define the probabilities of the symbols associated with said intervals, so that the selected cumulative frequency table in its entirety defines a probability distribution of different symbols (or symbol values ). Details regarding the available cumulative frequency tables will be discussed below with reference to figure 23.

[000344] Tendo como referência novamente a figura 5g, o valor do símbolo é derivado do valor da variável do apontador p, em que o valor do símbolo é derivado conforme mostrado no número de referência 570d. Assim, a diferença entre o valor da variável do apontador p e do endereço inicial “cum_freq” é avaliada a fim de obter o valor do símbolo, que é representado pela variável “symbol” [símbolo].[000344] Referring again to figure 5g, the value of the symbol is derived from the value of the pointer variable p, wherein the value of the symbol is derived as shown in reference number 570d. Thus, the difference between the value of the pointer variable p and the initial address “cum_freq” is evaluated in order to obtain the value of the symbol, which is represented by the variable “symbol”.

[000345] O algoritmo “arith_decode” também compreende uma adaptação 570e das variáveis “high” e “low”. Se o valor do símbolo representado pela variável “symbol” for diferente de 0, a variável “high” é atualizada, conforme mostrado no número de referência 570e. Ainda, o valor da variável “low” é atualizado, conforme mostrado no número de referência 570e. A variável “high” é definida a um valor que é determinado pelo valor da variável “low”, a variável “range” e a entrada tendo o índice “symbol -1” da tabela de frequências cumulativas selecionada. A variável “low” é aumentada, em que a magnitude do aumento é determinada pela variável “range” e a entrada da tabela de frequências cumulativas selecionada tendo o índice “symbol”. Assim, a diferença entre os valores das variáveis “low” e “high” é ajustada dependendo da diferença numérica entre as duas entradas adjacentes da tabela de frequências cumulativas selecionada.[000345] The “arith_decode” algorithm also comprises an adaptation 570e of the “high” and “low” variables. If the value of the symbol represented by the “symbol” variable is other than 0, the “high” variable is updated, as shown in reference number 570e. Furthermore, the value of the “low” variable is updated, as shown in reference number 570e. The “high” variable is set to a value that is determined by the value of the “low” variable, the “range” variable and the entry having the index “symbol -1” of the selected cumulative frequency table. The variable “low” is increased, where the magnitude of the increase is determined by the variable “range” and the selected cumulative frequency table entry having the index “symbol”. Thus, the difference between the values of the “low” and “high” variables is adjusted depending on the numerical difference between the two adjacent entries of the selected cumulative frequency table.

[000346] Assim, se um valor do símbolo tendo uma baixa probabilidade for detectado, o intervalo entre os valores das variáveis “low” e “high” é reduzido à largura estreita. Em contraste, se o valor do símbolo detectado compreende uma probabilidade relativamente grande, a largura do intervalo entre os valores das variáveis “low” e “high” é ajustada ao valor comparavelmente grande. Novamente, a largura do intervalo entre os valores da variável “low” e “high” é dependente do símbolo detectado e as entradas da tabela de frequências cumulativas correspondentes.[000346] Thus, if a symbol value having a low probability is detected, the interval between the values of the “low” and “high” variables is reduced to narrow width. In contrast, if the value of the detected symbol comprises a relatively large probability, the width of the interval between the values of the “low” and “high” variables is adjusted to the comparably large value. Again, the width of the interval between the “low” and “high” variable values is dependent on the detected symbol and the corresponding cumulative frequency table entries.

[000347] O algoritmo “arith_decode()” também compreende uma renormalização do intervalo 570f, na qual o intervalo determinado na etapa 570e é de forma iterativa mudado e escalado até que a condição de “interrupção” seja atingida. Na renormalização do intervalo 570f, uma operação de mudança para baixo seletiva 570fa é realizada. Se a variável “high” for menor que 32768, nada é feito, e a renormalização do intervalo continua com uma operação de aumento do tamanho do intervalo 570fb. Se, entretanto, a variável “high” não for menor que 32768 e a variável “low” for maior ou igual a 32768, as variáveis “values”, “low” e “high” são todas reduzidas a 32768, de modo que um intervalo definido pelas variáveis “low” e “high” seja mudado para baixo, e de modo que o valor da variável “value” também seja mudado para baixo. Se, entretanto, for observado que o valor da variável “high” não é menor que 32768, e que a variável “low” não é maior ou igual a 32768, e que a variável “low” é maior ou igual a 16384 e que a variável “high” é menor que 49152, as variáveis “value”, “low” e “high” são todas reduzidas a 16384, assim reduzindo o intervalo entre os valores das variáveis “high” e “low” e também o valor da variável “value”. Se, entretanto, nenhuma das condições acima for cumprida, a renormalização do intervalo é abortada.[000347] The “arith_decode()” algorithm also comprises a renormalization of the range 570f, in which the range determined in step 570e is iteratively changed and scaled until the “break” condition is reached. In the renormalization of the 570f range, a selective 570fa shift-down operation is performed. If the “high” variable is less than 32768, nothing is done, and the range renormalization continues with an operation to increase the size of the 570fb range. If, however, the “high” variable is not less than 32768 and the “low” variable is greater than or equal to 32768, the “values”, “low” and “high” variables are all reduced to 32768, so that a range defined by the variables “low” and “high” is changed downwards, and so that the value of the variable “value” is also changed downwards. If, however, it is observed that the value of the “high” variable is not less than 32768, and that the “low” variable is not greater than or equal to 32768, and that the “low” variable is greater than or equal to 16384 and that the “high” variable is less than 49152, the “value”, “low” and “high” variables are all reduced to 16384, thus reducing the interval between the values of the “high” and “low” variables and also the value of the variable “value”. If, however, none of the above conditions are met, range renormalization is aborted.

[000348] Se, entretanto, qualquer uma das condições mencionadas acima, que são avaliadas na etapa 570fa, for cumprida, a operação de aumento do intervalo 570fb é executada. Na operação de aumento do intervalo 570fb, o valor da variável “low” é dobrado. Ainda, o valor da variável “high” é dobrado, e o resultado da operação de dobrar é aumentado em 1. Ainda, o valor da variável “value” é dobrado (mudada à esquerda por um bit), e um bit do fluxo de bits, que é obtido pela função de ajuda “arith_get_next_bit” é utilizado como o bit menos significativo. Assim, o tamanho do intervalo entre os valores das variáveis “low” e “high” é aproximadamente dobrado, e a precisão da variável “value” é aumentada utilizando um novo bit do fluxo de bits. Conforme mencionado acima, as etapas 570fa e 570fb são repetidas até que a condição de “interrupção” seja atingida, ou seja, até que o intervalo entre os valores das variáveis “low” e “high” seja grande suficiente.[000348] If, however, any of the conditions mentioned above, which are evaluated in step 570fa, are met, the range increase operation 570fb is performed. When increasing the 570fb range, the value of the “low” variable is doubled. Furthermore, the value of the “high” variable is doubled, and the result of the doubling operation is increased by 1. Furthermore, the value of the “value” variable is doubled (shifted to the left by one bit), and one bit of the bits, which is obtained by the help function “arith_get_next_bit” is used as the least significant bit. Thus, the size of the interval between the values of the “low” and “high” variables is approximately doubled, and the precision of the “value” variable is increased by using a new bit of the bit stream. As mentioned above, steps 570fa and 570fb are repeated until the “break” condition is reached, that is, until the interval between the values of the “low” and “high” variables is large enough.

[000349] Com referência à funcionalidade do algoritmo “arith_decode()”, deve ser observado que o intervalo entre os valores das variáveis “low” e “high” é reduzido na etapa 570e dependendo de duas entradas adjacentes da tabela de frequências cumulativas referenciadas pela variável “cum_freq”. Se um intervalo entre dois valores adjacentes da tabela de frequências cumulativas selecionada for pequeno, ou seja, se os valores adjacentes são comparavelmente juntos, o intervalo entre os valores das variáveis “low” e “high”, que é obtido na etapa 570e, será comparavelmente pequeno. Em contraste, se duas entradas adjacentes da tabela de frequências cumulativas são mais espaçadas, o intervalo entre os valores das variáveis “low” e “high”, que é obtido na etapa 570e, será comparavelmente grande.[000349] With reference to the functionality of the “arith_decode()” algorithm, it should be noted that the range between the values of the “low” and “high” variables is reduced in step 570e depending on two adjacent entries of the cumulative frequency table referenced by the variable “cum_freq”. If an interval between two adjacent values of the selected cumulative frequency table is small, that is, if the adjacent values are comparably close together, the interval between the values of the variables “low” and “high”, which is obtained in step 570e, will be comparably small. In contrast, if two adjacent entries of the cumulative frequency table are spaced further apart, the interval between the values of the “low” and “high” variables, which is obtained in step 570e, will be comparably large.

[000350] Consequentemente, se o intervalo entre os valores das variáveis “low” e “high”, que é obtido na etapa 570e, for comparavelmente pequeno, um grande número de renormalização das etapas de intervalo será executado para redimensionar o intervalo ao tamanho “sufficient” (de modo que nenhuma das condições de uma avaliação de condição 570fa seja cumprida). Assim, um número comparavelmente grande de bits do fluxo de bits será utilizado a fim de aumentar a precisão da variável “value”. Se, em contraste, o tamanho do intervalo obtido na etapa 570e for comparavelmente grande, somente um número menor de repetições das etapas de normalização do intervalo 570fa e 570fb será necessário a fim de renormalizar o intervalo entre os valores das variáveis “low” e “high” ao tamanho “sufficient”. Assim, somente um número comparavelmente pequeno de bits do fluxo de bits será utilizado para aumentar a precisão da variável “value” e para preparar uma decodificação do próximo símbolo.[000350] Consequently, if the interval between the values of the variables “low” and “high”, which is obtained in step 570e, is comparably small, a large number of renormalization of interval steps will be performed to resize the interval to the size “ sufficient” (so that none of the conditions of a 570fa condition assessment are met). Thus, a comparably large number of bits from the bit stream will be used in order to increase the precision of the “value” variable. If, in contrast, the size of the interval obtained in step 570e is comparably large, only a smaller number of repetitions of the interval normalization steps 570fa and 570fb will be necessary in order to renormalize the interval between the values of the variables “low” and “ high” to “sufficient” size. Thus, only a comparably small number of bits from the bit stream will be used to increase the precision of the “value” variable and to prepare a decoding of the next symbol.

[000351] Para resumir o mencionado acima, se um símbolo é decodificado, que compreende uma probabilidade comparavelmente alta, e no qual um grande intervalo é associado pelas entradas da tabela de frequências cumulativas selecionada, somente um número comparavelmente pequeno de bits será lido do fluxo de bits a fim de permitir uma decodificação de um símbolo subsequente. Em contraste, se um símbolo é decodificado, que compreende uma probabilidade comparavelmente pequena e no qual um pequeno intervalo é associado pelas entradas da tabela de frequências cumulativas selecionada, um número comparavelmente grande de bits será considerado do fluxo de bits a fim de preparar uma decodificação do próximo símbolo.[000351] To summarize the above, if a symbol is decoded, which comprises a comparably high probability, and in which a large range is associated by the selected cumulative frequency table entries, only a comparably small number of bits will be read from the stream of bits to allow decoding of a subsequent symbol. In contrast, if a symbol is decoded which comprises a comparably small probability and in which a small range is associated by the selected cumulative frequency table entries, a comparably large number of bits will be considered from the bit stream in order to prepare a decode. of the next symbol.

[000352] Assim, as entradas das tabelas de frequências cumulativas refletem as probabilidades dos diferentes símbolos e também refletem um número de bits necessários para a decodificação de uma sequência de símbolos. Pela variação da tabela de frequências cumulativas dependendo de um contexto, ou seja, dependendo dos símbolos previamente decodificados (ou valores espectrais), por exemplo, selecionando diferentes tabelas de frequências cumulativas dependendo do contexto, as dependências estocásticas entre os diferentes símbolos podem ser exploradas, que permitem uma codificação eficiente da taxa de bits particular dos símbolos subsequentes (ou adjacentes).[000352] Thus, the entries of the cumulative frequency tables reflect the probabilities of different symbols and also reflect a number of bits required to decode a sequence of symbols. By varying the cumulative frequency table depending on a context, i.e. depending on previously decoded symbols (or spectral values), for example by selecting different cumulative frequency tables depending on the context, stochastic dependencies between different symbols can be explored, which allow efficient encoding of the particular bitrate of subsequent (or adjacent) symbols.

[000353] Para resumir o mencionado acima, a função “arith_decode()”, que foi descrita com referência à figura 5g, é chamada com a tabela de frequências cumulativas “arith_cf_m[pki][]”, correspondente ao índice “pki” retornado por uma função “arith_get_pk()” para determinar o valor do plano de bits mais significativo m (que pode ser definido ao valor do símbolo representado pela variável de retorno “symbol”).[000353] To summarize the above, the function “arith_decode()”, which was described with reference to figure 5g, is called with the cumulative frequency table “arith_cf_m[pki][]”, corresponding to the index “pki” returned by a function “arith_get_pk()” to determine the value of the most significant bit plane m (which can be set to the value of the symbol represented by the return variable “symbol”).

[000354] Para resumir o mencionado acima, o decodificador aritmético é uma implementação de número inteiro utilizando o método da geração de identificação com escala. Para detalhes, a referência é feita ao livro “Introduction to Data Compression” de K. Sayood, Terceira Edição, 2006, Elsevier Inc.[000354] To summarize the above, the arithmetic decoder is an integer implementation using the scaled identification generation method. For details, reference is made to the book “Introduction to Data Compression” by K. Sagood, Third Edition, 2006, Elsevier Inc.

[000355] O código do programa de computador de acordo com a figura 5g descreve o algoritmo utilizado de acordo com uma realização da invenção.[000355] The computer program code according to figure 5g describes the algorithm used according to an embodiment of the invention.

[000356] 11.6.2 Decodificação aritmética utilizando o algoritmo de acordo com as figuras 5h e 5i[000356] 11.6.2 Arithmetic decoding using the algorithm according to figures 5h and 5i

[000357] As figuras 5h e 5i mostram uma representação do código do pseudo-programa de outra realização do algoritmo “arith_decode()”, que pode ser utilizado como uma alternativa para o algoritmo “arith_decode” descrito com referência à figura 5g.[000357] Figures 5h and 5i show a representation of the pseudo-program code of another realization of the “arith_decode()” algorithm, which can be used as an alternative to the “arith_decode” algorithm described with reference to Figure 5g.

[000358] Deve ser observado que os algoritmos de acordo com a figura 5g e as figuras 5h e 5i podem ser utilizados no algoritmo “values_decode()” de acordo com a figura 3.[000358] It should be noted that the algorithms according to figure 5g and figures 5h and 5i can be used in the “values_decode()” algorithm according to figure 3.

[000359] Para resumir, o valor m é decodificado utilizando a função “arith_decode()” chamada com a tabela de frequências cumulativas “arith_cf_m[pki][]” (que é, preferivelmente, uma sub- tabela da tabela ari_cf_m[67][17] definida na representação em tabelas das figuras 23(1), 23(2), 23(3)) em que “pki” corresponde ao índice retornado pela função “arith_get_pk()”.O codificador (ou decodificador) aritmético é uma implementação de número inteiro utilizando o método de geração de identificação com escala. Para detalhes, a referência é feita ao livro “Introduction to Data Compression” de K. Sayood, Terceira Edição, 2006, Elsevier Inc. O código do programa de computador de acordo com a figura 5h e 5i descreve o algoritmo utilizado.[000359] To summarize, the value m is decoded using the function “arith_decode()” called with the cumulative frequency table “arith_cf_m[pki][]” (which is preferably a sub-table of the ari_cf_m[67] table). [17] defined in the table representation of figures 23(1), 23(2), 23(3)) where “pki” corresponds to the index returned by the “arith_get_pk()” function. The arithmetic encoder (or decoder) is an integer implementation using the scaled ID generation method. For details, reference is made to the book “Introduction to Data Compression” by K. Sagood, Third Edition, 2006, Elsevier Inc. The computer program code according to figure 5h and 5i describes the algorithm used.

[000360] 11.7 Mecanismo de escape[000360] 11.7 Exhaust mechanism

[000361] A seguir, o mecanismo de escape, que é utilizado na decodificação do algoritmo “values_decode()” de acordo com a figura 3, será brevemente discutido.[000361] Next, the escape mechanism, which is used in decoding the “values_decode()” algorithm according to figure 3, will be briefly discussed.

[000362] Quando o valor decodificado m (que é provido como um valor de retorno da função “arith_decode()”) for o símbolo de escape “ARITH_ESCAPE”, as variáveis “lev” e “esc_nb” são aumentadas em 1, e o outro valor m é decodificado. Neste caso, a função “arith_get_pk()” (ou “get_pk()”)é chamada mais uma vez com o valor “c+ esc_nb<<17” como argumento de entrada, onde a variável “esc_nb” descreve o número de símbolos de escape previamente decodificados para o mesmo tuplo duplo e delimitado a 7.[000362] When the decoded value m (which is provided as a return value of the “arith_decode()” function) is the escape symbol “ARITH_ESCAPE”, the variables “lev” and “esc_nb” are increased by 1, and the another value m is decoded. In this case, the function “arith_get_pk()” (or “get_pk()”) is called once again with the value “c+ esc_nb<<17” as input argument, where the variable “esc_nb” describes the number of symbols of escape previously decoded to the same double tuple and bounded to 7.

[000363] Para resumir, se um símbolo de escape for identificado, assume-se que o valor do plano de bits mais significativo m compreende um peso numérico aumentado. Além disso, a decodificação numérica corrente é repetida, em que um valor de contexto corrente numérico modificado “c+ esc_nb<<17” é utilizado como uma variável de entrada à função “arith_get_pk()”. Assim, um valor de índice de regra de mapeamento diferente “pki” é tipicamente obtido nas diferentes iterações do sub-algoritmo 312ba.[000363] To summarize, if an escape symbol is identified, the value of the most significant bit plane m is assumed to comprise an increased numerical weight. Furthermore, the current numeric decoding is repeated, where a modified numeric current context value “c+ esc_nb<<17” is used as an input variable to the “arith_get_pk()” function. Thus, a different mapping rule index value “pki” is typically obtained in different iterations of sub-algorithm 312ba.

[000364] 11.8 Mecanismo de parada aritmética[000364] 11.8 Arithmetic stop mechanism

[000365] A seguir, o mecanismo de parada aritmética será descrito. O mecanismo de parada aritmética permite a redução do número de bits necessários no caso em que a parte da frequência superior é completamente quantizada a 0 em um codificador de áudio.[000365] Next, the arithmetic stop mechanism will be described. The arithmetic stopping mechanism allows reduction of the number of bits required in the case where the upper frequency part is completely quantized to 0 in an audio encoder.

[000366] Em uma realização, um mecanismo de parada aritmética pode ser implementado como segue: visto que o valor m não é o símbolo de escape, “ARITH_ESCAPE”, o decodificador verifica se o m sucessivo forma um símbolo “ARITH_STOP”. Se uma condição “(esc_nb >0&&m==0)” for verdadeira, o símbolo “ARITH_STOP” é detectado e o processo de decodificação é finalizado. Neste caso, o decodificador vai diretamente para a decodificação de sinal descrita abaixo ou a função “arith_finish()” que será descrita abaixo. Uma condição significa que o restante da estrutura é composto por valores 0.[000366] In one embodiment, an arithmetic stopping mechanism can be implemented as follows: since the value m is not the escape symbol, “ARITH_ESCAPE”, the decoder checks whether the successive m forms an “ARITH_STOP” symbol. If a condition “(esc_nb >0&&m==0)” is true, the “ARITH_STOP” symbol is detected and the decoding process is terminated. In this case, the decoder goes directly to the signal decoding described below or the “arith_finish()” function that will be described below. A condition means that the rest of the structure is made up of 0 values.

[000367] 11.9 Decodificação do plano de bits menos significativo[000367] 11.9 Decoding the least significant bit plane

[000368] A seguir, a decodificação de um ou mais planos de bits menos significativos será descrita. A decodificação do plano de bits menos significativo, é realizada, por exemplo, na etapa 312d mostrada na figura 3. De modo alternativo, entretanto, os algoritmos conforme mostrados nas figuras 5j e 5n podem ser utilizados, em que o algoritmo da figura 5j é um algoritmo preferido.[000368] Next, the decoding of one or more less significant bit planes will be described. Decoding the least significant bit plane is performed, for example, in step 312d shown in Figure 3. Alternatively, however, the algorithms as shown in Figures 5j and 5n can be used, wherein the algorithm of Figure 5j is a preferred algorithm.

[000369] 11.9.1 Decodificação do plano de bits menos significativo de acordo com a figura 5j[000369] 11.9.1 Decoding the least significant bit plane according to figure 5j

[000370] Agora com referência à figura 5j, pode ser visto que os valores das variáveis a e b são derivados do valor m. Por exemplo, a representação numérica do valor m é mudada à direita em 2 bits para obter a representação numérica da variável b. Além disso, o valor da variável a é obtido subtraindo uma versão mudada do bit do valor da variável b, mudado por bit à esquerda em 2 bits, do valor da variável m.[000370] Now referring to figure 5j, it can be seen that the values of variables a and b are derived from the value m. For example, the numeric representation of the value m is shifted right by 2 bits to obtain the numeric representation of the variable b. Furthermore, the value of variable a is obtained by subtracting a bit-shifted version of the value of variable b, left-shifted by 2 bits, from the value of variable m.

[000371] Subsequentemente, uma decodificação aritmética dos valores do plano de bits menos significativo r é repetida, em que o número de repetições é determinado pelo valor da variável “lev”. Um valor do plano de bits menos significativo r é obtido utilizando a função “arith_decode”, em que a tabela de frequências cumulativas adaptada à decodificação do plano de bit menos significativo é utilizada (tabela de frequências cumulativas “arith_cf_r”). Um bit menos significativo (tendo um peso numérico de 1) da variável r descreve um plano de bits menos significativo do valor espectral representado pela variável a, e um bit tendo um peso numérico de 2 da variável r descreve um bit menos significativo do valor espectral representado pela variável b. Assim, a variável a é atualizada mudando a variável a para a esquerda em 1 bit e adicionando o bit tendo o peso numérico de 1 da variável r como o bit menos significativo. De forma semelhante, a variável b é atualizada mudando a variável b à esquerda por um bit e adicionando o bit tendo o peso numérico de 2 da variável r.[000371] Subsequently, an arithmetic decoding of the values of the least significant bit plane r is repeated, where the number of repetitions is determined by the value of the variable “lev”. A value of the least significant bit plane r is obtained using the function “arith_decode”, in which the cumulative frequency table adapted to the decoding of the least significant bit plane is used (cumulative frequency table “arith_cf_r”). A least significant bit (having a numerical weight of 1) of the variable r describes a least significant bit plane of the spectral value represented by the variable a, and a bit having a numerical weight of 2 of the variable r describes a least significant bit of the spectral value represented by variable b. Thus, the variable a is updated by shifting the variable a to the left by 1 bit and adding the bit having the numerical weight of 1 of the variable r as the least significant bit. In a similar way, the variable b is updated by shifting the variable b to the left by one bit and adding the bit having the numerical weight of 2 to the variable r.

[000372] Assim, os dois bits que carregam informação mais significativa das variáveis a,b são determinados pelo valor do plano de bits mais significativo m, e um ou mais bits menos significativos (se houver) dos valores a e b são determinados por um ou mais valores do plano de bits menos significativo r.[000372] Thus, the two bits that carry the most significant information of variables a, b are determined by the value of the most significant bit plane m, and one or more less significant bits (if any) of the values a and b are determined by one or more values of the least significant bit plane r.

[000373] Para resumir o mencionado acima, se o símbolo “ARITH_STOP” não for encontrado, os planos de bits restantes são então decodificados, se houver algum, para o tuplo duplo presente. Os planos de bits restantes são decodificados do nível mais significativo ao menos significativo chamando a função “arith_decode()” lev várias vezes com a tabela de frequências cumulativas “arith_cf_r[]”. Os planos de bits decodificados r permitem a refinação do valor previamente decodificado m de acordo com o algoritmo, um código do pseudo-programa que é mostrado na figura 5j.[000373] To summarize the above, if the symbol “ARITH_STOP” is not found, the remaining bit planes are then decoded, if any, to the double tuple present. The remaining bit planes are decoded from most significant to least significant level by calling the “arith_decode()” lev function multiple times with the cumulative frequency table “arith_cf_r[]”. The decoded bit planes r allow the refinement of the previously decoded value m according to the algorithm, a pseudo-program code that is shown in figure 5j.

[000374] 11.9.2 Decodificação da faixa de bit menos significativo de acordo com a figura 5n[000374] 11.9.2 Decoding the least significant bit range according to figure 5n

[000375] De modo alternativo, entretanto, o algoritmo de uma representação do código do pseudo-programa que é mostrada na figura 5n pode também ser utilizado para a decodificação do plano de bits menos significativo. Neste caso, se o símbolo “ARITH_STOP” não for encontrado, os planos de bits restantes são então decodificados, se houver algum, para o presente tuplo duplo. Os planos de bits restantes são decodificados do nível mais significativo ao menos significativo chamando “lev” vezes “arith_decode()” com a tabela de frequências cumulativas “arith_cf_r()”. Os planos de bits decodificados r permitem a refinação do valor previamente decodificado m de acordo com o algoritmo mostrado na figura 5n.[000375] Alternatively, however, the algorithm of a pseudo-program code representation that is shown in Figure 5n can also be used for decoding the least significant bit plane. In this case, if the “ARITH_STOP” symbol is not found, the remaining bit planes are then decoded, if any, to the present double tuple. The remaining bit planes are decoded from most significant to least significant level by calling “lev” times “arith_decode()” with the cumulative frequency table “arith_cf_r()”. The decoded bit planes r allow the refinement of the previously decoded value m according to the algorithm shown in figure 5n.

[000376] 11.10 Atualização de contexto[000376] 11.10 Context update

[000377] 11.10.1 Atualização de contexto de acordo com a figura 5k, 5l, e 5m[000377] 11.10.1 Context update according to figure 5k, 5l, and 5m

[000378] A seguir, as operações utilizadas para concluir a decodificação do tuplo de valores espectrais serão descritas, tendo como referência as figuras 5k e 5l. Além disso, uma operação será descrita que é utilizada para concluir uma decodificação de um conjunto de tuplos de valores espectrais associados a uma parte corrente (por exemplo, uma estrutura corrente) de um conteúdo de áudio.[000378] Next, the operations used to complete the decoding of the tuple of spectral values will be described, with reference to figures 5k and 5l. Furthermore, an operation will be described that is used to complete a decoding of a set of tuples of spectral values associated with a current part (e.g., a current structure) of an audio content.

[000379] Deve ser observado que os algoritmos de acordo com as figuras 5k, 5l e 5m são preferidos, mesmo em algoritmos podem ser utilizados.[000379] It should be noted that algorithms according to figures 5k, 5l and 5m are preferred, even in algorithms can be used.

[000380] Agora com referência à figura 5k, pode ser visto que a entrada tendo o índice de entrada 2*i da matriz “x_ac_dec[]” é definida para ser igual a a, e que a entrada tendo o índice de entrada “2*i+1” da matriz “x_ac_dec[]” é definida para ser igual a b depois da decodificação de bit menos significativo 312d. Em outras palavras, no ponto depois da decodificação de bit menos significativo 312d, o valor não sinalizado do tuplo duplo (a,b), é completamente decodificado. É salvo no elemento (por exemplo, a matriz “x_ac_dec[]”) que mantém os coeficientes espectrais de acordo com o algoritmo mostrado na figura 5k.[000380] Now with reference to figure 5k, it can be seen that the entry having the entry index 2*i of the array “x_ac_dec[]” is defined to be equal to a, and that the entry having the entry index “2* i+1” of the array “x_ac_dec[]” is set to be equal to b after least significant bit 312d decoding. In other words, at the point after least significant bit decoding 312d, the unsigned value of the double tuple (a,b), is completely decoded. It is saved in the element (e.g. the “x_ac_dec[]” array) that holds the spectral coefficients according to the algorithm shown in figure 5k.

[000381] Subsequentemente, o contexto “q” também é atualizado para o próximo tuplo duplo. Deve ser observado que esta atualização de contexto também deve ser realizada para o último tuplo duplo. Esta atualização de contexto é realizada pela função “arith_update_context()”, uma representação do código do pseudo- programa do qual é mostrado na figura 5l.[000381] Subsequently, the context “q” is also updated to the next double tuple. It should be noted that this context update must also be performed for the last double tuple. This context update is performed by the “arith_update_context()” function, a representation of the pseudo-program code of which is shown in figure 5l.

[000382] Agora com referência à figura 5l, pode ser visto que a função “arith_update_context(i,a,b)” recebe, como variáveis de entrada, coeficientes espectrais quantizados decodificados não sinalizados (ou valores espectrais) a, b do tuplo duplo. Além disso, a função “arith_update_context” também recebe, como uma variável de entrada, um índice i (por exemplo, um índice de frequência) do coeficiente espectral quantizado para decodificar. Em outras palavras, a variável de entrada i pode, por exemplo, ser um índice do tuplo de valores espectrais, valores absolutos que são definidos pelas variáveis de entrada a, b. Como pode ser visto, a entrada “q[1][i]” da matriz “q[][]” pode ser definida a um valor que é igual a a+b+1. Além disso, o valor da entrada “q[1][i]” da matriz “q[][]” pode ser limitado ao valor hexadecimal de “0xF”. Assim, a entrada “q[1][i]” da matriz “q[][]” é obtida calculando uma soma de valores absolutos do tuplo atualmente decodificados {a,b} de valores espectrais tendo o índice de frequência i, e adicionando 1 ao resultado da dita soma.[000382] Now with reference to figure 5l, it can be seen that the function “arith_update_context(i,a,b)” receives, as input variables, unsigned decoded quantized spectral coefficients (or spectral values) a, b of the double tuple . Furthermore, the “arith_update_context” function also receives, as an input variable, an index i (e.g. a frequency index) of the quantized spectral coefficient to decode. In other words, the input variable i can, for example, be an index of the tuple of spectral values, absolute values that are defined by the input variables a, b. As can be seen, the entry “q[1][i]” of the matrix “q[][]” can be set to a value that is equal to a+b+1. Furthermore, the value of the entry “q[1][i]” of the matrix “q[][]” can be limited to the hexadecimal value of “0xF”. Thus, the entry “q[1][i]” of the matrix “q[][]” is obtained by calculating a sum of absolute values of the currently decoded tuple {a,b} of spectral values having the frequency index i, and adding 1 to the result of said sum.

[000383] Deve ser observado aqui que a entrada “q[1][i]” da matriz “q[][]” pode ser considerada como um valor da sub-região de contexto, pois descreve uma sub-região do contexto que é utilizado para uma decodificação subsequente de valores espectrais adicionais (ou tuplos de valores espectrais).[000383] It should be noted here that the entry “q[1][i]” of the matrix “q[][]” can be considered as a value of the context subregion, as it describes a subregion of the context that is used for subsequent decoding of additional spectral values (or tuples of spectral values).

[000384] Deve ser observado aqui que a soma dos valores absolutos a e b dos dois valores espectrais atualmente decodificados (versões assinadas que são armazenadas nas entradas “x_ac_dec[2*i]” e “x_ac_dec[2*i+1]” da matriz “x_ac_dec[]”), pode ser considerada como o cálculo de uma norma (por exemplo, uma norma L1) dos valores espectrais decodificados.[000384] It should be noted here that the sum of the absolute values a and b of the two currently decoded spectral values (signed versions that are stored in the “x_ac_dec[2*i]” and “x_ac_dec[2*i+1]” entries of the matrix “ x_ac_dec[]”), can be considered as the calculation of a norm (e.g. an L1 norm) of the decoded spectral values.

[000385] Foi observado que os valores da sub-região de contexto (ou seja, entradas da matriz “q[][]”), que descrevem uma norma de um vetor formado por diversos valores espectrais previamente decodificados são particularmente significativos e com memória eficiente. Foi observado que tal norma, que é calculada com base em diversos valores espectrais previamente decodificados, compreende informação significativa de contexto em uma forma compacta. Foi observado que o sinal dos valores espectrais não é tipicamente particularmente relevante para a escolha do contexto. Também foi observado que a formação de uma norma através dos diversos valores espectrais previamente decodificados tipicamente mantém a informação mais importante, embora alguns detalhes sejam descartados. Além disso, foi observado que uma limitação do valor de contexto corrente numérico ao valor máximo tipicamente não resulta em uma perda grave de informação. Preferivelmente, foi observado que é mais eficiente utilizar o mesmo estado de contexto para valores espectrais significativos que são maiores que um valor limite predeterminado. Assim, a limitação dos valores da sub-região de contexto traz consigo mais melhoria da eficiência da memória. Além disso, foi observado que a limitação dos valores da sub-região de contexto a certo valor máximo permite uma atualização eficiente computacional e particularmente simples do valor de contexto corrente numérico, que foi descrito, por exemplo, com referência às figuras 5c e 5d. Limitando os valores da sub-região de contexto ao valor comparavelmente pequeno (por exemplo, a um valor de 15), um estado de contexto que tem como base diversos valores da sub-região de contexto pode ser representado na forma eficiente, que foi discutida tendo como referência as figuras 5c e 5d.[000385] It has been observed that the values of the context subregion (i.e., entries of the matrix “q[][]”), which describe a norm of a vector formed by several previously decoded spectral values, are particularly meaningful and with memory efficient. It was observed that such a norm, which is calculated based on several previously decoded spectral values, comprises significant context information in a compact form. It has been observed that the sign of the spectral values is typically not particularly relevant to the choice of context. It was also observed that the formation of a norm across the various previously decoded spectral values typically maintains the most important information, although some details are discarded. Furthermore, it has been observed that limiting the current numeric context value to the maximum value typically does not result in a serious loss of information. Preferably, it has been observed that it is more efficient to use the same context state for significant spectral values that are greater than a predetermined threshold value. Therefore, limiting the values of the context subregion brings with it further improvement of memory efficiency. Furthermore, it was observed that limiting the values of the context subregion to a certain maximum value allows a computationally efficient and particularly simple update of the current numerical context value, which was described, for example, with reference to Figures 5c and 5d. By limiting the values of the context subregion to a comparably small value (for example, to a value of 15), a context state that is based on several values of the context subregion can be represented in the efficient way that was discussed. taking figures 5c and 5d as reference.

[000386] Além disso, foi observado que uma limitação dos valores da sub-região de contexto dos valores entre 1 e 15, traz consigo um compromisso particularmente bom entre precisão e eficiência da memória, pois 4 bits são suficientes a fim de armazenar tal valor da sub-região de contexto.[000386] Furthermore, it was observed that a limitation of the values of the context subregion of values between 1 and 15, brings with it a particularly good compromise between precision and memory efficiency, as 4 bits are sufficient in order to store such a value of the context subregion.

[000387] Entretanto, deve ser observado que em outras realizações, um valor da sub-região de contexto pode ter como base um único valor decodificado espectral somente. Neste caso, a formação de uma norma pode opcionalmente ser omitida.[000387] However, it should be noted that in other embodiments, a context subregion value may be based on a single spectral decoded value only. In this case, the formation of a standard can optionally be omitted.

[000388] O próximo tuplo duplo da estrutura é decodificado depois da conclusão da função “arith_update_context” aumentando i em 1 e refazendo o mesmo processo conforme descrito acima, começando pela função “arith_get_context()”.[000388] The next double tuple of the structure is decoded after completing the “arith_update_context” function by increasing i by 1 and repeating the same process as described above, starting with the “arith_get_context()” function.

[000389] Quando os 2 tuplos lg/2 são decodificados dentro da estrutura, ou com o símbolo de parada de acordo com “ARITH_STOP” ocorre, o processo de decodificação da amplitude espectral termina e a decodificação dos sinais começa.[000389] When the 2 lg/2 tuples are decoded within the structure, or with the stop symbol according to “ARITH_STOP” occurs, the spectral amplitude decoding process ends and the decoding of the signals begins.

[000390] Detalhes referentes à decodificação dos sinais foram discutidos com referência à figura 3, em que a decodificação dos sinais é mostrada em número de referência 314.[000390] Details regarding the decoding of the signals were discussed with reference to figure 3, in which the decoding of the signals is shown at reference number 314.

[000391] Visto que todos os coeficientes espectrais quantizados não sinalizados são decodificados, o sinal de acordo é adicionado. Para cada valor quantizado não nulo de “x_ac_dec”, um bit é lido. Se o valor de bit de leitura for igual a 0, o valor quantizado é positivo, nada é feito e o valor sinalizado é igual ao valor não sinalizado previamente decodificado. Caso contrário (ou seja, se o valor de bit de leitura é igual a 1), o coeficiente decodificado (ou valor espectral) é negativo e o complemento de dois é considerado do valor não sinalizado. Os bits do sinal são lidos das frequências baixa a mais alta. Para detalhes, a referência é feita às figuras 3 e as explicações referentes à decodificação de sinais 314.[000391] Since all unsigned quantized spectral coefficients are decoded, the agreement signal is added. For each non-zero quantized value of “x_ac_dec”, one bit is read. If the read bit value equals 0, the quantized value is positive, nothing is done, and the signed value is equal to the previously decoded unsigned value. Otherwise (i.e., if the read bit value is equal to 1), the decoded coefficient (or spectral value) is negative and the two's complement is considered to be the unsigned value. Signal bits are read from low to high frequencies. For details, reference is made to Figures 3 and the explanations regarding signal decoding 314.

[000392] A decodificação é finalizada chamando a função “arith_finish()”. Os coeficientes espectrais restantes são definidos a 0. Os respectivos estados de contexto são atualizados correspondentemente.[000392] Decoding is completed by calling the “arith_finish()” function. The remaining spectral coefficients are set to 0. The respective context states are updated correspondingly.

[000393] Para detalhes, a referência é feita à figura 5m, que mostra uma representação do código do pseudo-programa da função “arith_finish()”. Como pode ser visto, a função “arith_finish()” recebe uma variável de entrada lg que descreve os coeficientes espectrais quantizados decodificados. Preferivelmente, a variável de entrada lg da função “arith_finish” descreve um número de coeficientes espectrais atualmente decodificados, deixando os coeficientes espectrais desconsiderados, onde um valor 0 foi alocado em resposta à detecção de um símbolo “ARITH_STOP”. Uma variável de entrada N da função “arith_finish” descreve um comprimento da janela de uma janela corrente (ou seja, uma janela associada à parte corrente do conteúdo de áudio). Tipicamente, um número de valores espectrais associado a uma janela de comprimento N é igual a N/2 e um número de 2 tuplos de valores espectrais associado a uma janela de comprimento da janela N é igual a N/4.[000393] For details, reference is made to figure 5m, which shows a representation of the pseudo-program code of the “arith_finish()” function. As can be seen, the “arith_finish()” function receives an input variable lg that describes the decoded quantized spectral coefficients. Preferably, the input variable lg of the “arith_finish” function describes a number of currently decoded spectral coefficients, leaving the spectral coefficients disregarded, where a value of 0 has been allocated in response to the detection of an “ARITH_STOP” symbol. An input variable N of the “arith_finish” function describes a window length of a current window (i.e., a window associated with the current part of the audio content). Typically, a number of spectral values associated with a window of length N is equal to N/2 and a 2-tuple number of spectral values associated with a window of window length N is equal to N/4.

[000394] A função “arith_finish” também recebe, como um valor de entrada, um vetor “x_ac_dec” de valores espectrais decodificados, ou pelo menos uma referência a tal vetor de coeficientes decodificados espectrais.[000394] The “arith_finish” function also receives, as an input value, a vector “x_ac_dec” of decoded spectral values, or at least a reference to such a vector of decoded spectral coefficients.

[000395] A função “arith_finish” é configurada para definir as entradas da matriz (ou vetor) “x_ac_dec”, para as quais nenhum valor espectral foi decodificado devido à presença de uma condição de parada aritmética, a 0. Além disso, a função “arith_finish” define valores da sub-região de contexto “q[1][i]”, que são associados a um valor espectral para qual nenhum valor foi decodificado devido à presença de uma condição de parada aritmética, ao valor predeterminado de 1. O valor predeterminado de 1 corresponde ao tuplo dos valores espectrais em que ambos os valores espectrais são iguais a 0.[000395] The “arith_finish” function is configured to set the entries of the matrix (or vector) “x_ac_dec”, for which no spectral value has been decoded due to the presence of an arithmetic stop condition, to 0. Furthermore, the function “arith_finish” sets values from the context subregion “q[1][i]”, which are associated with a spectral value for which no value has been decoded due to the presence of an arithmetic stop condition, to the predetermined value of 1. The default value of 1 corresponds to the tuple of spectral values where both spectral values are equal to 0.

[000396] Assim, a função “arith_finish()” permite atualizar toda a matriz (ou vetor) “x_ac_dec[]” de valores espectrais e também toda a matriz de valores da sub-região de contexto “q[1][i]”, mesmo em uma presença de uma condição de parada aritmética.[000396] Thus, the “arith_finish()” function allows updating the entire matrix (or vector) “x_ac_dec[]” of spectral values and also the entire matrix of values of the context subregion “q[1][i] ”, even in the presence of an arithmetic stop condition.

[000397] 11.10.2 Atualização de contexto de acordo com as figuras 5o e 5p[000397] 11.10.2 Context update according to figures 5o and 5p

[000398] A seguir, outra realização da atualização de contexto será descrita tendo como referência as figuras 5o e 5p. No ponto em que o valor não sinalizado do tuplo duplo (a,b) for completamente decodificado, o contexto q é então atualizado para o próximo tuplo duplo. A atualização também é realizada se o tuplo duplo presente for o último tuplo duplo. Ambas as atualizações são feitas pela função “arith_update_context()”, a representação do código do pseudo-programa que é mostrada na figura 5o.[000398] Next, another realization of the context update will be described with reference to figures 5o and 5p. At the point where the unsigned value of the double tuple (a,b) is completely decoded, the context q is then updated to the next double tuple. The update is also performed if the present double tuple is the last double tuple. Both updates are made by the “arith_update_context()” function, the representation of the pseudo-program code shown in figure 5o.

[000399] O próximo tuplo duplo da estrutura é então decodificado aumentando i em 1 e chamando a função arith_decode(). Se os 2 tuplos lg/2 já foram decodificados com a estrutura, ou se o símbolo de parada “ARITH_STOP” ocorreu, a função “arith_finish()” é chamada. O contexto é salvo e armazenado na matriz (ou vetor) “qs” para a próxima estrutura. Um código do pseudo-programa da função “arith_save_context()” é mostrado na figura 5p.[000399] The next double tuple of the structure is then decoded by increasing i by 1 and calling the arith_decode() function. If the 2 lg/2 tuples have already been decoded with the structure, or if the stop symbol “ARITH_STOP” has occurred, the function “arith_finish()” is called. The context is saved and stored in the “qs” matrix (or vector) for the next structure. A pseudo-program code for the “arith_save_context()” function is shown in figure 5p.

[000400] Visto que todos os coeficientes espectrais quantizados não sinalizados são decodificados, o sinal é então adicional. Para cada valor não quantizado de “qdec”, um bit é lido. Se o valor de bit de leitura for igual a 0, o valor quantizado é positivo, nada é feito e o valor sinalizado é igual ao valor não sinalizado previamente decodificado. Caso contrário, o coeficiente decodificado é negativo e o complemento de dois é considerado do valor não sinalizado. Os bits sinalizados são lidos das frequências baixas às altas.[000400] Since all unsigned quantized spectral coefficients are decoded, the signal is then additional. For each non-quantized value of “qdec”, one bit is read. If the read bit value equals 0, the quantized value is positive, nothing is done, and the signed value is equal to the previously decoded unsigned value. Otherwise, the decoded coefficient is negative and the two's complement is taken from the unsigned value. Signaled bits are read from low to high frequencies.

[000401] 11.11 Sumário do processo de decodificação[000401] 11.11 Summary of the decoding process

[000402] A seguir, o processo de decodificação será brevemente resumido. Para detalhes, a referência é feita à discussão acima e também às figuras 3, 4, 5a, 5c, 5e, 5g, 5j, 5k, 5l, e 5m. Os coeficientes espectrais quantizados “x_ac_dec[]” são silenciosamente decodificados começando do coeficiente com frequência mais baixa e continuando ao coeficiente com frequência mais alta. Eles são decodificados por grupos de dois coeficientes sucessivos a,b reunindo em um assim chamado tuplo duplo (a,b) (também designado com{a,b}).[000402] Next, the decoding process will be briefly summarized. For details, reference is made to the above discussion and also to Figures 3, 4, 5a, 5c, 5e, 5g, 5j, 5k, 5l, and 5m. The quantized spectral coefficients “x_ac_dec[]” are silently decoded starting from the lowest frequency coefficient and continuing to the highest frequency coefficient. They are decoded by groups of two successive coefficients a,b assembling into a so-called double tuple (a,b) (also designated with{a,b}).

[000403] Os coeficientes decodificados “x_ac_dec[]” para o domínio de frequência (ou seja, para um modo de domínio de frequência) são então armazenados na matriz “x_ac_quant[g][win][sfb][bin]”. Uma ordem de transmissão das senhas de codificação silenciosa é de modo que quando elas são decodificadas na ordem recebida e armazenada na matriz, “bin” é o índice que aumenta mais rapidamente e “g” é o índice que aumenta mais lentamente. Dentro de uma senha, uma ordem de decodificação é a, depois b. Os coeficientes decodificados “x_ac_dec[]” para “TCX” (ou seja, para uma decodificação de áudio que utiliza uma excitação codificada por transformação) são armazenados (por exemplo, diretamente) na matriz “x_tcx_invquant[win][bin]” e uma ordem da transmissão das senhas de codificação silenciosa é de modo que quando eles são decodificados na ordem recebida e armazenada na matriz, “bin” é o índice que aumenta mais rapidamente e “win” é o índice que aumenta mais lentamente. Dentro de uma senha, a ordem de decodificação é a, depois b.[000403] The decoded coefficients “x_ac_dec[]” for the frequency domain (i.e., for a frequency domain mode) are then stored in the matrix “x_ac_quant[g][win][sfb][bin]”. One transmission order of silently encoded passwords is such that when they are decoded in the order received and stored in the array, “bin” is the fastest-increasing index and “g” is the slowest-increasing index. Within a password, a decryption order is a, then b. The decoded coefficients “x_ac_dec[]” for “TCX” (i.e. for an audio decoding using a transform-coded excitation) are stored (e.g. directly) in the matrix “x_tcx_invquant[win][bin]” and a Transmission order of silently encoded passwords is such that when they are decoded in the order received and stored in the array, “bin” is the fastest-increasing index and “win” is the slowest-increasing index. Within a password, the decryption order is a, then b.

[000404] Primeiro, o indicador “arith_reset_flag” determina se o contexto deve ser redefinido. Se o indicador for verdadeiro, isto é considerado na função “arith_map_context”.[000404] First, the “arith_reset_flag” indicator determines whether the context should be reset. If the indicator is true, this is considered in the “arith_map_context” function.

[000405] O processo de decodificação começa com uma fase de inicialização onde o vetor do elemento de contexto “q” é atualizado copiando e mapeando os elementos de contexto da estrutura prévia armazenada em “q[1][]” em “q[0][]”. Os elementos de contexto dentro de “q” são armazenados em um bit com 4 por 2 tuplos. Para detalhes, a referência é feita ao código do pseudo- programa da figura 5a.[000405] The decoding process begins with an initialization phase where the context element vector “q” is updated by copying and mapping the context elements of the previous structure stored in “q[1][]” into “q[0 ][]”. The context elements within “q” are stored in a bit with 4 by 2 tuples. For details, reference is made to the pseudo-program code in Figure 5a.

[000406] O decodificador silencioso emite 2 tuplos de coeficientes espectrais quantizados não sinalizados. Primeiramente, o estado c do contexto é calculado com base nos coeficientes espectrais previamente decodificados ao redor do tuplo duplo para decodificar. Desta forma, o estado é adicionalmente atualizado utilizando o estado de contexto do último tuplo duplo decodificado considerando somente dois novos tuplos duplos. O estado é decodificado em 17 bits e é retornado pela função “arith_get_context”. Uma representação do código do pseudo-programa da função “arith_get_context” é mostrada na figura 5c.[000406] The silent decoder outputs 2 tuples of unsigned quantized spectral coefficients. Firstly, the state c of the context is calculated based on the previously decoded spectral coefficients around the double tuple to decode. In this way, the state is additionally updated using the context state of the last double tuple decoded considering only two new double tuples. The state is decoded into 17 bits and is returned by the “arith_get_context” function. A representation of the pseudo-program code of the “arith_get_context” function is shown in figure 5c.

[000407] O estado de contexto c determina a tabela de frequências cumulativas utilizada para decodificar o plano de bit a bit mais significativo m. O mapeamento de c ao índice da tabela de frequências cumulativas correspondente “pki” é realizado por uma função “arith_get_pk()”. Uma representação do código do pseudo-programa da função “arith_get_pk()” é mostrada na figura 5e.[000407] The context state c determines the cumulative frequency table used to decode the most significant bitwise plane m. The mapping of c to the corresponding cumulative frequency table index “pki” is performed by a function “arith_get_pk()”. A representation of the pseudo-program code of the “arith_get_pk()” function is shown in figure 5e.

[000408] O valor m é decodificado utilizando a função “arith_decode()” chamada com a tabela de frequências cumulativas, “arith_cf_m[pki][]”, onde “pki” corresponde ao índice retornado por “arith_get_pk()”. O codificador (e decodificador) aritmético é uma implementação do número inteiro utilizando um método de geração de identificação com escala. O código do pseudo-programa de acordo com a figura 5g descreve o algoritmo utilizado.[000408] The value m is decoded using the function “arith_decode()” called with the cumulative frequency table, “arith_cf_m[pki][]”, where “pki” corresponds to the index returned by “arith_get_pk()”. The arithmetic encoder (and decoder) is an integer implementation using a scaled identification generation method. The pseudo-program code according to figure 5g describes the algorithm used.

[000409] Quando o valor decodificado m for o símbolo de escape “ARITH_ESCAPE”, as variáveis “lev” e “esc_nb” são aumentadas em 1 e outro valor m é decodificado. Neste caso, a função “get_pk()” é chamada mais uma vez com o valor “c+ esc_nb<<17” como argumento de entrada, onde “esc_nb” é o número de símbolos de escape previamente decodificados para o mesmo tuplo duplo e delimitado a 7.[000409] When the decoded value m is the escape symbol “ARITH_ESCAPE”, the variables “lev” and “esc_nb” are increased by 1 and another value m is decoded. In this case, the “get_pk()” function is called once again with the value “c+ esc_nb<<17” as input argument, where “esc_nb” is the number of previously decoded escape symbols for the same double delimited tuple to 7.

[000410] Visto que o valor m não é o símbolo de escape “ARITH_ESCAPE”, o decodificador verifica se o m sucessivo forma um símbolo “ARITH_STOP”. Se a condição “(esc_nb>0&&m==0)” for verdadeira, o símbolo “ARITH_STOP” é detectado e o processo de decodificação é finalizado. O decodificador vai diretamente para a decodificação do sinal descrita posteriormente. A condição significa que o restante da estrutura é composto por 0 valores.[000410] Since the value m is not the “ARITH_ESCAPE” escape symbol, the decoder checks whether the successive m forms an “ARITH_STOP” symbol. If the condition “(esc_nb>0&&m==0)” is true, the symbol “ARITH_STOP” is detected and the decoding process ends. The decoder goes directly to the signal decoding described later. The condition means that the rest of the structure is made up of 0 values.

[000411] Se o símbolo “ARITH_STOP” não for encontrado, os planos de bits restantes são então decodificados, se houver algum, para o presente tuplo duplo. Os planos de bits restantes são decodificados do nível mais significativo ao menos significativo, chamando “arith_decode()” lev várias vezes com a tabela de frequências cumulativas “arith_cf_r[]”. Os planos de bits decodificados r permitem a refinação do valor previamente decodificado m, de acordo com o algoritmo de um código do pseudo- programa que é mostrado na figura 5j. Neste ponto, o valor não sinalizado do tuplo duplo (a,b) é completamente decodificado. É salvo no elemento que mantém os coeficientes espectrais de acordo com o algoritmo, uma representação do código do pseudo-programa que é mostrada na figura 5k.[000411] If the symbol “ARITH_STOP” is not found, the remaining bit planes are then decoded, if any, to the present double tuple. The remaining bit planes are decoded from most significant to least significant level by calling “arith_decode()” lev multiple times with the cumulative frequency table “arith_cf_r[]”. The decoded bit planes r allow the refinement of the previously decoded value m, according to the algorithm of a pseudo-program code shown in figure 5j. At this point, the unsigned value of the double tuple (a,b) is completely decoded. A representation of the pseudo-program code is saved in the element that maintains the spectral coefficients according to the algorithm, which is shown in figure 5k.

[000412] O contexto “q” é também atualizado para o próximo tuplo duplo. Deve ser observado que esta atualização de contexto também deve ser realizada para o último tuplo duplo. Esta atualização de contexto é realizada pela função “arith_update_context()”, uma representação do código do pseudo- programa que é mostrada na figura 5l.[000412] The context “q” is also updated to the next double tuple. It should be noted that this context update must also be performed for the last double tuple. This context update is performed by the “arith_update_context()” function, a representation of the pseudo-program code that is shown in figure 5l.

[000413] O próximo tuplo duplo da estrutura é então decodificado aumentando i em 1 e refazendo o mesmo processo conforme descrito acima, começando pela função “arith_get_context()”. Quando os 2 tuplos lg/2 são decodificados dentro da estrutura, ou quando o símbolo de parada “ARITH_STOP” ocorre, o processo de decodificação da amplitude espectral termina e a decodificação dos sinais começa.[000413] The next double tuple of the structure is then decoded by increasing i by 1 and repeating the same process as described above, starting with the “arith_get_context()” function. When the 2 lg/2 tuples are decoded within the structure, or when the stop symbol “ARITH_STOP” occurs, the spectral amplitude decoding process ends and decoding of the signals begins.

[000414] A decodificação é finalizada chamando uma função “arith_finish()”. Os coeficientes espectrais restantes são definidos a 0. Os respectivos estados de contexto são atualizados correspondentemente. Uma representação do código do pseudo- programa da função “arith_finish” é mostrada na figura 5m.[000414] Decoding is completed by calling a function “arith_finish()”. The remaining spectral coefficients are set to 0. The respective context states are updated correspondingly. A pseudo-program code representation of the “arith_finish” function is shown in figure 5m.

[000415] Visto que todos os coeficientes espectrais quantizados não sinalizados são decodificados, o sinal de acordo é adicionado. Para cada valor quantizado não nulo de “x_ac_dec”, um bit é lido. Se o valor de bit de leitura for igual a 0, o valor quantizado é positivo, e nada é feito, e o valor sinalizado é igual ao valor não sinalizado previamente decodificado. Caso contrário, o coeficiente decodificado é negativo e o complemento de dois é considerado do valor não sinalizado. Os bits sinalizados são lidos das frequências baixas às altas.[000415] Since all unsigned quantized spectral coefficients are decoded, the agreement signal is added. For each non-zero quantized value of “x_ac_dec”, one bit is read. If the read bit value is equal to 0, the quantized value is positive, and nothing is done, and the signed value is equal to the previously decoded unsigned value. Otherwise, the decoded coefficient is negative and the two's complement is taken from the unsigned value. Signaled bits are read from low to high frequencies.

[000416] 11.12 Legendas[000416] 11.12 Subtitles

[000417] A figura 5q mostra uma legenda das definições que está relacionada aos algoritmos de acordo com as figuras 5a, 5c, 5e, 5f, 5g, 5j, 5k, 5l, e 5m.[000417] Figure 5q shows a legend of the definitions that is related to the algorithms according to figures 5a, 5c, 5e, 5f, 5g, 5j, 5k, 5l, and 5m.

[000418] A figura 5r mostra uma legenda das definições que está relacionada aos algoritmos de acordo com as figuras 5b, 5d, 5f, 5h, 5i, 5n, 5o, e 5p.[000418] Figure 5r shows a legend of the definitions that is related to the algorithms according to figures 5b, 5d, 5f, 5h, 5i, 5n, 5o, and 5p.

[000419] Tabelas de mapeamento[000419] Mapping tables

[000420] Em uma realização, de acordo com a invenção, as tabelas particularmente vantajosas “ari_lookup_m”, “ari_hash_m”, e “ari_cf_m” são utilizadas para a execução da função “arith_get_pk()” de acordo com a figura 5e ou a figura 5f, e para a execução da função “arith_decode()” conforme discutido com referência às figuras 5g, 5h e 5i. Entretanto, deve ser observado que diferentes tabelas podem ser utilizadas em algumas realizações de acordo com a invenção..[000420] In one embodiment, according to the invention, the particularly advantageous tables “ari_lookup_m”, “ari_hash_m”, and “ari_cf_m” are used for executing the function “arith_get_pk()” according to figure 5e or figure 5f, and for executing the function “arith_decode()” as discussed with reference to figures 5g, 5h and 5i. However, it should be noted that different tables may be used in some embodiments according to the invention.

[000421] 12.1 Tabela “ari hash m[742]” de acordo com as figuras 22(1), 22(2), 22(3) e 22(4)[000421] 12.1 “ari hash m[742]” table according to figures 22(1), 22(2), 22(3) and 22(4)

[000422] Um conteúdo de uma implementação particularmente vantajosa da tabela “ari_hash_m”, que é utilizado pela função “arith_get_pk”, uma primeira realização preferida que foi descrita com referência à figura 5e, e uma segunda realização que foi descrita com referência à figura 5f, é mostrada na tabela das figuras 22(1) a 22(4). Deve ser observado que a tabela das figuras 22(1) a 22(4) lista as 742 entradas da tabela (ou matriz) “ari_hash_m[742]”. Também deve ser observado que a representação em tabela das figuras 22(1) a 22(4) mostra os elementos na ordem dos índices do elemento, de modo que o primeiro valor “0x00000104UL” corresponde a uma entrada da tabela “ari_hash_m[0]” tendo um índice do elemento (ou índice da tabela) 0, e de modo que o último valor “0xFFFFFF00UL” corresponda a uma entrada da tabela “ari_hash_m[741]” tendo o índice do elemento ou índice da tabela 741. Ainda deve ser observado que “0x” indica que as entradas da tabela da tabela “ari_hash_m[]” são representadas em um formato hexadecimal. Além disso, deve ser observado aqui que o sufixo “UL” indica que as entradas da tabela da tabela “ari_hash_m[]” são representadas como valores de número inteiro “longos” não sinalizados (tendo uma precisão de 32-bits).[000422] A content of a particularly advantageous implementation of the table “ari_hash_m”, which is used by the function “arith_get_pk”, a first preferred embodiment which has been described with reference to figure 5e, and a second embodiment which has been described with reference to figure 5f , is shown in the table in figures 22(1) to 22(4). It should be noted that the table in figures 22(1) to 22(4) lists the 742 entries of the table (or matrix) “ari_hash_m[742]”. It should also be noted that the table representation of figures 22(1) to 22(4) shows the elements in the order of the element indices, so that the first value “0x00000104UL” corresponds to a table entry “ari_hash_m[0] ” having an element index (or table index) 0, and such that the last value “0xFFFFFF00UL” corresponds to a table entry “ari_hash_m[741]” having element index or table index 741. It must still be noted that “0x” indicates that the table entries of the “ari_hash_m[]” table are represented in a hexadecimal format. Furthermore, it should be noted here that the “UL” suffix indicates that the table entries of the “ari_hash_m[]” table are represented as unsigned “long” integer values (having a precision of 32-bits).

[000423] Além disso, deve ser observado que as entradas de tabela da tabela “ari_hash_m[]” de acordo com as figuras 22(1) a 22(4) são dispostas em uma ordem numérica, a fim de permitir a execução da pesquisa da tabela 506b, 508b, 510b da função “arith_get_pk()”.[000423] Furthermore, it should be noted that the table entries of the “ari_hash_m[]” table according to figures 22(1) to 22(4) are arranged in a numerical order in order to allow the search to be performed from table 506b, 508b, 510b of the “arith_get_pk()” function.

[000424] Ainda deve ser observado que os 24 bits mais significativos das entradas de tabela da tabela “ari_hash_m” representam certos valores de estado significativos (e podem ser considerados como uma primeira sub-entrada), enquanto os 8 bits menos significativos representam valores de índice de regra de mapeamento “pki” (e podem ser considerados como uma segunda sub- entrada). Assim, as entradas da tabela “ari_hash_m[]” descrevem um mapeamento de “impacto direto” de um valor de contexto em um valor de índice de regra de mapeamento “pki”.[000424] It should further be noted that the 24 most significant bits of the table entries of the “ari_hash_m” table represent certain significant state values (and can be considered as a first sub-entry), while the 8 least significant bits represent values of mapping rule index “pki” (and can be considered as a second sub-entry). Thus, the “ari_hash_m[]” table entries describe a “direct impact” mapping of a context value to a “pki” mapping rule index value.

[000425] Entretanto, os 24 bits mais altos das entradas da tabela “ari_hash_m[]” representam, ao mesmo tempo, limites de intervalos de valores de contexto numéricos, no quais o mesmo valor de índice de regra de mapeamento está associado. Detalhes referentes a este conceito já foram discutidos acima.[000425] However, the highest 24 bits of the table entries “ari_hash_m[]” represent, at the same time, limits of ranges of numeric context values, in which the same mapping rule index value is associated. Details regarding this concept have already been discussed above.

[000426] 12.2 Tabela “ari lookup m” de acordo com a figura 21[000426] 12.2 “ari lookup m” table according to figure 21

[000427] Um conteúdo de uma realização particularmente vantajosa da tabela “ari_lookup_m” é mostrado na tabela da figura 21. Deve ser observado aqui que a tabela da figura 21 lista as entradas da tabela “ari_lookup_m”. As entradas são referenciadas por um índice de entrada do tipo número inteiro unidimensional (também designado como “índice de elemento” ou “índice da matriz” ou “índice da tabela”) que é, por exemplo, designado como “i_max” ou “i_min” ou “i”. Deve ser observado que a tabela “ari_lookup_m”, que compreende um total de 742 entradas, é bem adequada para uso pela função “arith_get_pk” de acordo com a figura 5e ou a figura 5f. Também deve ser observado que a tabela “ari_lookup_m” de acordo com a figura 21 é adaptada para cooperar com a tabela “ari_hash_m” de acordo com a figura 22.[000427] A content of a particularly advantageous embodiment of the “ari_lookup_m” table is shown in the table of figure 21. It should be noted here that the table of figure 21 lists the entries of the “ari_lookup_m” table. Entries are referenced by a one-dimensional integer entry index (also designated as “element index” or “array index” or “table index”) which is, for example, designated as “i_max” or “i_min ” or “i”. It should be noted that the “ari_lookup_m” table, which comprises a total of 742 entries, is well suited for use by the “arith_get_pk” function according to figure 5e or figure 5f. It should also be noted that the “ari_lookup_m” table according to figure 21 is adapted to cooperate with the “ari_hash_m” table according to figure 22.

[000428] Deve ser observado que as entradas da tabela “ari_lookup_m[742]” são listadas em ordem crescente do índice da tabela “i” (por exemplo, “i_min” ou “i_max”) entre 0 e 741. O termo “0x” indica que as entradas da tabela são descritas em um formato hexadecimal. Assim, a primeira entrada de tabela “0x01” corresponde à entrada de tabela “ari_lookup_m[0]” tendo o índice da tabela 0 e a última entrada de tabela “0x27” corresponde à entrada de tabela “ari_lookup_m[741]” tendo o índice da tabela 741.[000428] It should be noted that the entries of the table “ari_lookup_m[742]” are listed in ascending order of the index of table “i” (e.g., “i_min” or “i_max”) between 0 and 741. The term “0x ” indicates that table entries are described in a hexadecimal format. Thus, the first table entry “0x01” corresponds to the table entry “ari_lookup_m[0]” having the table index 0 and the last table entry “0x27” corresponds to the table entry “ari_lookup_m[741]” having the index from table 741.

[000429] Também deve ser observado que as entradas da tabela “ari_lookup_m[]” são associadas aos intervalos definidos pelas entradas adjacentes da tabela “arith_hash_m[]”. Assim, as entradas da tabela “ari_lookup_m” descrevem valores de índice de regra de mapeamento associados aos intervalos de valores de contexto numéricos, em que os intervalos são definidos pelas entradas da tabela “arith_hash_m”.[000429] It should also be noted that entries in the “ari_lookup_m[]” table are associated with the ranges defined by adjacent entries in the “arith_hash_m[]” table. Thus, the “ari_lookup_m” table entries describe mapping rule index values associated with numeric context value ranges, where the ranges are defined by the “arith_hash_m” table entries.

[000430] 12.3. Tabela “ari cf m[64][17]” de acordo com as figuras 23(1), 23(2) e 23(3)[000430] 12.3. Table “ari cf m[64][17]” according to figures 23(1), 23(2) and 23(3)

[000431] A figura 23 mostra um conjunto de 64 tabelas de frequências cumulativas (ou subtabelas) “ari_cf_m[pki][17]”, uma que é selecionada pelo codificador de áudio 100, 700 ou um decodificador de áudio 200, 800, por exemplo, para a execução da função “arith_decode()”, ou seja, para uma decodificação do valor do plano de bits mais significativo. A selecionada das 64 tabelas de frequências cumulativas (ou subtabelas) mostradas nas figuras 23(1) a 23(3) considera uma função da tabela “cum_freq[]” na execução da função “arith_decode()”.[000431] Figure 23 shows a set of 64 cumulative frequency tables (or subtables) "ari_cf_m[pki][17]", one which is selected by the audio encoder 100, 700 or an audio decoder 200, 800, for example, for executing the “arith_decode()” function, that is, for decoding the value of the most significant bit plane. The one selected from the 64 cumulative frequency tables (or subtables) shown in figures 23(1) to 23(3) considers a function from the “cum_freq[]” table when executing the “arith_decode()” function.

[000432] Como pode ser visto das figuras 23(1) a 23(3), cada sub-bloco ou linha representa a tabela de frequências cumulativas tendo 17 entradas. Por exemplo, um primeiro sub-bloco 2310 representa as 17 entradas da tabela de frequências cumulativas para “pki=0”. Um segundo sub-bloco ou linha 2312 representa as 17 entradas da tabela de frequências cumulativas para “pki=1”. Finalmente, um 64° sub-bloco ou linha 2364 representa as 17 entradas da tabela de frequências cumulativas para “pki=63”. Assim, as figuras 23(1) a 23(3) efetivamente representam as 64 diferentes tabelas de frequências cumulativas (ou subtabelas) de “pki=0” para “pki=95”, em que cada uma das 64 tabelas de frequências cumulativas é representada por um sub-bloco (envolvido por suportes enrolados) ou linha, e em que cada uma das ditas tabelas de frequências cumulativas compreende 17 entradas.[000432] As can be seen from figures 23(1) to 23(3), each sub-block or line represents the cumulative frequency table having 17 entries. For example, a first subblock 2310 represents the 17 cumulative frequency table entries for “pki=0”. A second subblock or line 2312 represents the 17 cumulative frequency table entries for “pki=1”. Finally, a 64th subblock or line 2364 represents the 17 cumulative frequency table entries for “pki=63”. Thus, figures 23(1) to 23(3) effectively represent the 64 different cumulative frequency tables (or subtables) from “pki=0” to “pki=95”, where each of the 64 cumulative frequency tables is represented by a sub-block (surrounded by coiled supports) or line, and wherein each of said cumulative frequency tables comprises 17 entries.

[000433] Dentro de um sub-bloco ou linha (por exemplo, um sub-bloco ou linha 2310 ou 2312, ou um sub-bloco ou linha 2396), um primeiro valor (por exemplo, um primeiro valor 708 do primeiro sub-bloco 2310) descreve uma primeira entrada da tabela de frequências cumulativas (tendo um índice da matriz ou índice da tabela de 0) representada pelo sub-bloco ou linha, e um último valor (por exemplo, um último valor 0 do primeiro sub-bloco ou linha 2310) descreve uma última entrada da tabela de frequências cumulativas (tendo um índice da matriz ou índice da tabela de 16) representada pelo sub-bloco ou linha.[000433] Within a sub-block or line (e.g., a sub-block or line 2310 or 2312, or a sub-block or line 2396), a first value (e.g., a first value 708 of the first sub- block 2310) describes a first cumulative frequency table entry (having a matrix index or table index of 0) represented by the subblock or row, and a last value (e.g., a last value 0 of the first subblock or line 2310) describes a last cumulative frequency table entry (having a matrix index or table index of 16) represented by the sub-block or line.

[000434] Assim, cada sub-bloco 2310, 2312, 2364 da representação da tabela da figura 23 representa as entradas da tabela de frequências cumulativas para uso pela função “arith_decode” de acordo com a figura 5g, ou de acordo com as figuras 5h e 5i. A variável de entrada “cum_freq[]” da função “arith_decode” descreve qual das 64 tabelas de frequências cumulativas (representadas pelos sub-blocos individuais de 17 entradas da tabela “arith_cf_m”) deve ser utilizada para a decodificação dos coeficientes espectrais correntes.[000434] Thus, each sub-block 2310, 2312, 2364 of the table representation of figure 23 represents the cumulative frequency table entries for use by the “arith_decode” function according to figure 5g, or according to figures 5h and 5i. The input variable “cum_freq[]” of the “arith_decode” function describes which of the 64 cumulative frequency tables (represented by the individual sub-blocks of 17 entries of the “arith_cf_m” table) should be used for decoding the current spectral coefficients.

[000435] 12.4 Tabela “ari cf r[]” de acordo com a figura 24[000435] 12.4 Table “ari cf r[]” according to figure 24

[000436] A figura 24 mostra um conteúdo da tabela “ari_cf_r[]”.[000436] Figure 24 shows the contents of the “ari_cf_r[]” table.

[000437] As quatro entradas da dita tabela são mostradas na figura 24. Entretanto, deve ser observado que a tabela “ari_cf_r” pode eventualmente ser diferente em outras realizações.[000437] The four entries of said table are shown in figure 24. However, it should be noted that the “ari_cf_r” table may eventually be different in other embodiments.

[000438] Visão geral, avaliação de desempenho e vantagens[000438] Overview, performance evaluation and advantages

[000439] As realizações de acordo com a invenção utilizam as funções atualizadas (ou algoritmos) e um conjunto de tabelas atualizadas, conforme discutido acima, para obter uma desvantagem melhorada entre a complexidade computacional, exigência de memória e eficiência da codificação.[000439] Embodiments according to the invention utilize the updated functions (or algorithms) and a set of updated tables, as discussed above, to obtain an improved trade-off between computational complexity, memory requirement and coding efficiency.

[000440] Falando de forma geral, as realizações, de acordo com a invenção, criam uma codificação espectral silenciosa melhorada. As realizações, de acordo com a presente invenção, descrevem uma melhoria da codificação espectral silenciosa em USAC (codificação de áudio e voz unificada).[000440] Generally speaking, the embodiments, according to the invention, create an improved silent spectral coding. Embodiments according to the present invention describe an improvement of silent spectral coding in USAC (unified audio and speech coding).

[000441] As realizações, de acordo com a invenção, criam uma proposta atualizada para CE na codificação espectral silenciosa melhorada de coeficientes espectrais, com base nos esquemas conforme apresentado nos papéis de entrada MPEG m16912 e m17002. Ambas as propostas foram avaliadas, resultados potenciais eliminados e as forças combinadas. Além disso, as realizações da invenção compreendem uma atualização das tabelas de codificação espectral silenciosa para aplicação em uma especificação USAC atual.[000441] The embodiments, according to the invention, create an updated proposal for CE in improved silent spectral coding of spectral coefficients, based on the schemes as presented in the MPEG input papers m16912 and m17002. Both proposals were evaluated, potential outcomes eliminated, and forces combined. Furthermore, embodiments of the invention comprise an update of the silent spectral coding tables for application to a current USAC specification.

[000442] 13.1. Visão geral[000442] 13.1. Overview

[000443] A seguir, uma breve visão geral será dada. No decorrer da padronização contínua da USAC (Unified Speech e Audio Coding), um esquema espectral de codificação silenciosa (esquema de codificação de entropia aka) em USAC foi proposto. Este esquema espectral de codificação silenciosa ajuda a codificar mais eficientemente os coeficientes espectrais quantizados de forma sem perda. Desta forma, os coeficientes espectrais são mapeados às senhas correspondentes de comprimento variável. Este esquema de codificação de entropia tem como base um esquema de codificação aritmético com base em contexto: O contexto (ou seja, os coeficientes espectrais próximos) de um coeficiente espectral determina uma distribuição de probabilidade (tabela de frequência cumulativa), que é utilizada para a codificação aritmética do coeficiente espectral.[000443] Next, a brief overview will be given. In the course of ongoing standardization of USAC (Unified Speech and Audio Coding), a silent spectral coding scheme (aka entropy coding scheme) in USAC has been proposed. This spectral silent coding scheme helps to more efficiently encode quantized spectral coefficients in a lossless manner. In this way, the spectral coefficients are mapped to corresponding passwords of variable length. This entropy coding scheme is based on a context-based arithmetic coding scheme: The context (i.e., the nearby spectral coefficients) of a spectral coefficient determines a probability distribution (cumulative frequency table), which is used to the arithmetic coding of the spectral coefficient.

[000444] As realizações de acordo com a presente invenção utilizam um conjunto de tabelas atualizado para o esquema espectral de codificação, conforme previamente proposto no contexto de USAC. Como base, deve ser observado que a tecnologia convencional da codificação espectral silenciosa consiste primeiramente em um algoritmo e segundo em um conjunto de tabelas treinadas (ou, pelo menos, compreende um algoritmo e um conjunto de tabelas treinadas). Este conjunto de tabelas treinadas convencionais tem como base os fluxos de bit WD4 USAC. Visto que USAC agora avançou para WD7, e mudanças significantes foram aplicadas à especificação de USAC, entretanto, um novo conjunto de tabelas retreinadas é utilizado nas realizações de acordo com a invenção, que tem como base a versão mais recente de USA WD7. O próprio algoritmo permanece inalterado. Como um efeito lateral, as tabelas retreinadas provêm o desempenho de compressão melhor do que qualquer um dos esquemas apresentados previamente.[000444] Embodiments according to the present invention use an updated set of tables for the spectral coding scheme, as previously proposed in the USAC context. As a basis, it should be noted that conventional silent spectral coding technology consists first of an algorithm and second of a set of trained tables (or, at least, comprises an algorithm and a set of trained tables). This set of conventional trained tables is based on WD4 USAC bitstreams. Since USAC has now advanced to WD7, and significant changes have been applied to the USAC specification, however, a new set of retrained tables is used in the embodiments according to the invention, which is based on the latest version of USA WD7. The algorithm itself remains unchanged. As a side effect, the retrained tables provide better compression performance than any of the previously presented schemes.

[000445] De acordo com a presente invenção, é proposto substituir as tabelas treinadas convencionais pelas tabelas retreinadas conforme apresentado aqui, que resulta em um desempenho da codificação aumentado.[000445] According to the present invention, it is proposed to replace conventional trained tables with retrained tables as presented here, which results in increased coding performance.

[000446] 13.2. Introdução[000446] 13.2. Introduction

[000447] A seguir, uma introdução será provida.[000447] Next, an introduction will be provided.

[000448] Para o item do trabalho de USAC, várias propostas sobre a atualização do esquema de codificação silenciosa foram trazidas durante as últimas reuniões de forma colaborativa. Entretanto, este trabalho foi basicamente iniciado na 89a reunião. Assim tem sido uma prática comum para todas as propostas na codificação do coeficiente espectral para mostrar os resultados de desempenho com base nos fluxos de bits de qualidade de referência WD4 de USAC e treinamento em um banco de dados de treinamento de WD 4.[000448] For the USAC work item, several proposals on updating the silent coding scheme were brought up during the last few meetings collaboratively. However, this work was basically started at the 89th meeting. Thus it has been common practice for all proposals in spectral coefficient encoding to show performance results based on USAC's WD4 reference quality bitstreams and training on a WD4 training database.

[000449] Entretanto, grandes melhorias em outros campos de USAC, em particular ao processamento e janelamento de estéreo, foram incorporadas na especificação de USAC até agora. Foi observado que estas melhorias também afetam levemente as estatísticas para a codificação espectral silenciosa. Os resultados mostrados para a codificação silenciosa CEs podem desta forma ser referidos como subideais, desde que não correspondam à ultima revisão de WD.[000449] However, major improvements in other fields of USAC, in particular stereo processing and windowing, have been incorporated into the USAC specification so far. It was observed that these improvements also slightly affect the statistics for silent spectral coding. The results shown for silent coding CEs can thus be referred to as suboptimal, as long as they do not correspond to the latest revision of WD.

[000450] Certamente, as tabelas da codificação espectral silenciosa são sugeridas como melhores adaptadas aos algoritmos atualizados e às estatísticas dos valores espectrais a ser codificados e decodificados.[000450] Certainly, silent spectral coding tables are suggested as better adapted to the updated algorithms and statistics of the spectral values to be encoded and decoded.

[000451] 13.3. Breve descrição do algoritmo[000451] 13.3. Brief description of the algorithm

[000452] A seguir, uma breve descrição do algoritmo será provida.[000452] Next, a brief description of the algorithm will be provided.

[000453] Para superar a questão de consumo de memória e a complexidade computacional, um esquema de codificação silenciosa melhorado é proposto para substituir o esquema como no projeto de trabalho 6/7 (WD6/7). O foco principal no desenvolvimento foi colocado na redução da demanda de memória, enquanto mantém a eficiência de compressão e não aumenta a complexidade computacional. Mais especificamente a meta era atingir a melhor desvantagem no espaço de complexidade multidimensional das exigências desempenho de compressão, complexidade e exigências de memória.[000453] To overcome the issue of memory consumption and computational complexity, an improved silent coding scheme is proposed to replace the scheme as in working design 6/7 (WD6/7). The main focus in development was placed on reducing memory demand while maintaining compression efficiency and not increasing computational complexity. More specifically the goal was to achieve the best tradeoff in the multidimensional complexity space of compression performance, complexity and memory requirements.

[000454] A proposta do novo esquema de codificação empresta a característica principal do codificador silencioso WD6/7, a saber, a adaptação do contexto. O contexto é derivado utilizando coeficientes espectrais previamente decodificados, tão próximo quanto em WD6/7 da estrutura passada e presente. Entretanto, os coeficientes espectrais são agora codificados combinando dois coeficientes juntos para formar um tuplo duplo. Outra diferença permanece no fato de que os coeficientes espectrais são agora divididos em três partes, o sinal, os bits mais significativos (MSBs) e os bits menos significativos (LSBs). O sinal é codificado independentemente da magnitude que é ainda dividida em duas partes, os dois bits mais significativos e o restante dos bits, se existirem. Os 2 tuplos nos quais a magnitude dos dois elementos é inferior ou igual a 3 são codificados diretamente pela codificação de MSBs. Caso contrário, uma senha de escape é transmitida primeiramente para sinalizar qualquer plano de bits adicional. Na versão base, a informação ausente, os LSBs e o sinal, são ambos codificados utilizando a distribuição uniforme de probabilidade. De modo alternativo, uma diferente distribuição de probabilidade pode ser utilizada.[000454] The proposed new coding scheme borrows the main feature of the WD6/7 silent encoder, namely context adaptation. Context is derived using previously decoded spectral coefficients, as close as in WD6/7 to past and present structure. However, spectral coefficients are now encoded by combining two coefficients together to form a double tuple. Another difference remains in the fact that the spectral coefficients are now divided into three parts, the signal, the most significant bits (MSBs) and the least significant bits (LSBs). The signal is encoded independently of the magnitude which is further divided into two parts, the two most significant bits and the rest of the bits, if any. The 2-tuples in which the magnitude of the two elements is less than or equal to 3 are directly encoded by encoding MSBs. Otherwise, an escape password is passed first to signal any additional bit planes. In the base version, the missing information, the LSBs and the signal, are both encoded using the uniform probability distribution. Alternatively, a different probability distribution can be used.

[000455] A redução do tamanho da tabela é ainda possível, visto que:[000455] Reducing the size of the table is still possible, since:

[000456] somente probabilidades para 17 símbolos precisam ser armazenadas: símbolo {[0;+3], [0;+3]}+ESC;[000456] only probabilities for 17 symbols need to be stored: symbol {[0;+3], [0;+3]}+ESC;

[000457] não há necessidade em armazenar uma tabela de agrupamento (grupos e, grupos d, vetores dg);[000457] there is no need to store a grouping table (e groups, d groups, dg vectors);

[000458] o tamanho da tabela hash pode ser reduzido com um treinamento realizado.[000458] the size of the hash table can be reduced with training carried out.

[000459] 13.3.1 Codificação de MSBs[000459] 13.3.1 Coding of MSBs

[000460] A seguir, uma codificação de MSBs será descrita.[000460] Next, an encoding of MSBs will be described.

[000461] Conforme já mencionado, a principal diferença entre WD6/7, propostas prévias e a proposta atual, é a dimensão dos símbolos. Em WD6/7 4-tuplos foram considerados para a geração de contexto e a codificação silenciosa. Nas submissões anteriores, 1 tuplo foi utilizado em vez de reduzir as exigências de ROM. No decorrer de nosso desenvolvimento, os 2 tuplos foram considerados o melhor compromisso para reduzir as exigências de ROM sem aumentar a complexidade computacional. Em vez de considerar quatro 4-tuplos para a derivação de contexto, agora quatro tuplos duplos são considerados. Conforme mostrado na figura 25, três tuplos duplos vêm da estrutura anterior e um da estrutura presente.[000461] As already mentioned, the main difference between WD6/7, previous proposals and the current proposal, is the size of the symbols. In WD6/7 4-tuples were considered for context generation and silent encoding. In previous submissions, 1-tuple was used instead to reduce ROM requirements. During our development, 2-tuples were considered the best compromise for reducing ROM requirements without increasing computational complexity. Instead of considering four 4-tuples for context derivation, now four double-tuples are considered. As shown in figure 25, three double tuples come from the previous structure and one from the present structure.

[000462] A redução no tamanho da tabela é feita devido a três fatores principais. Primeiro, somente probabilidades para 17 símbolos precisam ser armazenadas (ou seja, símbolo {[0;+3], [0;+3]} + ESC). As tabelas de agrupamento (ou seja, grupos e, grupos d, e vetores dg) não são mais necessárias. Finalmente, o tamanho da tabela hash foi reduzido realizando um treinamento apropriado.[000462] The reduction in table size is made due to three main factors. First, only probabilities for 17 symbols need to be stored (i.e. symbol {[0;+3], [0;+3]} + ESC). The clustering tables (i.e., e-groups, d-groups, and dg-vectors) are no longer needed. Finally, the size of the hash table was reduced by performing appropriate training.

[000463] Embora a dimensão fosse reduzida de quatro para dois, a complexidade foi mantida na faixa em WD6/7 do Padrão de Projeto USAC. Foi obtido simplificando tanto a geração de contexto como o acesso da tabela hash.[000463] Although the dimension was reduced from four to two, the complexity was maintained in the WD6/7 range of the USAC Design Standard. It was achieved by simplifying both context generation and hash table access.

[000464] As diferentes simplificações e otimizações foram feitas de forma que o desempenho da codificação não foi afetado, e mais levemente melhorado.[000464] The different simplifications and optimizations were made in such a way that the coding performance was not affected, and more slightly improved.

[000465] 13.3.2 Codificação de LSBs[000465] 13.3.2 LSB coding

[000466] Os LSBs são codificados com uma distribuição uniforme de probabilidade. Comparado ao WD6/7, os LSBs são agora considerados dentro de tuplos duplos em vez de 4 t-tuplos. Entretanto, a codificação diferente dos bits menos significativos é possível.[000466] LSBs are encoded with a uniform probability distribution. Compared to WD6/7, LSBs are now considered to be within double-tuples instead of 4-t-tuples. However, different encoding of the least significant bits is possible.

[000467] 13.3.3 Codificação do sinal[000467] 13.3.3 Signal coding

[000468] O sinal é codificado sem utilizar o codificador de núcleo aritmético para redução de complexidade. O sinal é transmitido em 1 bit apenas quando a magnitude corresponde for não nula. 0 significa um valor positivo e 1 significa um valor negativo.[000468] The signal is encoded without using the arithmetic core encoder to reduce complexity. The signal is transmitted in 1 bit only when the corresponding magnitude is non-zero. 0 means a positive value and 1 means a negative value.

[000469] 13.4. Atualização das tabelas propostas[000469] 13.4. Update of proposed tables

[000470] Esta contribuição provê um conjunto de tabelas atualizado para o esquema de esquema espectral de codificação silenciosa de USAC. As tabelas foram retreinadas com base nos fluxos de bits atuais WD6/7 de USA. Longe das tabelas atuais, que resultam de um processo de treinamento, o algoritmo permanece inalterado.[000470] This contribution provides an updated set of tables for the USAC silent coding spectral scheme scheme. The tables have been retrained based on current USA WD6/7 bitstreams. Far from the current tables, which result from a training process, the algorithm remains unchanged.

[000471] Para investigar o efeito do retreinamento, a eficiência do código e a exigência de memória das novas tabelas são comparados com a proposta anterior (M17558) e o WD6. WD6 é selecionado como um ponto de referência desde que a) os resultados na 92a reunião foram dados com relação a esta referência e b) as diferenças entre WD6 e WD7 são apenas muito pequenas (bugs de segurança apenas, com nenhum efeito na codificação de entropia ou distribuição de coeficientes espectrais).[000471] To investigate the effect of retraining, the code efficiency and memory requirement of the new tables are compared with the previous proposal (M17558) and WD6. WD6 is selected as a reference point since a) the results at the 92nd meeting were given with respect to this reference and b) the differences between WD6 and WD7 are only very small (security bugs only, with no effect on coding entropy or distribution of spectral coefficients).

[000472] 13.4.1 Eficiência da codificação[000472] 13.4.1 Coding efficiency

[000473] Primeiramente, a eficiência da codificação do novo conjunto de tabelas proposto é comparada com USAC WD6 e CE conforme proposto em M17558. Como pode ser visto na representação em tabela da figura 26, por um simples retreinamento a média aumentou na eficiência da codificação (comparada a WD6) poderia ser aumentado de 1,74% (M17558) a 2,45% (nova proposta, de acordo com uma realização da invenção). Comparado a M17558, o ganho de compressão poderia então ser elevado aproximadamente 0,7% nas realizações de acordo com a invenção.[000473] Firstly, the coding efficiency of the proposed new set of tables is compared with USAC WD6 and CE as proposed in M17558. As can be seen in the table representation of figure 26, by a simple retraining the average increase in coding efficiency (compared to WD6) could be increased from 1.74% (M17558) to 2.45% (new proposal, according to with an embodiment of the invention). Compared to M17558, the compression gain could then be increased by approximately 0.7% in the embodiments according to the invention.

[000474] A figura 27 visualiza o ganho de compressão para todos os pontos operacionais. Como pode ser visto, um ganho mínimo de compressão de pelo menos 2% pode ser atingido utilizando as realizações de acordo com a invenção comparado a WD6. Para taxas baixas, como 12 kbit/s e 16 kbit/s, o ganho de compressão é ainda levemente aumentado. O bom desempenho também é retido nas taxas de bits mais altas como 64 kbit/s, onde um aumento significativo na eficiência da codificação de mais do que 3% pode ser observado.[000474] Figure 27 visualizes the compression gain for all operating points. As can be seen, a minimum compression gain of at least 2% can be achieved using the embodiments according to the invention compared to WD6. For low rates, such as 12 kbit/s and 16 kbit/s, the compression gain is even slightly increased. Good performance is also retained at higher bitrates such as 64 kbit/s, where a significant increase in coding efficiency of more than 3% can be observed.

[000475] Deve ser observado que uma trancodificação sem perda de todos os fluxos de bits da qualidade de referência WD6 comprovou ser possível sem violar as restrições do reservatório de bit. Resultados mais detalhados serão dados na seção 13.6.[000475] It should be noted that lossless transcoding of all WD6 reference quality bit streams has proven possible without violating bit reservoir constraints. More detailed results will be given in section 13.6.

[000476] 13.4.2 Demanda e complexidade da memória[000476] 13.4.2 Memory demand and complexity

[000477] Depois, a demanda e complexidade da memória são comparadas com USAC WD6 e CE conforme proposto em M17558. A tabela da figura 28 compara a demanda de memória para o codificador silencioso como em WD6, proposto em M17558 e a Nova Proposta de acordo com uma realização da invenção. Como pode ser claramente visto, a demanda de memória é significantemente reduzida adotando o novo algoritmo, conforme proposto em M17558. Ainda pode ser visto que para a Nova Proposta o tamanho total da tabela poderia ainda ser levemente reduzido em aproximadamente 80 palavras (32 bit), resultando em uma demanda de ROM total de 1441 palavras, e uma demanda de RAM total de 64 palavras (32 bit) por canal de áudio. A pequena economia na demanda de ROM é o resultado de uma melhor troca entre o número de modelos de probabilidade e o tamanho da tabela hash, encontrado pelo algoritmo de treinamento automático com base nos novos fluxos de bits de treinamento do conjunto de WD6. Para mais detalhes a referência é feita à tabela da figura 29.[000477] Then, the memory demand and complexity are compared with USAC WD6 and CE as proposed in M17558. The table in figure 28 compares the memory demand for the silent encoder as in WD6, proposed in M17558 and the New Proposal according to an embodiment of the invention. As can be clearly seen, the memory demand is significantly reduced by adopting the new algorithm, as proposed in M17558. It can still be seen that for the New Proposal the total table size could still be slightly reduced by approximately 80 words (32 bits), resulting in a total ROM demand of 1441 words, and a total RAM demand of 64 words (32 bit) per audio channel. The small savings in ROM demand are the result of a better trade-off between the number of probability models and the size of the hash table, found by the automatic training algorithm based on the new training bitstreams from the WD6 set. For more details, reference is made to the table in figure 29.

[000478] Em termos de complexidade, a complexidade computacional dos esquemas propostos mais recentes foi comparada com uma versão otimizada do silêncio corrente no USAC. Foi observado por um método “caneta e papel” e pela instrução do código que o novo esquema de codificação tem a mesma ordem de complexidade que o esquema atual. Conforme informado na tabela da figura 30 para o estéreo de 32 kbps e a tabela da figura 31 para os pontos operacionais mono de 12 kbps, a complexidade estimada mostra um aumento de 0,006 em peso MOPS e 0,024 em peso MOPS respectivamente sobre uma implementação otimizada do decodificador silencioso de WD6. Comparado à complexidade geral de aproximadamente 11,7 PCU [2], estas diferenças podem ser consideradas insignificantes.[000478] In terms of complexity, the computational complexity of the most recent proposed schemes was compared with an optimized version of the current silence in USAC. It was observed by a “pen and paper” method and code instruction that the new coding scheme has the same order of complexity as the current scheme. As reported in the table in Figure 30 for 32 kbps stereo and the table in Figure 31 for the 12 kbps mono operating points, the estimated complexity shows an increase of 0.006 in MOPS weight and 0.024 in MOPS weight respectively over an optimized implementation of WD6 silent decoder. Compared to the overall complexity of approximately 11.7 PCU [2], these differences can be considered insignificant.

[000479] 13.5. Conclusão[000479] 13.5. Conclusion

[000480] A seguir, algumas conclusões serão providas.[000480] Next, some conclusions will be provided.

[000481] Um novo conjunto de tabelas para o esquema espectral de codificação silenciosa de USAC foi apresentado. Em contraste à proposta anterior, que é o resultado de um treinamento com base nos fluxos de bits mais antigos, as novas tabelas propostas são agora treinadas nos fluxos de bits WD USAC atuais, em que um conceito de treinamento avançado foi utilizado. Por este retreinamento, a eficiência da codificação nos fluxos de bits atuais de USAC poderiam ser melhorados, sem sacrificar a baixa demanda de memória ou aumentar a complexidade comparada às propostas anteriores. Comparado ao USAC WD6, a demanda de memória poderia ser significantemente reduzida.[000481] A new set of tables for the USAC silent coding spectral scheme has been presented. In contrast to the previous proposal, which is the result of training based on older bitstreams, the proposed new tables are now trained on current WD USAC bitstreams, where an advanced training concept was used. By this retraining, coding efficiency in current USAC bitstreams could be improved, without sacrificing low memory demand or increasing complexity compared to previous proposals. Compared to the USAC WD6, the memory demand could be significantly reduced.

[000482] 13.6. Informação detalhada sobre a transcodificação dos fluxos de bits WD6[000482] 13.6. Detailed information about transcoding WD6 bitstreams

[000483] A informação detalhada sobre a transcodificação dos fluxos de bits do Projeto de trabalho 6 (WD6) pode ser vista na representação em tabelas das figuras 32, 33, 34, 35 e 36.[000483] Detailed information about the transcoding of Work Project 6 (WD6) bit streams can be seen in the table representation of figures 32, 33, 34, 35 and 36.

[000484] A figura 32 mostra uma representação em tabela das taxas de bits médios produzidos pelo codificador aritmético em uma realização de acordo com a invenção e no WD6.[000484] Figure 32 shows a tabular representation of the average bit rates produced by the arithmetic encoder in an embodiment according to the invention and in WD6.

[000485] A figura 33 mostra uma representação em tabela das taxas de bits mínimas, máximas e médias de USAC em uma base da estrutura utilizando o esquema proposto.[000485] Figure 33 shows a table representation of the minimum, maximum and average USAC bitrates on a structure basis using the proposed scheme.

[000486] A figura 34 mostra uma representação em tabela das taxas de bits médios produzidos por um codificador USAC utilizando codificador aritmético WD6 e um codificador de acordo com uma realização de acordo com a invenção (“Nova Proposta”).[000486] Figure 34 shows a tabular representation of the average bit rates produced by a USAC encoder using WD6 arithmetic encoder and an encoder according to an embodiment according to the invention ("New Proposal").

[000487] A figura 35 mostra uma representação em tabelados melhores e dos piores casos para uma realização de acordo com a invenção.[000487] Figure 35 shows a tabled representation of the best and worst cases for an embodiment according to the invention.

[000488] A figura 36 mostra uma representação em tabela do limite de reservatório de bit para uma realização de acordo com a invenção.[000488] Figure 36 shows a table representation of the bit reservoir limit for an embodiment according to the invention.

[000489] 14. Mudanças quando comparadas ao projeto de trabalho 6 ou projeto de trabalho 7[000489] 14. Changes when compared to work project 6 or work project 7

[000490] A seguir, mudanças da codificação silenciosa quando comparadas a uma codificação silenciosa convencional será descrita. Certamente, uma realização é definida em termos de modificações quando comparadas ao projeto de trabalho 6 ou projeto de trabalho 7do Padrão de Projeto USAC.[000490] Next, changes in silent coding when compared to conventional silent coding will be described. Of course, an accomplishment is defined in terms of modifications when compared to work design 6 or work design 7 of the USAC Design Standard.

[000491] Em particular, mudanças no texto de WD serão descritas. Em outras palavras, esta seção lista o conjunto completo de mudanças contra a especificação de USAC WD7.[000491] In particular, changes to the WD text will be described. In other words, this section lists the complete set of changes against the USAC WD7 specification.

[000492] 14.1. Mudanças na descrição técnica[000492] 14.1. Changes to the technical description

[000493] A nova codificação silenciosa proposta gera as modificações no MPEG USAC WD que será descrito a seguir. As principais diferenças são marcadas.[000493] The proposed new silent encoding generates the modifications in MPEG USAC WD that will be described below. The main differences are marked.

[000494] 14.1.1. Mudanças da sintaxe e payload[000494] 14.1.1. Syntax and payload changes

[000495] A figura 7 mostra uma representação de uma sintaxe dos dados aritmeticamente codificados “arith_data()”. As principais diferenças são marcadas.[000495] Figure 7 shows a representation of an arithmetically encoded data syntax “arith_data()”. The main differences are marked.

[000496] A seguir, as mudanças com relação aos Payloads do codificador espectral silencioso serão descritas.[000496] Next, changes regarding Silent Spectral Encoder Payloads will be described.

[000497] Coeficientes espectrais do sinal codificado do “domínio de previsão linear” e do sinal codificado do “domínio de frequência” são escalar quantizados e então codificados silenciosamente por uma codificação aritmética de forma adaptável dependente do contexto. Os coeficientes quantizados são unidos em 2 tuplos antes de ser transmitidos da frequência mais baixa à frequência mais alta. Deve ser observado que o uso de 2 tuplos constitui uma mudança quando comparado às versões anteriores da codificação espectral silenciosa.[000497] Spectral coefficients of the “linear prediction domain” coded signal and the “frequency domain” coded signal are scalar quantized and then silently coded by an arithmetic coding in a context-dependent adaptive manner. The quantized coefficients are joined into 2-tuples before being transmitted from lower frequency to higher frequency. It should be noted that the use of 2-tuples constitutes a change when compared to previous versions of silent spectral coding.

[000498] Entretanto, é ainda uma mudança que cada 2 tuplos é dividido em sinal s, o plano de bit a bit mais significativo, m, e os planos de bits menos significativos restantes, r. Ainda, é uma mudança que o valor m é codificado de acordo com a proximidade do coeficiente, e que os planos de bits menos significativos restantes, r, são codificados por entropia sem considerar o contexto. Ainda, é uma mudança com relação a algumas versões anteriores que os valores m e r formam os símbolos do codificador aritmético. Finalmente, é uma mudança com relação a algumas versões anteriores que os sinais s são codificados fora do codificador aritmético utilizando 1 bit por coeficiente quantizado não nulo.[000498] However, it is still a change that each 2-tuple is divided into sign s, the most significant bit plane, m, and the remaining least significant bit planes, r. Further, it is a change that the value m is encoded according to coefficient proximity, and that the remaining least significant bit planes, r, are entropy encoded without considering context. Furthermore, it is a change from some previous versions that the values m and r form the symbols of the arithmetic encoder. Finally, it is a change from some previous versions that the s signals are encoded outside the arithmetic encoder using 1 bit per non-zero quantized coefficient.

[000499] Um procedimento da decodificação aritmética detalhada é descrito abaixo na seção 14.2.3.[000499] A detailed arithmetic decoding procedure is described below in section 14.2.3.

[000500] 14.1.2 Mudanças das definições e elementos de ajuda[000500] 14.1.2 Changes to definitions and help elements

[000501] Mudanças nas definições e elementos de ajuda são mostrados na representação das definições e elementos de ajuda na figura 38.[000501] Changes to definitions and help elements are shown in the representation of definitions and help elements in figure 38.

[000502] 14.2 Codificação espectral silenciosa[000502] 14.2 Silent spectral coding

[000503] A seguir, a codificação espectral silenciosa de acordo com uma realização será resumida.[000503] In the following, silent spectral coding according to an embodiment will be summarized.

[000504] 14.2.1 Descrição da ferramenta[000504] 14.2.1 Tool description

[000505] A codificação espectral silenciosa é utilizada para reduzir mais a redundância do espectro quantizado.[000505] Silent spectral coding is used to further reduce the redundancy of the quantized spectrum.

[000506] O esquema espectral de codificação silenciosa tem como base uma codificação aritmética em conjunto com um contexto dinamicamente adaptado. A codificação silenciosa é inserida pelo valores espectrais quantizados e utiliza as tabelas de frequências cumulativas dependente de contexto derivadas das quatro próximas previamente decodificadas. Aqui, proximidade em tempo e frequência é considerada, conforme ilustrado na figura 25. As tabelas de frequências cumulativas são então utilizadas pelo codificador aritmético para gerar um código binário do comprimento variável.[000506] The silent spectral coding scheme is based on an arithmetic coding in conjunction with a dynamically adapted context. Silent coding is input by quantized spectral values and uses the context-dependent cumulative frequency tables derived from the previously decoded next four. Here, proximity in time and frequency is considered, as illustrated in figure 25. The cumulative frequency tables are then used by the arithmetic coder to generate a binary code of variable length.

[000507] O codificador aritmético produz um código binário para um dado conjunto de símbolos e suas respectivas probabilidades. O código binário é gerado pelo mapeamento de um intervalo de probabilidade, onde o conjunto de símbolos se encontra, em um código.[000507] The arithmetic coder produces a binary code for a given set of symbols and their respective probabilities. Binary code is generated by mapping a probability interval, where the set of symbols lies, into a code.

[000508] 14.2.2 Definições[000508] 14.2.2 Definitions

[000509] Definições e elementos de ajuda são descritos na figura 39. Mudanças quando comparadas às versões anteriores da codificação aritmética são marcadas.[000509] Definitions and help elements are described in figure 39. Changes when compared to previous versions of arithmetic coding are marked.

[000510] 14.2.3 Processo de codificação[000510] 14.2.3 Coding process

[000511] Os coeficientes espectrais quantizados qdec são silenciosamente codificados começando do coeficiente de frequência mais baixa e continuando ao coeficiente de frequência mais alta. Eles são decodificados por grupos de dois coeficientes sucessivos a e b unindo em um assim chamado 2 tuplos {a,b}.[000511] Quantized spectral coefficients qdec are silently encoded starting from the lowest frequency coefficient and continuing to the highest frequency coefficient. They are decoded by groups of two successive coefficients a and b joining together into a so-called 2-tuple {a,b}.

[000512] Os coeficientes decodificados para AAC são então armazenados na matriz x_ac_quant[g][win][sfb][bin]. A ordem da transmissão dos códigos da codificação silenciosa é de modo que quando são decodificadas na ordem recebida e armazenada na matriz, bin é o índice adicional mais rápido e g é o índice adicional mais lento. Dentro de um código da ordem de decodificação é a e então b.[000512] The decoded coefficients for AAC are then stored in the matrix x_ac_quant[g][win][sfb][bin]. The transmission order of silent encoding codes is such that when they are decoded in the order received and stored in the array, bin is the fastest additional index and g is the slowest additional index. Within a code the order of decoding is a and then b.

[000513] Os coeficientes decodificados para TCX são armazenados na matriz x_tcx_invquant[win][bin], e a ordem da transmissão dos códigos da codificação silenciosa é de modo que quando são decodificados na ordem recebida e armazenada na matriz, o bin é o índice adicional mais rápido e win é o índice adicional mais lento. Dentro de um código a ordem da decodificação é a e então b.[000513] The decoded coefficients for TCX are stored in the matrix x_tcx_invquant[win][bin], and the order of transmission of the silent encoding codes is such that when they are decoded in the order received and stored in the matrix, the bin is the index additional fastest and win is the slowest additional index. Within a code the order of decoding is a and then b.

[000514] O processo de codificação começa com uma fase de inicialização onde um mapeamento é feito entre o contexto anterior salvo armazenado em qs e o contexto da estrutura corrente q. O contexto anterior qs é armazenado em 2 bits por linha de frequência.[000514] The encoding process begins with an initialization phase where a mapping is made between the previously saved context stored in qs and the context of the current structure q. The previous context qs is stored in 2 bits per frequency line.

[000515] Para detalhes, a referência é feita à representação do código do pseudo-programa do algoritmo “arith_map_context” na figura 40a.[000515] For details, reference is made to the pseudo-program code representation of the “arith_map_context” algorithm in figure 40a.

[000516] O decodificador silencioso emite 2 tuplos de coeficientes não assinados espectrais quantizados. Primeiramente, o estado c do contexto é calculado com base nos coeficientes espectrais previamente decodificados circundante dos 2 tuplos para decodificar. O estado é gradualmente atualizado utilizando o estado de contexto dos últimos tuplos duplos decodificados considerando apenas os dois novos tuplos duplos. O estado é codificado em17 bits e é retornado pela função arith_get_context().[000516] The silent decoder outputs 2 tuples of quantized spectral unsigned coefficients. Firstly, the state c of the context is calculated based on the previously decoded spectral coefficients surrounding the 2 tuples to decode. The state is gradually updated using the context state of the last double tuples decoded considering only the two new double tuples. The state is encoded in 17 bits and is returned by the arith_get_context() function.

[000517] Uma representação do código do pseudo-programa da função “arith_get_context()” é mostrada na figura 40b.[000517] A representation of the pseudo-program code of the “arith_get_context()” function is shown in figure 40b.

[000518] Visto que o estado de contexto c é calculado, o plano de bit a bit mais significativo m é decodificado utilizando o arith_decode() inserido com a tabela de frequências cumulativas apropriada correspondente ao modelo de probabilidade correspondente ao estado de contexto. A correspondência é feita pela função arith_get_pk().[000518] Since the context state c is calculated, the most significant bitwise plane m is decoded using the inserted arith_decode() with the appropriate cumulative frequency table corresponding to the probability model corresponding to the context state. The matching is done by the arith_get_pk() function.

[000519] Uma representação do código do pseudo-programa da função arith_get_pk() é mostrada na figura 40c.[000519] A pseudo-program code representation of the arith_get_pk() function is shown in figure 40c.

[000520] O valor m é decodificado utilizando a função arith_decode() chamada com a tabela de frequências cumulativas, arith_cf_m[pki][], onde pki corresponde ao índice retornado por arith_get_pk(). O codificador aritmético é uma implementação de número inteiro utilizando o método de geração de tag com escala. O pseudo-código C mostrado nas figuras 40d e 40e descreve o algoritmo utilizado.[000520] The value m is decoded using the arith_decode() function called with the cumulative frequency table, arith_cf_m[pki][], where pki corresponds to the index returned by arith_get_pk(). The arithmetic encoder is an integer implementation using the scaled tag generation method. The C pseudo-code shown in figures 40d and 40e describes the algorithm used.

[000521] Quando o valor decodificado m é o símbolo de escape, ARITH_ESCAPE, as variáveis lev e esc_nb são adicionadas em um e outro valor m é codificado. Neste caso, a função get_pk() é chamada mais uma vez com o valor c&esc_nb<<17 como o argumento de entrada, onde esc_nb é o número de símbolos de escape previamente decodificados para os mesmos tuplos duplos delimitados a 7.[000521] When the decoded value m is the escape symbol, ARITH_ESCAPE, the variables lev and esc_nb are added into one and another value m is encoded. In this case, the get_pk() function is called once again with the value c&esc_nb<<17 as the input argument, where esc_nb is the number of previously decoded escape symbols for the same 7-bound double tuples.

[000522] Visto que o valor m não é o símbolo de escape, ARITH_ESCAPE, o decodificador verifica se o m sucessivo forma um símbolo ARITH_STOP. Se uma condição (esc_nb>0 && m==0) for verdadeira, o símbolo ARITH_STOP é detectado e o processo de codificação é finalizado. O decodificador vai diretamente para a função arith_save_context(). Uma condição significa que o resto da estrutura é composta por valores zero.[000522] Since the value m is not the escape symbol, ARITH_ESCAPE, the decoder checks whether the successive m forms an ARITH_STOP symbol. If a condition (esc_nb>0 && m==0) is true, the ARITH_STOP symbol is detected and the encoding process ends. The decoder goes directly to the arith_save_context() function. A condition means that the rest of the structure is made up of zero values.

[000523] Se o símbolo ARITH_STOP não for atingido, os planos de bit restantes então são decodificados se existir para o presente tuplo duplo. Os planos de bit restantes são decodificados do nível mais significativo ao menos significativo chamando os períodos lev arith_decode() com a tabela de frequências cumulativas arith_cf_r[]. Os planos de bit decodificados r permitem refinar o valor previamente decodificado m pela função ou algoritmo de uma representação do código do pseudo-programa na qual é mostrada na figura 40f.[000523] If the ARITH_STOP symbol is not reached, the remaining bit planes are then decoded if they exist for the present double tuple. The remaining bit planes are decoded from most significant to least significant level by calling lev periods arith_decode() with the cumulative frequency table arith_cf_r[]. The decoded bit planes r allow refining the previously decoded value m by the function or algorithm of a representation of the pseudo-program code in which is shown in figure 40f.

[000524] Neste ponto, o valor não assinado dos tuplos duplos {a,b} é completamente decodificado. O contexto q é então atualizado para os próximos tuplos duplos. Se for os últimos tuplos duplos, também. Ambas as atualizações são feitas pela função arith_update_context(), uma representação do código do pseudo-programa da qual é mostrada na figura 40g.[000524] At this point, the unsigned value of the double tuples {a,b} is completely decoded. The context q is then updated for the next double tuples. If it's the last double tuples, too. Both updates are done by the arith_update_context() function, a representation of the pseudo-program code of which is shown in figure 40g.

[000525] Os próximos tuplos duplos da estrutura são então decodificados pelo aumento i em um e chamando a função. Se os tuplos duplos lg/2 já foram decodificados com a estrutura ou se o símbolo de parada ARITH_STOP ocorreu, a função arith_save_context() é chamada. O contexto é salvo e armazenado em qs para a próxima estrutura. Uma representação do código do pseudo-programa da função ou algoritmo arith_save_context() é mostrada na figura 40h.[000525] The next double tuples of the structure are then decoded by increasing i by one and calling the function. If lg/2 double tuples have already been decoded with the structure or if the ARITH_STOP stop symbol has occurred, the arith_save_context() function is called. The context is saved and stored in qs for the next structure. A pseudo-program code representation of the arith_save_context() function or algorithm is shown in figure 40h.

[000526] Visto que todos os coeficientes espectrais quantizados não assinados são decodificados, o sinal é então adicionado. Para cada valor quantizado não nulo de qdec um bit é lido. Se o valor de bit lido for igual a zero, o valor quantizado é positivo, nada é feito e o valor assinado é igual ao valor previamente decodificado não assinado. Caso contrário, o coeficiente decodificado é negativo e o componente dos dois é do valor não assinado. Os bits do sinal são lidos das frequências baixa à alta.[000526] Since all unsigned quantized spectral coefficients are decoded, the signal is then added. For each non-zero quantized value of qdec, one bit is read. If the read bit value is zero, the quantized value is positive, nothing is done, and the signed value is equal to the unsigned previously decoded value. Otherwise, the decoded coefficient is negative and the two component is of the unsigned value. Signal bits are read from low to high frequencies.

[000527] 14.2.4 Tabelas atualizadas[000527] 14.2.4 Updated tables

[000528] Um conjunto de tabelas retreinadas para uso com os algoritmos descritos acima é mostrado nas figuras 41(1), 41(2), 42(1), 42(2), 42(3), 42(4), 43(1), 43(2), 43(3), 43(4), 43(5), 43(6) e 44.[000528] A set of retrained tables for use with the algorithms described above is shown in figures 41(1), 41(2), 42(1), 42(2), 42(3), 42(4), 43 (1), 43(2), 43(3), 43(4), 43(5), 43(6) and 44.

[000529] As figuras 41(1) e 41(2) mostram uma representação em tabela de um conteúdo de uma tabela “ari_lookup_m[742]”, de acordo com uma realização da invenção;[000529] Figures 41(1) and 41(2) show a table representation of a content of a table “ari_lookup_m[742]”, according to an embodiment of the invention;

[000530] As figuras 42 (1),(2),(3),(4) mostram uma representação em tabela de um conteúdo de uma tabela “ari_hash_m[742]”, de acordo com uma realização da invenção;[000530] Figures 42 (1),(2),(3),(4) show a table representation of a content of a table “ari_hash_m[742]”, according to an embodiment of the invention;

[000531] As figuras 43 (1),(2),(3),(4),(5),(6) mostram uma representação em tabela de um conteúdo de uma tabela “ari_cf_m[96][17]”, de acordo com uma realização da invenção; e[000531] Figures 43 (1),(2),(3),(4),(5),(6) show a table representation of a content of a table “ari_cf_m[96][17]”, according to an embodiment of the invention; It is

[000532] A figura 44 mostra uma representação em tabela de uma tabela “ari_cf_r[4]”, de acordo com uma realização da invenção.[000532] Figure 44 shows a table representation of a table “ari_cf_r[4]”, according to an embodiment of the invention.

[000533] Para resumir o mencionado acima, pode ser visto que realizações, de acordo com a presente invenção, provêm uma boa troca entre complexidade computacional, exigências de memória e eficiência da codificação.[000533] To summarize the above, it can be seen that embodiments, according to the present invention, provide a good trade-off between computational complexity, memory requirements and coding efficiency.

[000534] 15. Sintaxe do fluxo de bits[000534] 15. Bitstream syntax

[000535] 15.1 Payloads do codificador espectral silencioso[000535] 15.1 Silent Spectral Encoder Payloads

[000536] A seguir, alguns detalhes referentes aos payloads do codificador espectral silencioso serão descritos. Em algumas realizações, há diversos modos diferentes de codificação como, por exemplo, o modo de codificação de “domínio de previsão linear” e o modo de codificação de “domínio de frequência”. No modo de codificação de domínio de previsão linear, uma forma de ruído é realizada com base em uma análise de previsão linear do sinal de áudio, e um sinal em forma de ruído é codificado no domínio de frequência. No modo de codificação de domínio de frequência, uma forma de ruído é realizada com base em uma análise psicoacústica e uma versão em forma de ruído do conteúdo de áudio é codificada no domínio de frequência.[000536] Next, some details regarding the silent spectral encoder payloads will be described. In some embodiments, there are several different coding modes, such as the “linear prediction domain” coding mode and the “frequency domain” coding mode. In the linear prediction domain coding mode, a noise shape is realized based on a linear prediction analysis of the audio signal, and a noise shape signal is encoded in the frequency domain. In frequency domain coding mode, a noise form is performed based on a psychoacoustic analysis and a noise form version of the audio content is encoded in the frequency domain.

[000537] Coeficientes espectrais do sinal codificado do “domínio de previsão linear” e do sinal codificado do “domínio de frequência” são quantizados por escala e então silenciosamente codificados por uma codificação aritmética dependente de contexto de forma adaptativa. Os coeficientes quantizados são unidos em 2 tuplos antes de serem transmitidos da frequência mais baixa para a frequência mais alta. Cada tuplo duplo é dividido em um sinal s, o plano de bit a bit mais significativo m, e um ou mais planos de bits menos significativos r restantes (se houver). O valor m é codificado de acordo com um contexto definido pelos coeficientes espectrais próximos. Em outras palavras, m é codificado de acordo com os coeficientes próximos. Os planos de bits menos significativos restantes r são codificados por entropia sem considerar o contexto. Por meios de m e r, a amplitude destes coeficientes espectrais pode ser reconstruída no lado do decodificador. Para todos os símbolos não nulos, os sinais s são codificados fora do codificador aritmético utilizando 1 bit. Em outras palavras, os valores m e r formam os símbolos do codificador aritmético. Finalmente, os sinais s, são codificados fora do codificador aritmético utilizando 1 bit por coeficiente quantizado não nulo.[000537] Spectral coefficients of the “linear prediction domain” encoded signal and the “frequency domain” encoded signal are quantized by scaling and then silently encoded by a context-dependent arithmetic encoding in an adaptive manner. The quantized coefficients are joined into 2-tuples before being transmitted from the lower frequency to the higher frequency. Each double tuple is divided into a sign s, the most significant bit plane m, and one or more remaining least significant bit planes r (if any). The value m is encoded according to a context defined by nearby spectral coefficients. In other words, m is coded according to nearby coefficients. The remaining least significant bit planes r are entropy encoded without considering context. By means of m and r, the amplitude of these spectral coefficients can be reconstructed on the decoder side. For all non-zero symbols, the s signals are encoded outside the arithmetic encoder using 1 bit. In other words, the values m and r form the symbols of the arithmetic encoder. Finally, the signals s, are encoded outside the arithmetic encoder using 1 bit per non-zero quantized coefficient.

[000538] Um procedimento detalhado da codificação aritmética será descrito aqui.[000538] A detailed arithmetic coding procedure will be described here.

[000539] 15.2 Elementos de sintaxe de acordo com as figuras 6a a 6j[000539] 15.2 Syntax elements according to figures 6a to 6j

[000540] A seguir, a sintaxe do fluxo de bits de um fluxo de bits que carrega a informação espectral aritmeticamente codificada será descrita tendo como referência as figuras 6a a 6j.[000540] In the following, the bitstream syntax of a bitstream carrying arithmetically encoded spectral information will be described with reference to figures 6a to 6j.

[000541] A figura 6a mostra uma representação de sintaxe do bloco de dados brutos USAC (“usac_raw_data_block()”).[000541] Figure 6a shows a syntax representation of the USAC raw data block (“usac_raw_data_block()”).

[000542] O bloco de dados brutos USAC compreende um ou mais elementos de canal único (“single_channel_element()”) e/ou um ou mais elementos do par de canal (“channel_pair_element()”).[000542] The USAC raw data block comprises one or more single channel elements (“single_channel_element()”) and/or one or more channel pair elements (“channel_pair_element()”).

[000543] Agora com referência à figura 6b, a sintaxe de um elemento de canal único é descrita. Os elementos de canal único compreendem um fluxo de canal do domínio de previsão linear (“lpd_channel_stream ()”) ou um fluxo de canal de domínio de frequência (“fd_channel_stream ()”) dependendo do modo de núcleo.[000543] Now with reference to figure 6b, the syntax of a single channel element is described. Single channel elements comprise a linear prediction domain channel stream (“lpd_channel_stream()”) or a frequency domain channel stream (“fd_channel_stream()”) depending on the core mode.

[000544] A figura 6c mostra uma representação de sintaxe de um elemento do par de canal. Um elemento do par de canal compreende informação do modo de código (“core_mode0”, “core_mode1”). Além disso, o elemento do par de canal pode compreender uma informação de configuração “ics_info()”. Adicionalmente, dependendo da informação do modo de código, o elemento do par de canal compreende um fluxo de canal do domínio de previsão linear ou um fluxo de canal de domínio de frequência associado a um primeiro dos canais, e o elemento do par de canal também compreende um fluxo de canal do domínio de previsão linear ou um fluxo de canal de domínio de frequência associado a um segundo dos canais.[000544] Figure 6c shows a syntax representation of an element of the channel pair. An element of the channel pair comprises code mode information (“core_mode0”, “core_mode1”). Furthermore, the channel pair element may comprise an “ics_info()” configuration information. Additionally, depending on the code mode information, the channel pair element comprises a linear prediction domain channel stream or a frequency domain channel stream associated with a first of the channels, and the channel pair element also comprises a linear prediction domain channel stream or a frequency domain channel stream associated with a second of the channels.

[000545] A informação de configuração “ics_info()”, uma representação de sintaxe que é mostrada na figura 6d, compreende diversos itens diferentes de informação de configuração, que não são de relevância particular para a presente invenção.[000545] The configuration information “ics_info()”, a syntax representation that is shown in figure 6d, comprises several different items of configuration information, which are not of particular relevance to the present invention.

[000546] Um fluxo de canal de domínio de frequência (“fd_channel_stream ()”), uma representação de sintaxe que é mostrada na figura 6e, compreende uma informação de ganho (“global_gain”) e uma informação de configuração (“ics_info ()”). Além disso, o fluxo de canal de domínio de frequência compreende dados do fator de escala (“scale_factor_data ()”), que descrevem fatores de escala utilizados para a escala de valores espectrais de diferentes faixas de fator de escala, e que é aplicado, por exemplo, pelo multiplicador de frequências 150 e pelo remultiplicador de frequências 240. O fluxo de canal de domínio de frequência também compreende dados espectrais aritmeticamente codificados (“ac_spectral_data ()”), que representam valores espectrais aritmeticamente codificados.[000546] A frequency domain channel stream (“fd_channel_stream()”), a syntax representation of which is shown in Figure 6e, comprises a gain information (“global_gain”) and a configuration information (“ics_info()) ”). Additionally, the frequency domain channel stream comprises scale factor data (“scale_factor_data()”), which describes scale factors used to scale spectral values of different scale factor ranges, and which is applied, for example, by frequency multiplier 150 and frequency remultiplier 240. The frequency domain channel stream also comprises arithmetically encoded spectral data (“ac_spectral_data()”), which represents arithmetically encoded spectral values.

[000547] Os dados espectrais aritmeticamente codificados (“ac_spectral_data()”), uma representação de sintaxe que é mostrada na figura 6f, compreendem um sinalizador de redefinição aritmético opcional (“arith_reset_flag”), que é utilizado para seletivamente redefinir o contexto, conforme descrito acima. Além disso, os dados espectrais aritmeticamente decodificados compreendem diversos blocos de dados aritméticos (“arith_data”), que carregam os valores espectrais aritmeticamente codificados. A estrutura dos blocos de dados aritmeticamente codificados depende do número das faixas de frequência (representado pela variável “num_bands”) e também do estado do sinalizador de redefinição aritmético, conforme serão discutidos a seguir.[000547] The arithmetically encoded spectral data (“ac_spectral_data()”), a syntax representation of which is shown in Figure 6f, comprises an optional arithmetic reset flag (“arith_reset_flag”), which is used to selectively reset the context as per described above. Furthermore, the arithmetically decoded spectral data comprises several arithmetic data blocks (“arith_data”), which carry the arithmetically encoded spectral values. The structure of the arithmetically encoded data blocks depends on the number of frequency bands (represented by the variable “num_bands”) and also on the state of the arithmetic reset flag, as will be discussed below.

[000548] A seguir, a estrutura do bloco de dados aritmeticamente codificado será descrita tendo como referência a figura 6g, que mostra uma representação de sintaxe dos ditos blocos de dados aritmeticamente codificados. A representação de dados dentro do bloco de dados aritmeticamente codificados depende do número lg de valores espectrais a ser codificado, do status do sinalizador de redefinição aritmético e também do contexto, ou seja, os valores espectrais previamente codificados.[000548] Next, the structure of the arithmetically coded data block will be described with reference to figure 6g, which shows a syntax representation of said arithmetically coded data blocks. The representation of data within the arithmetically encoded data block depends on the lg number of spectral values to be encoded, the status of the arithmetic reset flag and also the context, i.e. the previously encoded spectral values.

[000549] O contexto para a codificação do conjunto corrente (por exemplo, 2 tuplos) de valores espectrais é determinado de acordo com o algoritmo de determinação de contexto mostrado no número de referência 660. Detalhes com relação ao algoritmo de determinação de contexto foram explicados acima, tendo como referência as figuras 5a e 5b. O bloco de dados aritmeticamente codificados compreende lg/2 para definição das senhas, cada conjunto de senhas que representa diversos (por exemplo, um tuplo duplo) valores espectrais. Um conjunto de senhas compreende uma senha aritmética “acod_m[pki][m]” que representa um valor do plano de bits mais significativo m do tuplo de valores espectrais utilizando entre 1 e 20 bits. Além disso, o conjunto de senhas compreende uma ou mais senhas “acod_r[r]” se o tuplo de valores espectrais requerer mais planos de bits que o plano de bits mais significativo para uma representação correta. A senha “acod_r[r]” representa um plano de bits menos significativo utilizando entre 1 e 14 bits.[000549] The context for encoding the current set (e.g., 2 tuples) of spectral values is determined according to the context determination algorithm shown in reference number 660. Details regarding the context determination algorithm have been explained above, taking figures 5a and 5b as reference. The arithmetically encoded data block comprises lg/2 for defining the passwords, each set of passwords representing several (e.g., a double tuple) spectral values. A set of passwords comprises an arithmetic password “acod_m[pki][m]” that represents a value from the most significant bit plane m of the tuple of spectral values using between 1 and 20 bits. Furthermore, the set of passwords comprises one or more passwords “acod_r[r]” if the tuple of spectral values requires more bit planes than the most significant bit plane for correct representation. The password “acod_r[r]” represents a least significant bit plane using between 1 and 14 bits.

[000550] Se, entretanto, um ou mais planos de bits menos significativos são necessários (além do plano de bits mais significativo) para uma representação correta dos valores espectrais, isto é sinalizado utilizando uma ou mais senhas aritméticas de escape (“ARITH_ESCAPE”). Assim, pode ser geralmente dito que para um valor espectral, é determinado quantos planos de bits (o plano de bits mais significativo e, possivelmente, um ou mais planos de bits menos significativos adicionais) são necessários. Se um ou mais planos de bits menos significativos são necessários, isto é sinalizado por uma ou mais senhas aritméticas de escape “acod_m[pki][ARITH_ESCAPE]”, que são codificadas de acordo com uma tabela de frequências cumulativas atualmente selecionada, um índice da tabela de frequências cumulativas que é dado pela variável “pki”. Além disso, o contexto é adaptado, como pode ser visto nos números de referência 664, 662, se uma ou mais senhas aritméticas de escape estiverem incluídas no fluxo de bits. Seguindo uma ou mais senhas aritméticas de escape, uma senha aritmética “acod_m[pki][m]” está incluída no fluxo de bits, conforme mostrado no número de referência 663, em que “pki” designa o índice atualmente válido do modelo de probabilidade (considerando a adaptação do contexto causada pela inclusão das senhas aritméticas de escape em consideração) e em que m designa o valor do plano de bits mais significativo do valor espectral a ser codificado ou decodificado (em que m é diferente da senha “ARITH_ESCAPE”).[000550] If, however, one or more less significant bit planes are required (in addition to the most significant bit plane) for a correct representation of the spectral values, this is signaled using one or more arithmetic escape passwords (“ARITH_ESCAPE”) . Thus, it can generally be said that for a spectral value, it is determined how many bit planes (the most significant bit plane and possibly one or more additional less significant bit planes) are needed. If one or more least significant bit planes are required, this is signaled by one or more arithmetic escape passwords “acod_m[pki][ARITH_ESCAPE]”, which are encoded according to a currently selected cumulative frequency table, an index of the cumulative frequency table which is given by the variable “pki”. Furthermore, the context is adapted, as can be seen from reference numbers 664, 662, if one or more arithmetic escape passwords are included in the bitstream. Following one or more escape arithmetic passwords, an arithmetic password “acod_m[pki][m]” is included in the bitstream as shown in reference number 663, where “pki” designates the currently valid index of the probability model (considering the context adaptation caused by the inclusion of the arithmetic escape passwords under consideration) and where m designates the value of the most significant bit plane of the spectral value to be encoded or decoded (where m is different from the password “ARITH_ESCAPE”) .

[000551] Conforme discutido acima, a presença de qualquer plano de bits menos significativo resulta em uma presença de uma ou mais senhas “acod_r[r]”, cada uma representa 1 bit de um plano de bits menos significativo de um primeiro valor espectral e cada um que também representa 1 bit de um plano de bits menos significativo de um segundo valor espectral. Uma ou mais senhas “acod_r[r]” são codificadas de acordo com uma tabela de frequências cumulativas correspondente, que pode, por exemplo, ser constante e independente de contexto. Entretanto, diferentes mecanismos para a seleção da tabela de frequências cumulativas para uma decodificação de uma ou mais senhas “acod_r[r]” são possíveis.[000551] As discussed above, the presence of any least significant bit plane results in the presence of one or more passwords “acod_r[r]”, each representing 1 bit of a least significant bit plane of a first spectral value and each also representing 1 bit of a least significant bit plane of a second spectral value. One or more passwords “acod_r[r]” are encoded according to a corresponding cumulative frequency table, which may, for example, be constant and context-independent. However, different mechanisms for selecting the cumulative frequency table for a decryption of one or more passwords “acod_r[r]” are possible.

[000552] Além disso, deve ser observado que o contexto é atualizado depois da codificação de cada tuplo de valores espectrais, conforme mostrado no número de referência 668, de modo que o contexto seja tipicamente diferente da codificação e decodificação de tuplos duplos de valores espectrais subsequente.[000552] Furthermore, it should be noted that the context is updated after encoding each tuple of spectral values, as shown in reference number 668, so that the context is typically different from encoding and decoding double tuples of spectral values subsequent.

[000553] A figura 6i mostra uma legenda de definições e elementos de ajuda que definem a sintaxe do bloco de dados aritmeticamente codificado.[000553] Figure 6i shows a legend of definitions and help elements that define the syntax of the arithmetically encoded data block.

[000554] Além disso, uma sintaxe alternativa dos dados aritméticos “arith_data()” é mostrada na figura 6h, com uma legenda correspondente de definições e elementos de ajuda mostrada na figura 6j.[000554] Furthermore, an alternative arithmetic data syntax “arith_data()” is shown in figure 6h, with a corresponding legend of definitions and help elements shown in figure 6j.

[000555] Para resumir o mencionado acima, um formato do fluxo de bits foi descrito, que pode ser provido pelo codificador de áudio 100 e que pode ser avaliado pelo decodificador de áudio 200. O fluxo de bits dos valores espectrais aritmeticamente codificados é codificado de modo que se encaixe no algoritmo de decodificação discutido acima.[000555] To summarize the above, a bitstream format has been described, which can be provided by audio encoder 100 and which can be evaluated by audio decoder 200. The bitstream of arithmetically encoded spectral values is encoded in way that fits the decoding algorithm discussed above.

[000556] Além disso, geralmente deve ser observado que a codificação é a operação inversa da decodificação, de modo que possa geralmente ser assumido que o codificador realiza uma consulta de tabela utilizando as tabelas mencionadas acima, que é aproximadamente inversa à consulta de tabela realizada pelo decodificador. Geralmente, pode ser dito que um técnico no assunto que conhece o algoritmo de decodificação e/ou a sintaxe do fluxo de bits desejada poderá facilmente desenhar um codificador aritmético, que provê os dados definidos na sintaxe do fluxo de bits e necessários por um decodificador aritmético.[000556] Furthermore, it should generally be noted that encoding is the inverse operation of decoding, so that it can generally be assumed that the encoder performs a table lookup using the tables mentioned above, which is approximately inverse to the table lookup performed by the decoder. Generally, it can be said that a person skilled in the art who knows the decoding algorithm and/or the desired bitstream syntax can easily design an arithmetic encoder, which provides the data defined in the bitstream syntax and needed by an arithmetic decoder. .

[000557] Além disso, deve ser observado que os mecanismos para determinar o valor de contexto corrente numérico e para derivar um valor de índice de regra de mapeamento podem ser idênticos em um codificador de áudio e um decodificador de áudio, pois é tipicamente desejado que o decodificador de áudio utilize o mesmo contexto ao codificador de áudio, de modo que a decodificação seja adaptada à codificação.[000557] Furthermore, it should be noted that the mechanisms for determining the current numeric context value and for deriving a mapping rule index value may be identical in an audio encoder and an audio decoder, as it is typically desired that the audio decoder uses the same context as the audio encoder, so that decoding is adapted to encoding.

[000558] 15.3. Elementos de sintaxe de acordo com as figuras 6k, 6l, 6m, 6n, 6o e 6p[000558] 15.3. Syntax elements according to figures 6k, 6l, 6m, 6n, 6o and 6p

[000559] A seguir, uma extração de uma sintaxe do fluxo de bits alternativo será descrita com referência às figuras 6k, 6l, 6m, 6n, 6o e 6p.[000559] In the following, an extraction of an alternative bitstream syntax will be described with reference to figures 6k, 6l, 6m, 6n, 6o and 6p.

[000560] A figura 6k mostra uma representação de sintaxe de um elemento do fluxo de bits “UsacSingleChannelElement(indepFlag)”. O dito elemento de sintaxe “UsacSingleChannelElement(indepFlag)” compreende um elemento de sintaxe “UsacCoreCoderData” que descreve um canal do codificador de núcleo.[000560] Figure 6k shows a syntax representation of an element of the bitstream “UsacSingleChannelElement(indepFlag)”. Said “UsacSingleChannelElement(indepFlag)” syntax element comprises a “UsacCoreCoderData” syntax element that describes a core encoder channel.

[000561] A figura 6l mostra uma representação de sintaxe de um elemento do fluxo de bits “UsacChannelPairElement(indepFlag)”. O dito elemento de sintaxe “UsacChannelPairElement(indepFlag)” compreende um elemento de sintaxe “UsacCoreCoderData” que descreve um ou dois canais do codificador de núcleo, dependendo de uma configuração estéreo.[000561] Figure 6l shows a syntax representation of an element of the bitstream “UsacChannelPairElement(indepFlag)”. Said “UsacChannelPairElement(indepFlag)” syntax element comprises a “UsacCoreCoderData” syntax element that describes one or two channels of the core encoder, depending on a stereo configuration.

[000562] A figura 6m mostra uma representação de sintaxe de um elemento do fluxo de bits “ics_info()”, que compreende definições de um número de parâmetros, como pode ser visto na figura 6m.[000562] Figure 6m shows a syntax representation of an element of the “ics_info()” bitstream, which comprises definitions of a number of parameters, as can be seen in Figure 6m.

[000563] A figura 6n mostra uma representação de sintaxe de um elemento do fluxo de bits “UsacCoreCoderData()”. O elemento do fluxo de bits “UsacCoreCoderData()” compreende um ou mais fluxos do canal de domínio de previsão linear “lpd_channel_stream()” e/ou um ou mais fluxo do canal de domínio de frequências “fd_channel_stream()”. Outra informação de controle pode opcionalmente também ser incluída no elemento do fluxo de bits “UsacCoreCoderData()”, como pode ser visto na figura 6n.[000563] Figure 6n shows a syntax representation of an element of the “UsacCoreCoderData()” bitstream. The bitstream element “UsacCoreCoderData()” comprises one or more linear prediction domain channel streams “lpd_channel_stream()” and/or one or more frequency domain channel streams “fd_channel_stream()”. Other control information can optionally also be included in the “UsacCoreCoderData()” bitstream element, as can be seen in figure 6n.

[000564] A figura 6o mostra uma representação de sintaxe de um elemento do fluxo de bits “fd_channel_stream()”. O elemento do fluxo de bits “fd_channel_stream()” compreende, entre outros elementos do fluxo de bits opcionais, um elemento do fluxo de bits “scale_factor_data()” e um elemento do fluxo de bits “ac_spectral_data()”.[000564] Figure 6o shows a syntax representation of an element of the bitstream “fd_channel_stream()”. The “fd_channel_stream()” bitstream element comprises, among other optional bitstream elements, a “scale_factor_data()” bitstream element and an “ac_spectral_data()” bitstream element.

[000565] A figura 6p mostra uma representação de sintaxe de um elemento do fluxo de bits “ac_spectral_data()”. O elemento do fluxo de bits “ac_spectral_data()” compreende opcionalmente um elemento do fluxo de bits “arith_reset_flag”. Além disso, o elemento do fluxo de bits também compreende um número de dados aritmeticamente codificados “arith_data()”. Os dados aritmeticamente codificados podem, por exemplo, seguir a sintaxe do fluxo de bits descrita com referência à figura 6g.[000565] Figure 6p shows a syntax representation of an element of the “ac_spectral_data()” bitstream. The bitstream element “ac_spectral_data()” optionally comprises a bitstream element “arith_reset_flag”. Furthermore, the bitstream element also comprises a number of arithmetically encoded data “arith_data()”. The arithmetically encoded data may, for example, follow the bitstream syntax described with reference to Figure 6g.

[000566] 16. Implementações alternativas[000566] 16. Alternative implementations

[000567] Embora alguns aspectos foram descritos no contexto de um aparelho, é claro que estes aspectos também representam uma descrição do método correspondente, onde um bloco ou dispositivo corresponde a uma etapa do método ou uma característica de uma etapa do método. De forma equivalente, os aspectos descritos no contexto de uma etapa do método também representam uma descrição de um bloco ou item ou característica correspondente de um aparelho correspondente. Algumas ou todas as etapas do método podem ser executadas por (ou utilizando) um aparelho de hardware como, por exemplo, um microprocessador, um computador programável ou um circuito eletrônico. Em algumas realizações, uma ou mais das etapas mais importantes do método podem ser executadas por tal aparelho.[000567] Although some aspects have been described in the context of an apparatus, it is clear that these aspects also represent a description of the corresponding method, where a block or device corresponds to a method step or a characteristic of a method step. Equivalently, aspects described in the context of a method step also represent a description of a corresponding block or item or feature of a corresponding apparatus. Some or all of the steps of the method may be performed by (or using) a hardware device such as, for example, a microprocessor, a programmable computer or an electronic circuit. In some embodiments, one or more of the most important steps of the method may be performed by such an apparatus.

[000568] O sinal de áudio codificado inventivo pode ser armazenado em um meio de armazenamento digital ou pode ser transmitido em um meio de transmissão como um meio de transmissão sem fio ou um meio de transmissão com fio como a Internet.[000568] The inventive coded audio signal may be stored on a digital storage medium or may be transmitted on a transmission medium such as a wireless transmission medium or a wired transmission medium such as the Internet.

[000569] Dependendo de certas exigências de implementação, as realizações da invenção podem ser implementadas em hardware ou em software. A implementação pode ser realizada utilizando um meio de armazenamento digital, por exemplo, um disquete, um DVD, um Blue-Ray, um CD, uma ROM, uma PROM, uma EPROM, uma EEPROM ou uma memória FLASH, tendo sinais de controle eletricamente legíveis armazenados nele, que coopera (ou são capazes de cooperar) com um sistema de computador programável de modo que o respectivo método seja realizado. Desta forma, o meio de armazenamento digital pode ser legível por computador.[000569] Depending on certain implementation requirements, embodiments of the invention can be implemented in hardware or in software. The implementation can be carried out 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, having electrically controlled control signals readable stored therein, which cooperates (or is capable of cooperating) with a programmable computer system so that the respective method is carried out. In this way, the digital storage medium can be computer readable.

[000570] Algumas realizações, de acordo com a invenção, compreendem um carregador de dados tendo sinais de controle eletricamente legíveis, que podem cooperar com um sistema de computador programável, de modo que um dos métodos descritos aqui seja realizado.[000570] Some embodiments, according to the invention, comprise a data loader having electrically readable control signals, which can cooperate with a programmable computer system, so that one of the methods described herein is carried out.

[000571] Geralmente, as realizações da presente invenção podem ser implementadas como um produto de programa de computador com um código do programa, o código do programa sendo operativo para realizar um dos métodos quando o produto de programa de computador opera em um computador. O código do programa pode, por exemplo, ser armazenado em um carregador legível por máquina.[000571] Generally, embodiments of the present invention may be implemented as a computer program product with a program code, the program code being operative to carry out one of the methods when the computer program product operates on a computer. Program code can, for example, be stored in a machine-readable loader.

[000572] Outras realizações compreendem o programa de computador para realizar um dos métodos descritos aqui, armazenados em um carregador legível pela máquina.[000572] Other embodiments comprise the computer program for carrying out one of the methods described herein, stored in a machine-readable loader.

[000573] Em outras palavras, uma realização do método inventivo é, desta forma, um programa de computador tendo um código do programa para realizar um dos métodos descrito aqui, quando o programa de computador for executado em um computador.[000573] In other words, an embodiment of the inventive method is, in this way, a computer program having a program code for carrying out one of the methods described here, when the computer program is executed on a computer.

[000574] Outra realização do método inventivo é, desta forma, um carregador de dados (ou um meio de armazenamento digital, ou um meio legível por computador) que compreende, registrado nele, o programa de computador para realizar um dos métodos descritos aqui. O carregador de dados, o meio de armazenamento digital ou o meio registrado são tipicamente tangíveis e/ou não transitórios.[000574] Another embodiment of the inventive method is, in this way, a data loader (or a digital storage medium, or a computer-readable medium) comprising, registered therein, the computer program for carrying out one of the methods described here. The data carrier, digital storage medium, or recorded medium is typically tangible and/or non-transitory.

[000575] Outra realização do método inventivo é, desta forma, um fluxo de dados ou uma sequência de sinais que representa o programa de computador para realizar um dos métodos descritos aqui. O fluxo de dados ou a sequência de sinais pode, por exemplo, ser configurado para ser transferido através de uma conexão de comunicação de dados, por exemplo, através da Internet.[000575] Another embodiment of the inventive method is, therefore, a data stream or a sequence of signals that represents the computer program for carrying out one of the methods described here. The data stream or sequence of signals may, for example, be configured to be transferred via a data communication connection, for example via the Internet.

[000576] Outra realização compreende um meio de processamento, por exemplo, um computador, ou um dispositivo lógico programável, configurado ou adaptado para realizar um dos métodos descritos aqui.[000576] Another embodiment comprises a processing means, for example, a computer, or a programmable logic device, configured or adapted to perform one of the methods described here.

[000577] Outra realização compreende um computador tendo o programa de computador instalado nele para realizar um dos métodos descritos aqui.[000577] Another embodiment comprises a computer having computer program installed therein to perform one of the methods described herein.

[000578] Outra realização, de acordo com a invenção, compreende um aparelho ou um sistema configurado para transferir (por exemplo, eletronicamente ou opticamente) um programa de computador para realizar um dos métodos descritos aqui a um receptor. O receptor pode, por exemplo, ser um computador, um dispositivo móvel, um dispositivo de memória ou semelhantes. O aparelho ou sistema pode, por exemplo, compreender um servidor de arquivo para transferir o programa de computador ao receptor.[000578] Another embodiment, according to the invention, comprises an apparatus or a system configured to transfer (for example, electronically or optically) a computer program for carrying out one of the methods described here to a receiver. The receiver may, for example, be a computer, a mobile device, a memory device or the like. The apparatus or system may, for example, comprise a file server for transferring the computer program to the receiver.

[000579] Em algumas realizações, um dispositivo lógico programável (por exemplo, uma matriz de portas programáveis em campo) pode ser utilizado para realizar algumas ou todas as funcionalidades dos métodos descritos aqui. Em algumas realizações, uma matriz de portas programáveis em campo pode cooperar com um microprocessador a fim de realizar um dos métodos descritos aqui. Geralmente, os métodos são preferivelmente realizados por qualquer aparelho de hardware.[000579] In some embodiments, a programmable logic device (e.g., a field-programmable gate array) may be used to perform some or all of the functionality of the methods described herein. In some embodiments, a field-programmable gate array may cooperate with a microprocessor to perform one of the methods described herein. Generally, the methods are preferably performed by any hardware apparatus.

[000580] As realizações descritas acima são meramente ilustrativas para os princípios da presente invenção. É entendido que as modificações e variações das disposições e os detalhes descritos aqui serão evidentes a outros técnicos no assunto. É o objetivo, desta forma, ser limitado somente pelo escopo das reivindicações da patente iminente e não pelos detalhes específicos apresentados em forma de descrição e explicação das realizações aqui.[000580] The embodiments described above are merely illustrative of the principles of the present invention. It is understood that modifications and variations of the arrangements and details described here will be apparent to others skilled in the art. It is intended, therefore, to be limited only by the scope of the claims of the impending patent and not by the specific details presented in the form of a description and explanation of the embodiments herein.

[000581] 17. Conclusões[000581] 17. Conclusions

[000582] Para concluir, as realizações, de acordo com a invenção, compreendem um ou mais dos aspectos a seguir, em que os aspectos podem ser utilizados individualmente ou em combinação.[000582] To conclude, the embodiments, according to the invention, comprise one or more of the following aspects, wherein the aspects can be used individually or in combination.

[000583] Estado de mecanismo de contexto de hashing[000583] Hashing context mechanism state

[000584] De acordo com um aspecto da invenção, os estados na tabela hash são considerados como estados significativos e limites de grupo. Isto permite reduzir significantemente o tamanho das tabelas necessárias.[000584] According to one aspect of the invention, the states in the hash table are considered to be meaningful states and group boundaries. This allows you to significantly reduce the size of the required tables.

[000585] Atualização adicional de contexto[000585] Additional context update

[000586] De acordo com um aspecto, algumas realizações, de acordo com a invenção, compreendem uma forma computacionalmente eficiente para atualizar o contexto. Algumas realizações utilizam uma atualização adicional de contexto na qual um valor de contexto corrente numérico é derivado de um valor de contexto prévio numérico[000586] According to one aspect, some embodiments, according to the invention, comprise a computationally efficient way to update the context. Some realizations use an additional context update in which a numeric current context value is derived from a numeric previous context value.

[000587] Derivação de contexto[000587] Context derivation

[000588] De acordo com um aspecto da invenção, utilizando uma soma de dois valores absolutos espectrais está a associação de um truncamento. É um tipo de quantização do vetor de ganho dos coeficientes espectrais (como a oposição à quantização do vetor de ganho convencional). Objetiva limitar a ordem do contexto, enquanto transporta a informação mais significativa do próximo.[000588] According to one aspect of the invention, using a sum of two absolute spectral values is the association of a truncation. It is a type of gain vector quantization of spectral coefficients (as opposed to conventional gain vector quantization). It aims to limit the order of the context, while carrying the most significant information from the next one.

[000589] Tabelas atualizadas[000589] Updated tables

[000590] De acordo com um aspecto da invenção, as tabelas otimizadas ari_hash_m[742], ari_lookup_m[742] e ari_cf_m[64][17], que provêm um compromisso particularmente bom entre a eficiência da codificação e a complexidade computacional são aplicados.[000590] According to one aspect of the invention, the optimized tables ari_hash_m[742], ari_lookup_m[742] and ari_cf_m[64][17], which provide a particularly good compromise between coding efficiency and computational complexity are applied.

[000591] Outras tecnologias, que são aplicadas nas realizações, de acordo com a invenção, são descritas nos pedidos de patente não pré-publicados PCT EP2101/065725, PCT EP2010/065726, e PCT EP 2010/065727. Além disso, em algumas realizações, de acordo com a invenção, um símbolo de parada é utilizado. Além disso, em algumas realizações, somente os valores não sinalizados são considerados para o contexto.[000591] Other technologies, which are applied in the embodiments, according to the invention, are described in the non-pre-published patent applications PCT EP2101/065725, PCT EP2010/065726, and PCT EP 2010/065727. Furthermore, in some embodiments according to the invention, a stop symbol is used. Furthermore, in some embodiments, only unsigned values are considered for context.

[000592] Entretanto, os pedidos de patente Internacional não pré-publicados revelam os aspectos que estão ainda em algumas realizações de acordo com a invenção.[000592] However, non-pre-published International patent applications reveal aspects that are still in some embodiments according to the invention.

[000593] Por exemplo, uma identificação de região zero é utilizada em algumas realizações da invenção. Assim, o chamado “indicador de pequeno valor” é definido (por exemplo, bit 16 do valor de contexto corrente numérico c).[000593] For example, a zero region identification is used in some embodiments of the invention. Thus, the so-called “small value indicator” is defined (e.g. bit 16 of the current numeric context value c).

[000594] Em algumas realizações, o cálculo de contexto dependente da região pode ser utilizado. Entretanto, em outras realizações, um cálculo de contexto dependente da região pode ser omitido a fim de manter a complexidade e o tamanho das tabelas razoavelmente pequenas.[000594] In some embodiments, region-dependent context calculation may be used. However, in other embodiments, a region-dependent context calculation may be omitted in order to keep the complexity and size of the tables reasonably small.

[000595] Além disso, o contexto de hashing utilizando uma função hash é um aspecto importante da invenção. O contexto de hashing pode ter como base o conceito de duas tabelas que é descrito nos pedidos de patente Internacional não pré-publicados referenciados acima. Entretanto, adaptações específicas do contexto de hashing podem ser utilizadas em algumas realizações a fim de aumentar a eficiência computacional. Entretanto, em outras realizações, de acordo com a invenção, o contexto de hashing que é descrito nos pedidos de patente Internacional não pré-publicados referenciados acima pode ser utilizado.[000595] Furthermore, the hashing context using a hash function is an important aspect of the invention. The hashing context may be based on the two-table concept that is described in the non-pre-published International patent applications referenced above. However, specific adaptations to the hashing context can be used in some realizations in order to increase computational efficiency. However, in other embodiments, according to the invention, the hashing context that is described in the non-prepublished International patent applications referenced above may be used.

[000596] Além disso, deve ser observado que o contexto hashing adicional é bastante simples e computacionalmente eficiente. Ainda, a independência de contexto dos sinais de valores, que é utilizada em algumas realizações da invenção, ajuda a simplificar o contexto, assim mantendo as exigências de memória razoavelmente baixas.[000596] Furthermore, it should be noted that the additional hashing context is quite simple and computationally efficient. Furthermore, the context independence of value signals, which is used in some embodiments of the invention, helps to simplify the context, thus keeping memory requirements reasonably low.

[000597] Em algumas realizações da invenção, uma derivação de contexto utilizando uma soma de dois valores espectrais e uma limitação de contexto é utilizada. Estes dois aspectos podem ser combinados. Ambos objetivam limitar a ordem de contexto transportando a informação mais significativa do próximo.[000597] In some embodiments of the invention, a context derivation using a sum of two spectral values and a context limitation is used. These two aspects can be combined. Both aim to limit the context order by carrying the most significant information from the next one.

[000598] Em algumas realizações, um indicador de pequeno valor é utilizado que pode ser semelhante a uma identificação de um grupo de diversos valores zero.[000598] In some embodiments, a small value indicator is used that may be similar to identifying a group of several zero values.

[000599] Em algumas realizações, de acordo com a invenção, um mecanismo de parada aritmética é utilizado. O conceito é semelhante ao uso de um símbolo “fim do bloco” em JPEG, que tem uma função comparável. Entretanto, em algumas realizações da invenção, o símbolo (“ARITH_STOP”) não é incluído explicitamente no codificador de entropia. Ainda, uma combinação de símbolos já existentes, que não poderia ocorrer previamente, é utilizada, ou seja, “ESC+0”. Em outras palavras, o decodificador de áudio é configurado para detectar uma combinação de símbolos existentes, que não são normalmente utilizados para representar um valor numérico, e para interpretar a ocorrência de tal combinação de símbolos já existentes como uma condição de parada aritmética.[000599] In some embodiments, according to the invention, an arithmetic stop mechanism is used. The concept is similar to the use of an “end of block” symbol in JPEG, which has a comparable function. However, in some embodiments of the invention, the symbol (“ARITH_STOP”) is not explicitly included in the entropy encoder. Furthermore, a combination of existing symbols, which could not previously occur, is used, that is, “ESC+0”. In other words, the audio decoder is configured to detect a combination of existing symbols, which are not normally used to represent a numeric value, and to interpret the occurrence of such a combination of existing symbols as an arithmetic stop condition.

[000600] Uma realização, de acordo com a invenção, utiliza um mecanismo de hashing de contexto de duas tabelas.[000600] An embodiment, according to the invention, uses a two-table context hashing mechanism.

[000601] Para resumir, algumas realizações, de acordo com a invenção, podem compreender um ou mais dos cinco aspectos principais.[000601] To summarize, some embodiments, according to the invention, may comprise one or more of the five main aspects.

[000602] Tabelas melhoradas;[000602] Improved tables;

[000603] contexto estendido para detectar tanto as regiões zero quanto as regiões de pequena amplitude no próximo;[000603] extended context to detect both zero regions and small amplitude regions in the near;

[000604] contexto de hashing;[000604] hashing context;

[000605] geração do estado de contexto: atualização adicional do estado de contexto; e[000605] context state generation: additional context state update; It is

[000606] derivação de contexto: quantização específica dos valores de contexto incluindo a soma das amplitudes e limitação.[000606] context derivation: specific quantization of context values including sum of amplitudes and limiting.

[000607] Para concluir, um aspecto das realizações, de acordo com a presente invenção, permanece em uma atualização adicional de contexto. As realizações, de acordo com a invenção, compreendem um conceito eficiente para a atualização do contexto, que evita os cálculos extensivos do projeto de trabalho (por exemplo, do projeto de trabalho 5). Ainda, as operações simples de mudança e operações lógicas são utilizadas em algumas realizações. A atualização simples de contexto facilita o cálculo do contexto significantemente.[000607] To conclude, one aspect of the embodiments according to the present invention remains in a further context update. The realizations according to the invention comprise an efficient concept for updating the context, which avoids the extensive calculations of the working project (e.g. of working project 5). Furthermore, simple change operations and logical operations are used in some realizations. The simple context update makes context calculation significantly easier.

[000608] Em algumas realizações, o contexto é independente do sinal dos valores (por exemplo, os valores espectrais decodificados). Esta independência do contexto a partir do sinal dos valores traz consigo uma complexidade reduzida do contexto variável. Este conceito tem como base a observação que uma negação do sinal no contexto não traz consigo uma degradação severa da eficiência da codificação.[000608] In some embodiments, the context is independent of the sign of the values (e.g., the decoded spectral values). This independence of the context from the sign of the values brings with it a reduced complexity of the variable context. This concept is based on the observation that a negation of the signal in context does not bring with it a severe degradation of coding efficiency.

[000609] De acordo com um aspecto da invenção, o contexto é derivado utilizando a soma de dois valores espectrais. Assim, as exigências de memória para armazenamento do contexto são significantemente reduzidas. Assim, o uso de um valor de contexto, que representa a soma de dois valores espectrais, pode ser considerado como vantajoso em alguns casos.[000609] According to one aspect of the invention, the context is derived using the sum of two spectral values. Thus, the memory requirements for storing the context are significantly reduced. Thus, the use of a context value, which represents the sum of two spectral values, can be considered advantageous in some cases.

[000610] Ainda, a limitação do contexto traz uma melhoria significativa em alguns casos. Além da derivação do contexto utilizando a soma de dois valores espectrais, as entradas da matriz de contexto “q” são limitadas a um valor máximo de “0xF” em algumas realizações que, por sua vez, resulta em uma limitação das exigências de memória. Esta limitação da matriz dos valores do contexto matriz “q” traz algumas vantagens.[000610] Furthermore, limiting the context brings a significant improvement in some cases. In addition to context derivation using the sum of two spectral values, the context matrix entries “q” are limited to a maximum value of “0xF” in some realizations which in turn results in a limitation of memory requirements. This limitation of the matrix of context values matrix “q” brings some advantages.

[000611] Em algumas realizações, o chamado “indicador de pequeno valor” é utilizado. Ao obter o contexto variável c (que é também designado como um valor de contexto corrente numérico), um indicador é definido se os valores de algumas entradas “q[1][i-3]” a “q[1][i-1]” forem muito pequenos. Assim, o cálculo do contexto pode ser realizado com alta eficiência. Valores de contexto particularmente significativos (por exemplo, valor de contexto corrente numérico) podem ser obtidos.[000611] In some embodiments, the so-called “small value indicator” is used. By obtaining the context variable c (which is also designated as a numeric current context value), an indicator is defined if the values of some inputs “q[1][i-3]” to “q[1][i- 1]” are too small. Thus, context calculation can be performed with high efficiency. Particularly meaningful context values (e.g. numeric current context value) can be obtained.

[000612] Em algumas realizações, um mecanismo de parada aritmética é utilizado. O mecanismo “ARITH_STOP” permite uma parada eficiente da codificação aritmética ou decodificação se há somente zeros valores deixados. Assim, a eficiência da codificação pode ser melhorada a custos moderados em termos de complexidade.[000612] In some embodiments, an arithmetic stop mechanism is used. The “ARITH_STOP” mechanism allows efficient stopping of arithmetic encoding or decoding if there are only zero values left. Thus, coding efficiency can be improved at moderate costs in terms of complexity.

[000613] De acordo com um aspecto da invenção, um mecanismo de contexto de hashing de duas tabelas é utilizado. O mapeamento do contexto é realizado utilizando um algoritmo de divisão de intervalo que avalia a tabela “ari_hash_m” em combinação com uma avaliação da tabela de consulta subsequente da tabela “ari_lookup_m”. Este algoritmo é mais eficiente que o algoritmo WD3.[000613] According to one aspect of the invention, a two-table hashing context mechanism is used. Context mapping is performed using a range splitting algorithm that evaluates the “ari_hash_m” table in combination with a subsequent lookup table evaluation of the “ari_lookup_m” table. This algorithm is more efficient than the WD3 algorithm.

[000614] A seguir, alguns detalhes adicionais serão discutidos.[000614] Next, some additional details will be discussed.

[000615] Deve ser observado aqui que as tabelas “arith_hash_m[742]” e “arith_lookup_m[742]” são duas tabelas distintas . A primeira é utilizada para mapear um único índice de contexto (por exemplo, valor de contexto numérico) no índice do modelo de probabilidade (por exemplo, valor de índice de regra de mapeamento) e a segunda é utilizada para mapear um grupo de contextos consecutivos, delimitados pelos índices de contexto em “arith_hash_m[]”, no único modelo de probabilidade.[000615] It should be noted here that the tables “arith_hash_m[742]” and “arith_lookup_m[742]” are two distinct tables. The first is used to map a single context index (e.g. numeric context value) to the probability model index (e.g. mapping rule index value) and the second is used to map a group of consecutive contexts , delimited by the context indices in “arith_hash_m[]”, in the single probability model.

[000616] Ainda deve ser observado que a tabela “arith_cf_msb[64][16]” pode ser utilizada como uma alternativa à tabela “ari_cf_m[64][17]”, embora as dimensões sejam levemente diferentes. “ari_cf_m[][]” e “ari_cf_msb[][]” podem se referir à mesma tabela, pois os 17o coeficientes do modelo de probabilidades são sempre zero. Às vezes não é levado em consideração ao contar o espaço necessário para armazenar as tabelas.[000616] It should also be noted that the “arith_cf_msb[64][16]” table can be used as an alternative to the “ari_cf_m[64][17]” table, although the dimensions are slightly different. “ari_cf_m[][]” and “ari_cf_msb[][]” can refer to the same table, as the 17th coefficients of the probability model are always zero. Sometimes it is not taken into account when counting the space required to store tables.

[000617] Para resumir o mencionado acima, algumas realizações, de acordo com a invenção, provêm uma nova codificação silenciosa proposta (codificação ou decodificação), que geram modificações no projeto de trabalho USAC MPEG (por exemplo, no projeto de trabalho USAC MPEG 5). As ditas modificações podem ser vistas nas figures anexas e também na descrição relacionada.[000617] To summarize the above, some embodiments, according to the invention, provide a new proposed silent encoding (encoding or decoding), which generate modifications in the USAC MPEG working project (for example, in the USAC MPEG 5 working project ). Said modifications can be seen in the attached figures and also in the related description.

[000618] Como um marco de conclusão, deve ser observado que o prefixo “ari” e o prefixo “arith” nos nomes das variáveis, matrizes, funções, e assim por diante, são utilizados de forma permutável.[000618] As a conclusion, it should be noted that the prefix “ari” and the prefix “arith” in the names of variables, matrices, functions, and so on, are used interchangeably.

Claims (6)

1. DECODIFICADOR DE ÁUDIO (200; 800) para prover uma informação de áudio decodificada (212; 812) com base em uma informação de áudio codificada (210; 810), o decodificador de áudio é caracterizado por compreender: um decodificador aritmético (230; 820) para prover diversos valores espectrais decodificados (232; 822) com base em uma representação aritmeticamente codificada (222; 821) dos valores espectrais compreendidos na informação de áudio codificada (210; 810); e um conversor de domínio de frequência em domínio de tempo (260; 830) para prover uma representação de áudio de domínio de tempo (262; 812) utilizando os valores espectrais decodificados (232; 822), para obter a informação de áudio decodificada (212; 812); em que o decodificador aritmético (232; 820) é configurado para selecionar uma regra de mapeamento (297; cum_freq[]) que descreve um mapeamento de um valor de código (value) da representação aritmeticamente codificada dos valores espectrais representando um ou mais dos valores espectrais, ou um plano de bit mais significativo de um ou mais dos valores espectrais, em uma forma codificada, em um código de símbolo (symbol) representando um ou mais dos valores espectrais, ou um plano de bit mais significativo de um ou mais dos valores espectrais, em uma forma decodificada, na dependência de um estado de contexto (s) descrito por um valor de contexto corrente numérico (c); configurado para determinar o valor de contexto corrente numérico (c) na dependência dos diversos valores espectrais previamente decodificados; em que o decodificador aritmético é configurado para avaliar uma tabela hash (ari_hash_m[]), cujas entradas definem tanto os valores de estado significativo entre os valores de contexto numérico quanto os limites dos intervalos dos valores de estado não significativo entre os valores de contexto numérico, para selecionar a regra de mapeamento, em que a tabela hash ari_hash_m é definida conforme mostrado nas figuras 22(1), 22(2), 22(3) e 22(4); em que o decodificador aritmético é configurado para avaliar a tabela hash (ari_hash_m), para determinar se o valor de contexto corrente numérico é idêntico a um valor de contexto da tabela descrito por uma entrada da tabela hash (ari_hash_m) ou para determinar um intervalo descrito pelas entradas da tabela hash (ari_hash_m) na qual o valor de contexto corrente numérico se encontra, e para derivar um valor do índice da regra de mapeamento (pki) que descreve uma regra de mapeamento selecionada na dependência de um resultado da avaliação, em que um valor do índice da regra de mapeamento é individualmente associado a um valor de contexto numérico sendo um valor de estado significativo.1. AUDIO DECODER (200; 800) to provide decoded audio information (212; 812) based on encoded audio information (210; 810), the audio decoder is characterized by comprising: an arithmetic decoder (230 ; 820) to provide various decoded spectral values (232; 822) based on an arithmetically encoded representation (222; 821) of the spectral values comprised in the encoded audio information (210; 810); and a frequency domain to time domain converter (260; 830) for providing a time domain audio representation (262; 812) using the decoded spectral values (232; 822), to obtain the decoded audio information ( 212; 812); wherein the arithmetic decoder (232; 820) is configured to select a mapping rule (297; cum_freq[]) that describes a mapping of a code value (value) to the arithmetically encoded representation of the spectral values representing one or more of the values spectral values, or a most significant bit plane of one or more of the spectral values, in a coded form, in a symbol code representing one or more of the spectral values, or a most significant bit plane of one or more of the spectral values, in a decoded form, in dependence on a context state (s) described by a current numeric context value (c); configured to determine the current numerical context value (c) depending on the various previously decoded spectral values; wherein the arithmetic decoder is configured to evaluate a hash table (ari_hash_m[]), whose entries define both the significant state values among the numeric context values and the limits of the ranges of the non-significant state values among the numeric context values , to select the mapping rule, where the hash table ari_hash_m is defined as shown in figures 22(1), 22(2), 22(3) and 22(4); wherein the arithmetic decoder is configured to evaluate the hash table (ari_hash_m), to determine whether the current numeric context value is identical to a table context value described by a hash table entry (ari_hash_m), or to determine a described range by the entries of the hash table (ari_hash_m) in which the current numeric context value is found, and to derive a mapping rule index (pki) value that describes a mapping rule selected in dependence on an evaluation result, where a mapping rule index value is individually associated with a numeric context value being a meaningful state value. 2. DECODIFICADOR DE ÁUDIO, de acordo com a reivindicação 1, caracterizado em que o decodificador aritmético é configurado para comparar o valor de contexto corrente numérico (c), ou uma versão escalada (s) do valor de contexto corrente numérico, com uma série das entradas numericamente ordenadas (j=ari_hash_m[i]) ou sub-entradas da tabela hash (ari_hash_m[]), para iterativamente obter um valor de índice da tabela hash (i_max) de uma entrada da tabela (ari_lookup_m[i_max]), de modo que o valor de contexto corrente numérico (c) se encontra dentro de um intervalo definido pela entrada tabela hash obtida (ari_hash_m[i_max]) designada pelo valor de índice da tabela hash obtido (i_max) e uma entrada da tabela hash adjacente (ari_hash_m[i_max-1]), e em que o decodificador aritmético é configurado para determinar uma próxima entrada da série de entradas da tabela hash (ari_hash_m[]) na dependência de um resultado de uma comparação entre o valor de contexto corrente numérico (c), ou uma versão escalada (s) do valor de contexto corrente numérico, e uma entrada ou sub-entrada corrente (ari_hash_m[i]) da tabela hash.2. AUDIO DECODER, according to claim 1, characterized in that the arithmetic decoder is configured to compare the current numeric context value (c), or a scaled version (s) of the current numeric context value, with a series of numerically ordered entries (j=ari_hash_m[i]) or hash table sub-entries (ari_hash_m[]), to iteratively obtain a hash table index value (i_max) from a table entry (ari_lookup_m[i_max]), such that the current numeric context value (c) lies within a range defined by the obtained hash table entry (ari_hash_m[i_max]) designated by the obtained hash table index value (i_max) and an adjacent hash table entry ( ari_hash_m[i_max-1]), and wherein the arithmetic decoder is configured to determine a next entry in the series of hash table entries (ari_hash_m[]) depending on a result of a comparison between the current numeric context value (c ), or a scaled version(s) of the current numeric context value, and a current entry or sub-entry (ari_hash_m[i]) of the hash table. 3. DECODIFICADOR DE ÁUDIO, de acordo com a reivindicação 2, caracterizado em que o decodificador aritmético é configurado para selecionar uma regra de mapeamento definida por uma segunda sub-entrada (j&0xFF) da tabela hash (ari_hash_m) designada pelo valor de índice corrente da tabela hash (i) se for observado que o valor de contexto corrente numérico (c) ou uma versão escalada (s) dele for igual à primeira sub-entrada (j>>8) da tabela hash (j=ari_hash_m[i]) designada pelo valor do índice corrente da tabela hash (i).3. AUDIO DECODER, according to claim 2, characterized in that the arithmetic decoder is configured to select a mapping rule defined by a second sub-entry (j&0xFF) of the hash table (ari_hash_m) designated by the current index value of the hash table (i) if it is observed that the current numeric context value (c) or a scaled version (s) thereof is equal to the first sub-entry (j>>8) of the hash table (j=ari_hash_m[i]) designated by the value of the current index of the hash table (i). 4. DECODIFICADOR DE ÁUDIO, de acordo com a reivindicação 2 ou 3, caracterizado em que o decodificador aritmético é configurado para selecionar uma regra de mapeamento definida por uma entrada ou sub-entrada (ari_lookup_m[i_max]) de uma tabela de mapeamento ari_lookup_m se não for observado que o valor de contexto corrente numérico é igual a uma sub-entrada da tabela hash (ari_hash_m), em que o decodificador aritmético é configurado para escolher a entrada ou sub-entrada da tabela de mapeamento na dependência do valor de índice da tabela hash iterativamente obtido (i_max).4. AUDIO DECODER, according to claim 2 or 3, characterized in that the arithmetic decoder is configured to select a mapping rule defined by an entry or sub-entry (ari_lookup_m[i_max]) of an ari_lookup_m mapping table if is not observed that the current numeric context value is equal to a sub-entry of the hash table (ari_hash_m), where the arithmetic decoder is configured to choose the entry or sub-entry of the mapping table depending on the index value of the Iteratively obtained hash table (i_max). 5. DECODIFICADOR DE ÁUDIO, de acordo com uma das reivindicações 1 a 4, caracterizado em que o decodificador aritmético é configurado para de forma selecionável prover um valor do índice da regra de mapeamento definido pela entrada da tabela hash designada pelo valor de índice corrente da tabela hash se for observado que o valor de contexto corrente numérico (c) é igual a um valor (j>>8) definido pela entrada (ari_hash_m[i]) da tabela hash designada pelo valor de índice corrente da tabela hash (i).5. AUDIO DECODER, according to one of claims 1 to 4, characterized in that the arithmetic decoder is configured to selectably provide an index value of the mapping rule defined by the hash table entry designated by the current index value of the hash table if it is observed that the current numeric context value (c) is equal to a value (j>>8) defined by the entry (ari_hash_m[i]) of the hash table designated by the current index value of the hash table (i) . 6. MÉTODO PARA PROVER UMA INFORMAÇÃO DE ÁUDIO DECODIFICADA (212; 812) COM BASE EM UMA INFORMAÇÃO DE ÁUDIO CODIFICADA (210; 810), o método é caracterizado por compreender: prover diversos valores espectrais decodificados (232; 822) com base em uma representação aritmeticamente codificada (222; 821) dos valores espectrais compreendidos na informação de áudio codificada (210; 810); e prover uma representação de áudio de domínio de tempo (262; 812) utilizando os valores espectrais decodificados (232; 822), para obter a informação de áudio decodificada (212; 812); em que prover diversos valores espectrais decodificados compreende selecionar uma regra de mapeamento (297; cum_freq[]) que descreve um mapeamento de um valor de código (value) da representação aritmeticamente codificada dos valores espectrais representando um ou mais dos valores espectrais, ou um plano de bit mais significativo de um ou mais dos valores espectrais, em uma forma codificada em um código de símbolo (symbol) representando um ou mais dos valores espectrais, ou um plano de bit mais significativo de um ou mais dos valores espectrais, em uma forma decodificada, na dependência de um estado de contexto (s) descrito por um valor de contexto corrente numérico (c); em que o valor de contexto corrente numérico (c) é determinado na dependência dos diversos valores espectrais previamente decodificados; em que uma tabela hash (ari_hash_m[]), cujas entradas definem tanto os valores de estado significativo entre os valores de contexto numérico quanto os limites dos intervalos dos valores de estado não significativo entre os valores de contexto numérico, é avaliado para selecionar a regra de mapeamento, em que a tabela hash ari_hash_m é definida conforme mostrado nas figuras 22(1), 22(2), 22(3) e 22(4); em que a tabela hash (ari_hash_m) é avaliada para determinar se o valor de contexto corrente numérico é idêntico a um valor de contexto da tabela descrito por uma entrada da tabela hash (ari_hash_m) ou para determinar um intervalo descrito pelas entradas da tabela hash (ari_hash_m) no qual o valor de contexto corrente numérico se encontra, e em que um valor do índice da regra de mapeamento (pki) que descreve uma regra de mapeamento selecionada é derivado na dependência de um resultado da avaliação; em que um valor do índice da regra de mapeamento é individualmente associado a um valor de contexto numérico sendo um valor de estado significativo.6. METHOD FOR PROVIDING A DECODED AUDIO INFORMATION (212; 812) BASED ON A CODED AUDIO INFORMATION (210; 810), the method is characterized by comprising: providing several decoded spectral values (232; 822) based on a arithmetically encoded representation (222; 821) of the spectral values comprised in the encoded audio information (210; 810); and providing a time domain audio representation (262; 812) using the decoded spectral values (232; 822), to obtain the decoded audio information (212; 812); wherein providing a plurality of decoded spectral values comprises selecting a mapping rule (297; cum_freq[]) that describes a mapping of a code value (value) to the arithmetically encoded representation of the spectral values representing one or more of the spectral values, or a plane of one or more of the spectral values, in a form encoded in a symbol code representing one or more of the spectral values, or a most significant bit plane of one or more of the spectral values, in a form decoded, depending on a context state (s) described by a current numeric context value (c); wherein the current numerical context value (c) is determined depending on the various previously decoded spectral values; wherein a hash table (ari_hash_m[]), whose entries define both the significant state values among the numeric context values and the boundaries of the ranges of the non-significant state values among the numeric context values, is evaluated to select the rule mapping, where the hash table ari_hash_m is defined as shown in figures 22(1), 22(2), 22(3) and 22(4); wherein the hash table (ari_hash_m) is evaluated to determine whether the current numeric context value is identical to a table context value described by a hash table entry (ari_hash_m) or to determine a range described by the hash table entries ( ari_hash_m) in which the current numeric context value lies, and in which a mapping rule index (pki) value describing a selected mapping rule is derived depending on an evaluation result; wherein a mapping rule index value is individually associated with a numeric context value being a meaningful state value.
BR122021003390-0A 2011-07-20 AUDIO CODER, AUDIO DECODER, METHOD OF CODING AND AUDIO INFORMATION, METHOD OF DECODING AUDIO INFORMATION AND COMPUTER PROGRAM USING AN OPTIMIZED HASH TABLE BR122021003390A2 (en)

Publications (1)

Publication Number Publication Date
BR122021003390A2 true BR122021003390A2 (en) 2023-09-05

Family

ID=

Similar Documents

Publication Publication Date Title
ES2937066T3 (en) Audio decoder, method and computer program for audio decoding
ES2532203T3 (en) Audio encoder, audio decoder, method to encode and decode an audio information and computer program that obtains a sub-region context value based on a standard of previously decoded spectral values
RU2605677C2 (en) Audio encoder, audio decoder, method of encoding audio information, method of decoding audio information and computer program using iterative reduction of size of interval
BR122021003390A2 (en) AUDIO CODER, AUDIO DECODER, METHOD OF CODING AND AUDIO INFORMATION, METHOD OF DECODING AUDIO INFORMATION AND COMPUTER PROGRAM USING AN OPTIMIZED HASH TABLE
BR122021003398A2 (en) AUDIO CODER, AUDIO DECODER, METHOD OF CODING AND AUDIO INFORMATION, METHOD OF DECODING AUDIO INFORMATION AND COMPUTER PROGRAM USING AN OPTIMIZED HASH TABLE