Audio encoder, audio decoder, method for encoding and decoding an audio information, and computer program obtaining a context sub-region value on the basis of a norm of previously decoded spectral values
Abstract
This record has no abstract on file.
Term
No projected expiry on record.
- Priority
- Filed
- Published
- Today
1 claim: 1 independent, 0 dependent
- 1Patent claims Zastrzeżenia patentowe 1. An audio decoder (200; 800) for providing decoded audio information (212; 812) based on the encoded audio information (210; 810), the audio decoder comprising:an arithmetic decoder (230;820) for providing multiple decoded spectral values (232 ;822) based on an arithmetically coded representation (222;821) of spectral values contained in the encoded audio information (210;810);and a converter (260;830) from the frequency domain to the time domain, using decoded spectral values (232;822) to obtain decoded audio information (212;812);1. Dekoder audio (200;800) do dostarczania zdekodowanej informacji audio (212;812) w oparciu o zakodowaną informację audio (210;810), przy czym dekoder audio zawiera: dekoder arytmetyczny (230;820) do dostarczania wielu zdekodowanych wartości widmowych (232;822) w oparciu o arytmetycznie zakodowaną reprezentację (222;821) wartości widmowych zawartych w zakodowanej informacji audio (210;810);oraz konwerter (260;830) z dziedziny częstotliwości do dziedziny czasu, wykorzystujący zdekodowane wartości widmowe (232;822) dla uzyskania zdekodowanej informacji audio (212;812);przy czym dekoder arytmetyczny (230;820) jest skonfigurowany do wyboru zasady mapowania (297;cum_freq[]) opisującej mapowanie wartości kodu (acod_m, value) arytmetycznie zakodowanej reprezentacji (222;821) wartości widmowych na kod symbolu (symbol) reprezentujący jedną lub większą liczbę zdekodowanych wartości widmowych lub co najmniej część jednej lub większej liczby zdekodowanych wartości widmowych, w zależności od stanu kontekstu opisanego przez numeryczną bieżącą wartość (c) kontekstu;oraz przy czym dekoder arytmetyczny (230;820) jest skonfigurowany do wyznaczania numerycznej bieżącej wartości (c) kontekstu w zależności od wielu uprzednio zdekodowanych wartości widmowych;wherein the arithmetic decoder (230;820) is configured to select a mapping rule (297;cum_freq []) describing the mapping of the code value (acod_m, value) of the arithmetically coded representation (222;821) of the spectral values per symbol code (symbol) representing one or more decoded spectral values or at least a portion of one or more decoded spectral values, depending on the context state described by the numerical current value (c) of the context;and wherein the arithmetic decoder (230;820) is configured to determine the numerical current value (c) of the context depending on a plurality of previously decoded spectral values;przy czym dekoder arytmetyczny jest skonfigurowany do uzyskiwania wielu wartości podobszaru kontekstu (q[0][i-1], q[0][i],q[0][i+1],q[1][i-1]) opisujących podobszary kontekstu w oparciu o uprzednio zdekodowane wartości widmowe i do przechowywania wymienionych wartości podobszaru kontekstu;wherein the arithmetic decoder is configured to obtain multiple values of the context subarea (q [0] [i-1], q [0] [i], q [0] [i + 1], q [1] [i-1] ) describing context sub-areas based on previously decoded spectral values and for storing said context sub-area values;przy czym dekoder arytmetyczny jest skonfigurowany do pozyskiwania numerycznej bieżącej wartości (c) kontekstu powiązanej z jedną lub większą liczbą wartości widmowych, które mają być zdekodowane, w zależności od przechowywanych wartości podobszaru kontekstu (q[0][i-1], q[0][i],q[0][i+1],q[1][i-1]);wherein the arithmetic decoder is configured to obtain the numerical current value (c) of the context associated with one or more spectral values to be decoded, depending on the stored values of the context subarea (q [0] [i-1], q [0 ] [i], q [0] [i + 1], q [1] [i-1]);104 wherein the arithmetic decoder is configured to calculate the norm of a vector formed by a plurality of previously decoded spectral values (a, b) to obtain one of the listed multiple values of the context subarea as a common value of the context subarea (q [1] [i-1] associated with many previously decoded spectral values (a, b), on the basis of which the said norm is calculated. 104 przy czym dekoder arytmetyczny jest skonfigurowany do obliczania normy wektora utworzonego przez wiele uprzednio zdekodowanych wartości widmowych (a,b) dla uzyskania jednej z wymienionych wielu wartości podobszaru kontekstu, jako wspólnej wartości podobszaru kontekstu (q[1][i-1]) powiązanej z wieloma uprzednio zdekodowanymi wartościami widmowymi (a,b), w oparciu o które obliczana jest wymieniona norma. 2. Audio decoder according to claim The arithmetic decoder of claim 1, wherein the arithmetic decoder is configured to sum the absolute values of a plurality of previously decoded spectral values that are associated with adjacent frequency bins of the frequency domain to time domain converter and with the common time portion of the audio information to obtain a common context sub-area value associated with many previously decoded spectral values. 2. Dekoder audio według zastrz. 1, w którym dekoder arytmetyczny jest skonfigurowany do sumowania wartości absolutnych wielu uprzednio zdekodowanych wartości widmowych, które są powiązane z sąsiednimi binami częstotliwości konwertera z dziedziny częstotliwości do dziedziny czasu i ze wspólną częścią czasową informacji audio, dla uzyskania wspólnej wartości podobszaru kontekstu powiązanej z wieloma uprzednio zdekodowanymi wartościami widmowymi. 3. Audio decoder according to claim The arithmetic decoder of Claim 1, wherein the arithmetic decoder is configured to quantize the norm of many previously decoded spectral values that are associated with adjacent frequency bins of the frequency domain to time domain converter and with a common time portion of audio information to obtain a common context subarea value associated with many previously decoded spectral values. 3. Dekoder audio według zastrz. 1, w którym dekoder arytmetyczny jest skonfigurowany do kwantyzacji normy wielu uprzednio zdekodowanych wartości widmowych, które są powiązane z sąsiednimi binami częstotliwości konwertera z dziedziny częstotliwości do dziedziny czasu i ze wspólną częścią czasową informacji audio, dla uzyskania wspólnej wartości podobszaru kontekstu powiązanej z wieloma uprzednio zdekodowanymi wartościami widmowymi. 4. Audio decoder according to one of the claims 3. The method of claims 1 to 3, wherein the arithmetic decoder is configured to sum the absolute values of many previously decoded spectral values (a, b), which are encoded using a common code value (acod_m, value), to obtain a common value of the context sub-area associated with many previously decoded spectral values. 4. Dekoder audio według jednego z zastrz. 1 do 3, w którym dekoder arytmetyczny jest skonfigurowany do sumowania wartości absolutnych wielu uprzednio zdekodowanych wartości widmowych (a,b), które są zakodowane z użyciem wspólnej wartości kodu (acod_m, value), dla uzyskania wspólnej wartości podobszaru kontekstu powiązanej z wieloma uprzednio zdekodowanymi wartościami widmowymi. 5. Audio decoder according to one of the claims 3. The method of claims 1 to 4, wherein the arithmetic decoder is configured to provide the decoded spectral values with a sign to a frequency domain converter to the time domain and to add the absolute values corresponding to the decoded signed spectral values to obtain a common context subarea value associated with many previously decoded spectral values . 5. Dekoder audio według jednego z zastrz. 1 do 4, w którym dekoder arytmetyczny jest skonfigurowany do dostarczania zdekodowanych wartości widmowych ze znakiem do konwertera z dziedziny częstotliwości do dziedziny czasu i do sumowania wartości absolutnych odpowiadających zdekodowanym wartościom widmowym ze znakiem, dla uzyskania wspólnej wartości podobszaru kontekstu powiązanej z wieloma uprzednio zdekodowanymi wartościami widmowymi. 6. Audio decoder according to one of the claims 3. The method of claims 1 to 5, wherein the arithmetic decoder is configured to obtain a limited sum value from the sum of the absolute values of previously decoded spectral values, so that 6. Dekoder audio według jednego z zastrz. 1 do 5, w którym dekoder arytmetyczny jest skonfigurowany do pozyskiwania ograniczonej wartości sumy z sumy wartości absolutnych uprzednio zdekodowanych wartości widmowych, tak że zakres potencjalnych 105 The values represented by the limited sum value are smaller than the range of potential sum values. 105 wartości reprezentowanych przez ograniczoną wartość sumy jest mniejszy od zakresu potencjalnych wartości sumy. 7. Audio decoder according to one of the claims 3. The method of claims 1 to 6, wherein the arithmetic decoder is configured to obtain the numerical current value (c) of the context depending on the value of the context subarea (q [0] [i-1], q [0], [i], q [0] [ and + 1], q [1] [i-1]) associated with various sets of previously decoded spectral values. 7. Dekoder audio według jednego z zastrz. 1 do 6, w którym dekoder arytmetyczny jest skonfigurowany do uzyskiwania numerycznej bieżącej wartości (c) kontekstu w zależności od wartości podobszaru kontekstu (q[0][i-1], q[0],[i], q[0][i+1], q[1][i-1]) powiązanych z różnymi zbiorami uprzednio zdekodowanych wartości widmowych. 8. Audio decoder according to claim The method of claim 7, wherein the arithmetic decoder is configured to obtain a numerical representation of the current context value (c) such that the first part of the numerical representation of the current context value is determined by the first sum value or the limited value of the sum of absolute values of many previously decoded spectral values, and so that the second part of the numerical representation of the current context value is determined by the second value of the sum or the limited value of the sum of absolute values of many previously decoded spectral values. 8. Dekoder audio według zastrz. 7, w którym dekoder arytmetyczny jest skonfigurowany do uzyskiwania reprezentacji liczbowej numerycznej bieżącej wartości (c) kontekstu tak, że pierwsza część reprezentacji liczbowej numerycznej bieżącej wartości kontekstu jest wyznaczona przez pierwszą wartość sumy lub ograniczoną wartość sumy wartości absolutnych wielu uprzednio zdekodowanych wartości widmowych i tak, że druga część reprezentacji liczbowej numerycznej bieżącej wartości kontekstu jest wyznaczana przez drugą wartość sumy lub ograniczoną wartość sumy wartości absolutnych wielu uprzednio zdekodowanych wartości widmowych. 9. Audio decoder according to claim 7 or claim The method of claim 8, wherein the arithmetic decoder is configured to obtain the numerical current value (c) of the context, such that the first sum value or limited value of the sum of absolute values of many previously decoded spectral values and the second value sum or the limited value of the sum of absolute values of many previously decoded spectral values includes different weights in the numeric current value (c) of the context. 9. Dekoder audio według zastrz. 7 albo zastrz. 8, w którym dekoder arytmetyczny jest skonfigurowany do uzyskiwania numerycznej bieżącej wartości (c) kontekstu, tak że pierwsza wartość sumy lub ograniczona wartość sumy wartości absolutnych wielu uprzednio zdekodowanych wartości widmowych i druga wartość sumy lub ograniczona wartość sumy wartości absolutnych wielu uprzednio zdekodowanych wartości widmowych zawierają różne wagi w numerycznej bieżącej wartości (c) kontekstu. 10. Audio decoder according to one of the claims 7 to 9, wherein the arithmetic decoder is configured to modify the numerical representation of the numerical current value (c) of the context describing the context state associated with one or more previously decoded spectral values, depending on the sum value or the limited sum value (g [1] [and -1]) absolute values of many previously decoded spectral values, to obtain a numerical representation of the current value (c) of the context describing the state of the context associated with one or more spectral values to be decoded. 10. Dekoder audio według jednego z zastrz. 7 do 9, w którym dekoder arytmetyczny jest skonfigurowany do modyfikacji reprezentacji liczbowej numerycznej bieżącej wartości (c) kontekstu opisującej stan kontekstu powiązany z jedną lub większą liczbą uprzednio zdekodowanych wartości widmowych, w zależności od wartości sumy lub ograniczonej wartości sumy (g[1][i-1]) wartości absolutnych wielu uprzednio zdekodowanych wartości widmowych, dla uzyskania reprezentacji liczbowej numerycznej bieżącej wartości (c) kontekstu opisującej stan kontekstu powiązany z jedną lub większą liczbą wartości widmowych, które mają być zdekodowane. 11. Audio decoder according to one of the claims 3. The method of claims 1 to 10, wherein the arithmetic decoder is configured to check if the sum of multiple values of the context subarea (q [1] [i3], q [1] [i-2], q [1] [i-1]) is smaller from or equal to a pre-set threshold sum value and to the selective numerical modification of the current value (c) of the context depending on the result of the check, 11. Dekoder audio według jednego z zastrz. 1 do 10, w którym dekoder arytmetyczny jest skonfigurowany do sprawdzenia, czy suma wielu wartości podobszaru kontekstu (q[1][i3], q[1][i-2], q[1][i-1]) jest mniejsza od lub równa, wstępnie ustalonej progowej wartości sumy i do selektywnej modyfikacji numerycznej bieżącej wartości (c) kontekstu w zależności od wyniku sprawdzenia, 106 each of the sub-area values (q [1] [i-3], q [1] [i-2], q [1] [i-1]) is the sum value or a limited value of the sum of absolute values of previously associated many decoded spectral values. 106 przy czym każda z wartości podobszaru kontekstu (q[1][i-3], q[1][i-2], q[1][i-1]) jest wartością sumy lub ograniczoną wartością sumy wartości absolutnych powiązanych wielu uprzednio zdekodowanych wartości widmowych. 12. Audio decoder according to one of claims 1 to 11, wherein the arithmetic decoder is configured to take into account multiple values of the context subarea (q [0] [i-3], q [0] [i], q [0] [i + 1 ]) defined by previously decoded spectral values associated with the previous temporal portion of the audio content, as well as to include at least one context subarea value (q [1] [i-1]) defined by previously decoded spectral values associated with the current temporal portion of the audio content, to obtain the numerical current value (c) of the context associated with one or more spectral values to be decoded and associated with the current temporal portion of the audio content, yes, that for obtaining the numerical current value (c) of the context, the environment of both the temporally adjacent previously decoded spectral values of the previous temporal portion and the frequency of adjacent previously decoded spectral values of the current temporal portion are taken into account. 12. Dekoder audio według jednego z zastrzeżeń od 1 do 11, w którym dekoder arytmetyczny jest skonfigurowany do uwzględniania wielu wartości podobszaru kontekstu (q[0][i-3], q[0][i], q[0][i+1]) zdefiniowanych przez uprzednio zdekodowane wartości widmowe powiązane z poprzednią czasową częścią zawartości audio, jak również do uwzględniania co najmniej jednej wartości podobszaru kontekstu (q[1][i-1]) zdefiniowanej przez uprzednio zdekodowane wartości widmowe powiązane z bieżącą czasową częścią zawartości audio, dla uzyskania numerycznej bieżącej wartości (c) kontekstu powiązanej z jedną lub większą liczbą wartości widmowych, które mają być zdekodowane i powiązanej z bieżącą czasową częścią zawartości audio, tak, że dla uzyskania numerycznej bieżącej wartości (c) kontekstu jest uwzględniane otoczenie zarówno czasowo sąsiednich uprzednio zdekodowanych wartości widmowych poprzedniej części czasowej i częstotliwościowo sąsiednich uprzednio zdekodowanych wartości widmowych bieżącej czasowej części. 13. Audio decoder according to one of the claims 1 to 12, wherein the arithmetic decoder is configured to store a set of context subarea values, each of these context subarea values being a sum value or a limited value of the sum of absolute values of many previously decoded spectral values, for a given temporal portion of audio information and to use the value of the context subarea to obtain the numerical current value (c) of the context to decode one or more spectral values of the temporal portion of audio information following a given temporal portion of audio information, leaving individual previously decoded spectral values for a given the temporal portion of the audio information not included when acquiring the numeric current value (c) of the context. 13. Dekoder audio według jednego z zastrz. 1 do 12, w którym dekoder arytmetyczny jest skonfigurowany do przechowywania zbioru wartości podobszaru kontekstu, przy czym każda z tych wartości podobszaru kontekstu jest wartością sumy lub ograniczoną wartością sumy wartości absolutnych wielu uprzednio zdekodowanych wartości widmowych, dla danej czasowej części informacji audio i do użycia wartości podobszaru kontekstu do pozyskiwania numerycznej bieżącej wartości (c) kontekstu do dekodowania jednej lub większej liczby wartości widmowych czasowej części informacji audio, następującej za daną częścią czasową informacji audio, pozostawiając indywidualne uprzednio zdekodowane wartości widmowe dla danej części czasowej informacji audio nieuwzględnione podczas pozyskiwania numerycznej bieżącej wartości (c) kontekstu. 14. Audio decoder according to one of the claims 3. The method of claims 1 to 13, wherein the arithmetic decoder is configured to separately decode the module value and the spectral value sign, and wherein the arithmetic decoder is configured to leave characters of previously decoded spectral values not taken into account when determining the numerical current value (c) of the context for decoding the spectral value that is to be decoded. 14. Dekoder audio według jednego z zastrz. 1 do 13, w którym dekoder arytmetyczny jest skonfigurowany do osobnego dekodowania wartości modułu i znaku wartości widmowej, oraz w którym dekoder arytmetyczny jest skonfigurowany do pozostawiania znaków uprzednio zdekodowanych wartości widmowych nieuwzględnionych podczas wyznaczania numerycznej bieżącej wartości (c) kontekstu do dekodowania wartości widmowej, która ma być zdekodowana. 107 107 15. An audio encoder (100;700) for providing encoded audio information (112;712) based on the audio input information (110;710), the audio encoder comprising: an energy thickening converter (130;720) from the time domain to the frequency domain to providing an audio representation (132;722) in the frequency domain based on the representation (110;710) in the time domain of the input audio information such that the audio representation (132;722) contains a set of spectral values in the frequency domain;15. Koder audio (100;700) do dostarczania zakodowanej informacji audio (112;712) w oparciu o wejściową informację audio (110;710), przy czym koder audio zawiera: zagęszczający energię konwerter (130;720) z dziedziny czasu do dziedziny częstotliwości do dostarczania reprezentacji audio (132;722) w dziedzinie częstotliwości, w oparciu o reprezentację (110;710) w dziedzinie czasu wejściowej informacji audio w taki sposób, że reprezentacja audio (132;722) w dziedzinie częstotliwości zawiera zbiór wartości widmowych;arithmetic encoder (170;730), configured to encode the spectral value (a), or pre-processed versions thereof, using a variable length code word (acod_m, acod_r), the arithmetic encoder being configured to map the spectral value (a) or value (m) most significant bitplan of spectral value (a), per code value (acod_m), wherein the encoded audio information contains a plurality of code words of variable length, wherein the arithmetic encoder is configured to select a mapping rule describing the mapping of one or more spectral values, or the most significant bitplan of one or more spectral values, to the code value depending on the context state (s) described by the numeric current value (c) of the context ;and wherein the arithmetic encoder is configured to determine the numerical current value (c) of the context depending on a plurality of previously coded spectral values, wherein the arithmetic encoder is configured to obtain multiple values of the context subarea (q [0] [i-1], q [ 0] [i], q [0] [i + 1], q [1] [i-1]) describing sub-areas of context based on previously coded spectral values, to store the listed context subarea values and to obtain the numerical current (c) context value associated with one or more spectral values to be encoded, depending on the stored context subarea values q [0] [i-1], q [0] [i], q [0] [i + 1], q [1] [i-1], wherein the arithmetic encoder is configured to calculate the norm of the vector formed by a plurality of pre-coded spectral values (a, b) to obtain one of the listed multiple values of the context subarea as a common value of the context subarea (q [1] [i-1] associated with many previously coded spectral values (a, b), based on which the norm is calculated. arytmetyczny koder (170;730), skonfigurowany do kodowania wartości widmowej (a), lub ich wstępnie przetworzonych wersji, z użyciem słowa kodu (acod_m, acod_r) o zmiennej długości, przy czym koder arytmetyczny jest skonfigurowany do mapowania wartości widmowej (a) lub wartości (m) najbardziej znaczącego bitplanu wartości widmowej (a), na wartość kodu (acod_m), przy czym zakodowana informacja audio zawiera wiele słów kodu o zmiennej długości, przy czym arytmetyczny koder jest skonfigurowany do wyboru zasady mapowania opisującej mapowanie jednej lub większej liczby wartości widmowych, lub najbardziej znaczącego bitplanu jednej lub większej liczby wartości widmowych, na wartość kodu w zależności od stanu kontekstu (s) opisanego przez numeryczną bieżącą wartość (c) kontekstu;oraz przy czym arytmetyczny koder jest skonfigurowany do wyznaczania numerycznej bieżącej wartości (c) kontekstu w zależności od wielu uprzednio zakodowanych wartości widmowych, przy czym arytmetyczny koder jest skonfigurowany do uzyskiwania wielu wartości podobszaru kontekstu (q[0][i-1], q[0][i], q[0][i+1], q[1][i-1]) opisujących podobszary kontekstu w oparciu o uprzednio zakodowane wartości widmowe, do przechowywania wymienionych wartości podobszaru kontekstu i do pozyskiwania numerycznej bieżącej wartości (c) kontekstu powiązanej z jedną lub większą liczbą wartości widmowych które mają być zakodowane, w zależności od przechowywanych wartości podobszaru kontekstu q[0][i-1], q[0][i], q[0][i+1], q[1][i-1], przy czym arytmetyczny koder jest skonfigurowany do obliczania normy wektora utworzonego przez wiele uprzednio zakodowanych wartości widmowych (a,b) dla uzyskania jednej z wymienionych wielu wartości podobszaru kontekstu, jako wspólnej wartości podobszaru kontekstu (q[1][i-1]) powiązanej z wieloma uprzednio zakodowanymi wartościami widmowymi (a,b), w oparciu o które obliczana jest norma. 108 108 16. A method of providing decoded audio information based on encoded audio information, the method comprising: 16. Sposób dostarczania zdekodowanej informacji audio w oparciu o zakodowaną informację audio, przy czym sposób obejmuje: dostarczanie wielu zdekodowanych wartości widmowych w oparciu o arytmetycznie zakodowaną reprezentację wartości widmowych, zawartą w zakodowanej informacji audio;oraz dostarczanie reprezentacji audio w dziedzinie czasu z użyciem zdekodowanych wartości widmowych dla uzyskania zdekodowanej informacji audio;providing a plurality of decoded spectral values based on an arithmetically coded representation of spectral values contained in the encoded audio information;and providing a time domain audio representation using decoded spectral values to obtain decoded audio information;przy czym dostarczanie wielu zdekodowanych wartości widmowych obejmuje wybór zasady mapowania opisującej mapowanie wartości kodu (acod_m, value) arytmetycznie zakodowanej reprezentacji wartości widmowych na kod symbolu (symbol) reprezentujący jedną lub większą liczbę zdekodowanych wartości widmowych lub najbardziej znaczący bitplan jednej lub większej liczby zdekodowanych wartości widmowych w zależności od stanu kontekstu opisanego przez numeryczną bieżącą wartość (c) kontekstu;oraz przy czym numeryczna bieżąca wartość (c) kontekstu jest wyznaczona w zależności od wielu uprzednio zdekodowanych wartości widmowych;wherein providing multiple decoded spectral values includes selecting a mapping rule describing the mapping of code values (acod_m, value) arithmetically coded representation of spectral values to a symbol code (symbol) representing one or more decoded spectral values or the most significant bitplan of one or more decoded spectral values depending on the state of the context described by the numerical current value (c) of the context;and wherein the numerical current value (c) of the context is determined depending on a plurality of previously decoded spectral values;przy czym wiele wartości podobszaru kontekstu (q[0][i-1], q[01[i],q[01[i+11, q[1][i-1]) opisujących podobszary kontekstu jest uzyskanych w oparciu o uprzednio zdekodowane wartości widmowe i zapisanych;where many values of the context sub-area (q [0] [i-1], q [01 [i], q [01 [i + 11, q [1] [i-1]) describing the sub-areas of the context are obtained based on previously decoded spectral and recorded values;przy czym numeryczna bieżąca wartość (c) kontekstu powiązana z jedną lub większą liczbą wartości widmowych, które mają być zdekodowane, jest pozyskana w zależności od przechowywanych wartości podobszaru kontekstu (q[0i[i-1i, q[0i[ii,q[0i[i+1i, q[1i[i-1i);oraz przy czym norma (a+b) wektora utworzonego przez wiele uprzednio zdekodowanych wartości widmowych (a,b) jest obliczana, dla uzyskania jednej z wymienionych wielu wartości podobszaru kontekstu, jako wspólnej wartości podobszaru kontekstu (q[1i[i-1i powiązanej z wieloma uprzednio zdekodowanymi wartościami widmowymi (a,b), w oparciu o które obliczana jest wymieniona norma. wherein the numerical current value (c) of the context associated with one or more spectral values to be decoded is obtained depending on the stored values of the context subarea (q [0i [i-1i, q [0i [ii, q [0i [i + 1i, q [1i [i-1i);and wherein the norm (a + b) of the vector formed by the many previously decoded spectral values (a, b) is calculated to obtain one of the many listed values of the context subarea as a common value of the context subarea (q [1i [i-1i associated with many previously decoded spectral values (a, b), on the basis of which the said norm is calculated. 17. A method of providing coded audio information based on the audio input information, the method comprising: 17. Sposób dostarczania zakodowanej informacji audio w oparciu o wejściową informację audio, przy czym sposób obejmuje: dostarczanie reprezentacji audio w dziedzinie częstotliwości w oparciu o reprezentację w dziedzinie czasu wejściowej informacji audio z użyciem zagęszczającej energię konwersji z dziedziny czasu do dziedziny częstotliwości, tak że reprezentacja audio w dziedzinie częstotliwości zawiera zbiór wartości widmowych;oraz providing a frequency domain audio representation based on a time domain representation of audio input information using energy-thickening time domain to frequency domain conversion, such that the frequency domain audio representation comprises a set of spectral values;and 109 arithmetic coding of the spectral value or its pre-processed version, using a variable length code word, wherein the spectral value or the most significant bitplan value of the spectral value is mapped to the code value;wherein the mapping rule describing the mapping of one or more spectral values or the most significant bitplan of the one or more spectral values to the code value is selected depending on the context state described by the numerical current value (c) of the context;109 arytmetyczne kodowanie wartości widmowej lub jej wstępnie przetworzonej wersji, z użyciem słowa kodu o zmiennej długości, przy czym wartość widmowa lub wartość najbardziej znaczącego bitplanu wartości widmowej jest mapowana na wartość kodu;przy czym zasada mapowania opisująca mapowanie jednej lub większej liczby wartości widmowych lub najbardziej znaczącego bitplanu jednej lub większej liczby wartości widmowych na wartość kodu jest wybrana w zależności od stanu kontekstu opisanego przez numeryczną bieżącą wartość (c) kontekstu;przy czym numeryczna bieżąca wartość (c) kontekstu jest wyznaczana w zależności od wielu uprzednio zakodowanych sąsiednich wartości widmowych;wherein the numerical current value (c) of the context is determined depending on a plurality of previously coded adjacent spectral values;przy czym wiele wartości podobszaru kontekstu (q[0][i-1], q[0][i], q[0][i+1], q[1][i-1]) opisujących podobszary kontekstu jest uzyskanych w oparciu o uprzednio zakodowane i przechowywane wartości widmowe, przy czym numeryczna bieżąca wartość (c) kontekstu powiązana z jedną lub większą liczbą wartości widmowych, które mają być zakodowane, jest pozyskana w zależności od przechowywanych wartości podobszaru kontekstu (q[0][i1], q[0][i], q[0][i+1], q[1][i-1]);oraz przy czym norma wektora utworzonego przez wiele uprzednio zakodowanych wartości widmowych (a,b) jest obliczana dla uzyskania jednej z wymienionych wielu wartości podobszaru kontekstu, jako wspólnej wartości podobszaru kontekstu (q[1][i-1]) powiązanej z wieloma uprzednio zakodowanymi wartościami widmowymi (a,b), w oparciu o które obliczana jest norma;where many values of the context sub-area (q [0] [i-1], q [0] [i], q [0] [i + 1], q [1] [i-1]) describing sub-areas of the context are obtained based on previously coded and stored spectral values, with the numeric current context value (c) associated with one or more spectral values to be encoded being derived depending on the stored values of the context subarea (q [0] [i1] , q [0] [i], q [0] [i + 1], q [1] [i-1]);and wherein the norm of the vector formed by the many previously encoded spectral values (a, b) is calculated to obtain one of the many listed values of the context sub-area as the common value of the context sub-area (q [1] [i-1] associated with the many previously coded spectral values (a, b), based on which the norm is calculated;przy czym zakodowana informacja audio zawiera wiele słów kodu o zmiennej długości. wherein the encoded audio information comprises a plurality of code words of variable length. 18. A computer program for carrying out the method defined in claim 16 or in claim 17 when a computer program is running on the computer. 18. Program komputerowy do realizacji sposobu określonego w zastrz. 16, albo w zastrz. 17, gdy program komputerowy jest uruchomiony w komputerze. Fraunhofer-Gesellschaft zur Forderung der angewandten Forschung e.V., Niemcy Fraunhofer-Gesellschaft zur Forderung der angewandten Forschung eV, Germany Pełnomocnik: Proxy: 110 110 EP 2 524 372 B1 EP 2 524 372 B1 Z-12989 opcjonalnie: Z-12989 optional: control information input audio information informacja sterująca wejściowa informacja audio 1— * 1 frequency domain audio representation 1—*1 reprezentacja audio w domenie częstotliwości -—> -—> (e.g. sets of spectral values) optionally: (np. zbiory wartości widmowych) opcjonalnie: spectral processing widmowe przetw. final (e.g. końcowe (np. czasowe kształtowanie szumu, predykcja długookresow a, ...) temporal noise shaping, long-term prediction, ...) 190 optional: bit stream payload formatting module 190 opcjonalnie: moduł formatowania ładunku strumienia bitów 112— ^ bit stream (encoded audio information) 112—^ strumień bitów (zakodowana informacja audio) FIG1A Fig1 AUDIO CODER KODER AUDIO 111 111 EP 2 524 372 B1 EP 2 524 372 B1 Z-12989 Z-12989 142 142 152 amrimeiic encoaer arithmetic encoder optional: 152 koder arytmetyczny amrimeiic encoaer opcjona lnie: moduł skalowa nia/kwa ntyzacji scaling / quantization module 182 182 174 174 150 150 AND I 1Θ93 Γ 1Θ93 Γ Si extraction module of the less significant bit lobe Si moduł ekstrakcji mniej znaczącego płata bitowego 176 most significant bit lobe of the spectral value a (m value) or combined most significant bit lobe of many spectral values a, b (m value) 176 najbardziej znaczący płat bitowy wartości widmowej a (wartość m) lub połączony najbardziej znaczący płat bitowy z wielu wartości widmowych a, b (wartość m) 184. 184. module to determine the words of the jftOK 189c code8° the first codeword module selected cumulative frequency table ch moduł wyznaczan ia słowa kodu jftOK 189c ż8° pierwszy moduł wyznaczania słowa kodu wybrana tabela częstotliwości skumulowany ch 188 status information (e.g., numeric current context value 188 informacja stanu (np. numeryczna bieżąca wartość kontekstu 186 186 189d_ zero, jedno lub więcej słów kodu acod_r, zera , jednego lub większej liczby mniej znaczących ’ płatów bitowych (indeks pki) (np. wartość indeksu zasady mapowania) moduł wyboru tabeli częstotliwości skumulowanych (moduł wyboru zasady mapowania) 189d_ zero, one or more words of the acod_r code, zero, one or more minor blocks of bit (pki index) (e.g. mapping rule index value) cumulative frequency table selection module (mapping rule selection module) 172L · from 172L· acod r 172a a 172a a acoi rhythmic code word id_m of the spectral value (and, optionally, one or more escape code words) acod m optional: bit stream payload formatting module acoi rytmetyczne słowo kodu id_m wartości widmowej (i, opcjonalnie, jedno lub więcej słów kodu ucieczki) acod m opcjonalnie: moduł formatowania ładunku strumienia bitów 190 190 170 170 FIG1B FIG1B AUDIO CODER KODER AUDIO 112 112 EP 2 524 372 B1 EP 2 524 372 B1 Z-12989 fU 'c s Z-12989 fU 'cs (AT (U 210 'swap' bits (encoded audio information) 210 stru ' mień ‘ bitów (zakodow ana informacja audio) Ó g TśTS 2Ϊ5 5.Ϊ5 B5 Ee Zi .52 h Ó g TśTS 2Ϊ5 5.Ϊ5 B5 Ee Zi .52 h C ΙΛ .°S C ΙΛ. ° S 230 encoded frequency domain audio representation 230zakodowana reprezentacja audio w domenie częstotliwości 222 for example. 222 np. arithmetically coded spectral data acod_m acod_r (arithmetically coded representation of spectral values arytmetycznie zakodowane dane widmowe acod_m acod_r (arytmetycznie zakodowana reprezentacja wartości widmowych -220 opcjonalnie: -220 optional: informacja resetowania stanu status reset information 224 arithmetic decoder 224 dekoder arytmetyc zny acod m acod i 288' 288' 296234 decode values of the most significant bit lobe short spectral values module for determining the most significant bit lobe optional: 296234 dekoduj wartości najbardziej znaczącego płata bitowego krotki wartości widmowych moduł wyznaczania najbardziej znaczącego płata bitowego opcjonalnie: module for determining the less significant bit plane _ information about the number of less significant bit plates for cumulative frequency table selection module (mapping principle selection module) moduł wyznaczania mniej znaczącego płata bitowego _ informacja liczby mniej znaczących płatów bitowych moduł wyboru tabeli częstotliwości skumulowanyc h (moduł wyboru zasady mapowania) FIG 2A FIG 2A AUDIO DECODER decoded values of one or more minor bit bits spectral values cumulative frequency table / index value mapping rules DEKODER AUDIO zdekodowane wartości jednego lub większej liczby mniej znaczących płatów bitowych krotki wartości widmowych tabela częstotliwości skumulowanyc h/wartość indeksu zasady mapowania 297 status index (or status value or context value) 297 indeks stanu (lub wartość stanu lub wartość kontekstu) 113 113 EP 2 524 372 B1 EP 2 524 372 B1 Z-12989 Z-12989 114 114 EP 2 524 372 B1 EP 2 524 372 B1 Z-12989 Z-12989 310 · vaFuas_decode 0 (' 310· vaFuas_decode 0 ( ' - + c = a'i'h_map_contexi (N. ariih_reset_Flag): -+ c= a'i‘h_map_contexi(N. ariih_reset_Flag): .o en ro .o en ro -ABOUT -O CM co CM co 312-t tor (i = 1J;i-clg / 2;i ++) {/ * decode MSB * / c = ariihjgct_corttexl (c, i, N);tor flev = esc_nb = O ;;) {μ ki = arlflijjBtjAic and esc_nb << 17) cumjroq = labie startjposition (pki) ctl = tablejengłi (pki);m - arith decode ();312-t tor (i=1J;i-clg/2;i++) { /*dekodowanie MSB*/ c = ariihjgct_corttexl (c,i,N);tor flev=esc_nb=O;;) { μ ki = arlflijjBtjAic i esc_nb<<17) cumjroq = labie startjposition (pki) ctl = tablejengłi (pki);m - arith decode ();ii ( m i= AfflTHJSCAFE) break: ii (mi = AfflTHJSCAFE) break: Iftif + 1;Iftif + 1;if ((ew_nt) = lev)> 7) esc fih = 7;if ((ew_nt)=lev)>7) esc fih=7;use from 1 to 20 bits, acod bits m użyj od 1 do 20 bitów, bitów acod m 312cf 312cf 312d < 312d< PH PH Ό Ό CM CM CO WHAT 313315r 313315r 314< 314< } b = m >> 2 a - n- (ti 0) break;} b = m>>2 a - n-(ti0) break;/ * LSB decoding * / for (l-lw;l> 0;! -) {cymjreq = ar itti_ęf_r, cf i = 4i r - arith decode ();a = [a 1 | ((S.1);/*dekodowanie LSB*/ for (l-lw;l>0;!-) { cymjreq = ar itti_ęf_r, cf i = 4i r - arith decode ();a=[a|((S.1);> > x_ac_dec (2'i] = a;k2ac_deci2 * i + i} = b;x_ac_dec(2‘i] = a;k2ac_deci2*i+i} = b;"Aritfi_Lip <Jatecontertti.ab);„ aritfi_Lip<Jatecontertti.a.b);} ' ' arith fi nisti (x_ac_dec,',N);} '' arith fi nisti (x_ac_dec, ', N);/ * decoding characters * / for fi = 0;i <g;li + J {if (x_ae_dec [i] 1 = 0) ($ = read bitslrean;/*dekodowanie znaków*/ for fi=0;i<lg;li+J { if (x_ae_dec[i] 1=0)( $ = read bitslrean;if (s- = i) {x_ac dec [i] L= -1;} } if (s- = i) {x_ac dec[i] ł= -1;} } Ϊ Ϊ FIG 3 FIG 3 115 115 EP 2 524 372 B1 EP 2 524 372 B1 Z-12989 Z-12989 CONTEXT FOR CALCULATING THE STATUS frequency KONTEKST DLA OBLICZANIA STANU częstotliwość 116 116 EP 2 524 372 B1 EP 2 524 372 B1 Z-12989 / * input variables * / Z-12989 /*zmienne wejściowe*/ N / * current window length * / ari_reset_flag / * arithmetic encoder reset flag * / / * global variables * / previous_N / * previous window length * / N /*długość bieżącego okna*/ ari_reset_flag /*flaga resetowania arytmetycznego kodera*/ /*zmienne globalne*/ previous_N /*długość poprzedniego okna*/ 500a ^ 500a^ 5Q0b < 5Q0b< c = 3rith_map_cortexKN, arith_reset_flag) {"if (arith_reset flag) {for (j = Q;j <N / 4;j ++) {q [O] Ij] = O;c = 3rith_map_cortexKN,arith_reset_flag) { " if (arith_reset flag) { for (j=Q;j<N/4;j++){ q[O]Ij]=O;} } eJse { ratio = ((float)previous_N) / {(floal)N);for (j“0;j<N/4;j++) { k = (int) «floaij j * rafio);}} eJse {ratio = ((float) previous_N) / {(floal) N);for (j '0;j <N / 4;j ++) {k = (int) «floaij j * rafio);Q [O] [J] = q [1J [k];Q[O][J] =q[1J[k];} } } } previous_N * = N;previous_N*=N;return (q (0] [0] <<12);return(q(0] [0] < < 12);FIG 5A FIG 5A 117 117 EP 2 524 372 B1 EP 2 524 372 B1 Z-12989 / * input variables * / Z-12989 /*zmienne wejściowe*/ Ig / * number of spectral coefficients to be decoded in the frame * / ari_reset_flag / * encoder arithmetic reset flag * / / * global values * / previous_lg / * previous number of spectral lines of the previous frame * / c = arith map_context (Ig.arith reset flag) { 'v = w = 0 if (arith reset flag) {for {j-0;j <10/2;j ++) {q [0] [v + +] = 0;Ig /*liczba współczynników widmowych do zdekodowania w ramce*/ ari_reset_flag /*flaga resetowania arytmetycznego kodera */ /*wartości globalne*/ previous_lg/*poprzednia liczba linii widmowych poprzedniej ramki*/ c=arith map_context (Ig.arith reset flag) { ’ v=w=0 if(arith reset flag) { for{j-0;j<l0/2;j++){ q[0][v+ +]=0;} else {ratio = ((float) previous_lg) / ((float) lg);for (j = 0;j <1g / 2;j + +) {k = (ini) ((float)) ((j) * ratio);q [0] [v + +] = qs (w + k];} else{ ratio= ((float)previous_lg)/((float)lg);for(j=0;j<lg/2;j+ + ){ k = (ini) ((float)) ((j)*ratio);q [0] [v+ + ] = qs(w+k];} } } } previous_Lg = lg;previous_Lg=lg;retum (q [0] [0] << 12);retum(q[0][0]<<12);} } FIG 5B FIG 5B 118 118 EP 2 524 372 B1 EP 2 524 372 B1 Z-12989 / * input variables * / c / * old state context * / and / * 2-fold index to be decoded in the vector * / N / * window length * / / * output values * / c / * updated context * / c = antti_qei_context (c, ifN) ( Z-12989 /*zmienne wejściowe*/ c /*stary kontekst stanu*/ i /*indeks 2-krotki do zdekodowania w wektorze */ N /*długośc okna*/ /*wartości wyjściowe*/ c /*uaktualniony stan kontekstu*/ c = antti_qei_context(c,ifN) ( c = C >> 4;c = C>>4;504b ^ -— c = c + (q [0] [i + 1] << 12);504b^-— c = c + (q[0][i+1]<<12);504C1- "c - (c & 0xFFF0);504C1—" c - (c&0xFFF0);if (i> 0) if(i>0) 504dv _ ^^ c = c + (q [1] [i-1J);if 0> 3) {if ((q [1lEi-3] + q [1] [i-23 + q [1] [i-1j) <5) 504e ^ _ ^ "- · relurn (c + 0x10000 );504dv_^^ c = c + (q[1][i-1J);if 0>3){ if((q[1lEi-3] +q[1][i-23 + q[1][i-1j) < 5) 504e^_^"--· relurn(c + 0x10000);} return (c);} return (c);FIG 5C FIG 5C 119 119 EP 2 524 372 B1 EP 2 524 372 B1 Z-12989 / * input variables * / c / * old status context * / and / * 2-fold index to be decoded in the vector * / / * output values * / c / * updated context * / c = arith_get_context (cj) > 4;Z-12989 /*zmienne wejściowe*/ c /*stary kontekst stanu*/ i /*indeks 2-krotki do zdekodowania w wektorze */ /*wartości wyjściowe*/ c /*uaktualniony stan kontekstu*/ c=arith_get_context(cj) >4;c = {c) + (q [O] f + 1] <<12);c = {c) + (q[O]fi + 1] < <12);C = (c & OxFFFO) + (q [1 | [i-1J);C=(c&OxFFFO) + (q[1|[i-1J);if (i> 3) (iWl] li-3] + q [1] | i-2] + q [1] [i-1]] <5) return {c-ł-0x10000),} if(i > 3) ( iWl]li-3] + q[1]|i-2] + q[1][i-1]]<5) return{c-ł-0x10000), } retum (c);retum(c);} } FIG 5D FIG 5D 120 120 EP 2 524 372 B1 EP 2 524 372 B1 Z-12989 Z-12989 506a 506a FROM Z 506b < 506b< / * input variables * / c / * state context * / / * output values * / pki / * probability model index * / /*zmienne wejściowe*/ c /* kontekst stanu*/ /*wartości wyjściowe*/ pki /*indeks modelu prawdopodobieństwa*/ 506b < 506ba< pki = arith gel pfc (c) ΐ 'min = -1;pki = arith gel pfc(c) ΐ ' min = -1;= imin;= name;i_max = (sizeof (ar (_lookup_m) Zsizeof (ari while ((i_max-imin)> 1) {fi = i_min + ((i_max-i_min) / 2), j = ari_ha $ h_m [r];if (c > 8)} i_max = i;else if (c> (j >> 8)) i_mlrt = i;i_max = (sizeof (ar(_lookup_m) Zsizeof(ari while ((i_max-imin) >1) { f i = i_min+((i_max-i_min) /2), j = ari_ha$h_m[r];if (c >8)} i_max = i;else if (c>(j>>8)) i_mlrt=i;V else return (j & OxFF);V else return (j&OxFF);} } 506c- * return ari Jo ransom m [i max];506c-* return ari Jo okup m[i max];} ' } ' FIG 5E FIG 5E 121 121 EP 2 524 372 B1 EP 2 524 372 B1 Z-12989 / * input variables * / c / * context of the state * / / * output values * / pki / * probability index index * / / * constants * / i_diff [] = {299,149, 74, 37,18, 9, 4, 2, 1};Z-12989 /*zmienne wejściowe*/ c /* kontekst stanu*/ /*wartości wyjściowe*/ pki /*indeks modelu prawdopodobieństwa*/ /*stałe*/ i_diff[] ={ 299,149, 74, 37,18, 9, 4, 2, 1};508b 5Q3ba 508b 5Q3ba V pka —arith_get_pk (c) {i_min = 0;s = c << 8;V pka —arith_get_pk(c) { i_min=0;s=c<<8;for (k = O;k <9;k ++) { r i = i_mrn + i_diff [k];for(k=O;k<9;k++) { r i = i_mrn+i_diff[k];ari_hash_m j [i];j-ari_hash_m[i];and «s>]) {" i«s>]){ " i_jnin = i -h 1;i_jnin=i -h 1;} j = arihash_m [imtn] if (s> j) relum (arijookbp_m [i min + 1));else if (c > 8)) return (and r o oo buy m [i_min3>;else return (j & OxFF);} j=arihash_m[imtn] if(s>j) relum(arijookbp_m[i min+1));else if(c >8)) return (a rił o o kup m[i_min3>;else return(j&OxFF);} } FIG 5F FIG 5F 122 122 EP 2 524 372 B1 Z * 12989 / * auxiliary functions * / bool arith_flrst_symbol (void);EP 2 524 372 B1 Z-12989 /*funkcje pomocnicze*/ bool arith_flrst_symbol(void);/ * return TRUE if this is the first symbol in the sequence, otherwise return FALSE * / /*zwróć PRAWDA jeśli jest to pierwszy symbol sekwencji, w innym wypadku zwróć FAŁSZ*/ UsMorl arith get nexl bit (void);UsMorl arith get nexl bit(void);/ * take the next bit of the stream * / / * global variables * / /*weź następny bit strumienia*/ /*zmienne globalne*/ Iow high vaiue / * input variables * / cum_freq [] / * cumulative frequency table * / cfl;'* length cum_freq [] * / Iow high vaiue /*zmienne wejściowe*/ cum_freq[] /*tabela częstotliwości skumulowanych*/ cfl;‘*długość cum_freq[]*/ Λ Λ 570a <! 570a<! L symbol = arith_decode (cumjregr cfl) {" L symbol = arith_decode(cumjregr cfl) { " If (arfthfirstsymbolO) { value = 0;If (arfthfirstsymbolO) {value = 0;for (i = 1;i ;for(i=1;i;} } Iow = 0;high = 65535;Iow = 0;high = 65535;} rangę = high-low+1;cum =((((int) {va!ue-1ow+1 ))< < 14)-((mt) 1))/range;p = cumjreq-1;} rank = high-low + 1;cum = ((((int) {va! ue-1ow + 1)) <<14) - ((mt) 1)) / range;p = cumjreq-1;- = FIG 5G (1) -=FIG 5G(1) 123 123 EP 2 524 372 B1 EP 2 524 372 B1 Z-12989 Z-12989 124 124 EP 2 524 372 B1 EP 2 524 372 B1 Z-12989 / * auxiliary functions * / bool arilh first symbo! {Void);Z-12989 /*funkcje pomocnicze*/ bool arilh first symbo!{void);/ * return TRUE if this is the first symbol in the sequence, otherwise return FALSE * / /*zwróć PRAWDA jeśli jest to pierwszy symbol sekwencji, w innym wypadku zwróć FAŁSZ*/ Ushort arith_get_next_bit (void);Ushort arith_get_next_bit(void);/ * take the next bit of the stream * / / * global variables * / /*weź następny bit strumienia*/ /*zmienne globalne*/ Iow high value / * input variables * / cum_freq [] / * cumulative frequency table * / cfl;'* length cum_freq [] * / symbol = arHh_decode (curri _freq, cl) { Iow high value /*zmienne wejściowe*/ cum_freq[] /*tabela częstotliwości skumulowanych*/ cfl;‘*długość cum_freq[]*/ symbol = arHh_decode(curri _freq, cl) { If (arittijirst_symbol ()) {value = 0;If (arittijirst_symbol()) { value = 0;for (1 = 1;i <= 16;i + +) {value = (vai <<1) | arith_get nest brt ();for(1=1;i<=16;i+ + ) { value = (vai< <1) | arith_get nest brt();} } Iow = 0, high = 65535, rangę = high-low+1;Iow = 0, high = 65535, rank = high-low + 1;cum = ((((int) (value-low + 1)) > 1);cum =((((int) (value-low+1))>1);if ( *q *range > cum) {p=q;dl ++;} cfl>>=1;if (* q * range> cum) {p = q;dl ++;} cfl >> = 1;FIG 5H FIG 5H 125 125 EP 2 524 372 B1 EP 2 524 372 B1 Z-12989 Z-12989 whiie (cfl> 1);whiie (cfl>1);symbol = p-cum_freq + 1;if (symbol) high = Iow + (rank * cum_freq [symbol-1]) >> 14 -1;Iow + = (rank * cum_1req [symbol]) >> 14;for (;;) {if (high -32768) {value - = 32760;symbol = p-cum_freq+1;if (symbol) high = Iow + (rangę* cum_freq [symbol-1 ])>> 14 -1;Iow += (rangę * cum_1req[symbol])>>14;for (;;) { if (high-32768) { value -= 32760;Iow - = 32768;high - = 32768;Iow -= 32768;high -= 32768;} else if (low> = 16384 && high <49152) { value -= 16384;} else if (low> = 16384 && high <49152) {value - = 16384;Iow - 16384;high - = 16384;Iow -- 16384;high -= 16384;} else break;} else break;Iow + = Iow;high 4 = ftigh + 1;Iow + = Iow;high 4 = ftigh+1;value = (value <<1) | anth_get_next_bit ();value = (value< <1) | anth_get_next_bit();} ' return symbol;} 'return symbol;} } FIG 5I FIG 5I 126 126 EP 2 524 372 B1 EP 2 524 372 B1 Z-12989 b = m> >2;Z-12989 b = m>> 2;a = m- (b << 2);a = m-(b<<2);for (j = O;j <lev;j ++) {r = arith_decode (arith_cf_r, 4);a = (a «1) | (Rai);b = (b << 1) | } for (j=O;j<lev;j++) { r = arith_decode(arith_cf_r,4);a = (a«1) | (rai);b = (b<<1) | } FIG 5J x_ac_dec [2 * i] = a x_ac_dec [2 * i + 1J = b;FIG 5J x_ac_dec[2*i] = a x_ac_dec[2*i+1J = b;FIG 5K / * input variables * / a, b / * decoded quantized spectral coefficients without a 2-fold sign * / i / * index of quantized spectral coefficient to be decoded * / arith update_context (i, a, b) and ίΜΙΕΠ = a + b +1;q [1J [i] = OxF;FIG 5K /*zmienne wejściowe*/ a,b /*zdekodowane skwantyzowane współczynniki widmowe bez znaku 2-krotki*/ i /*indeks skwantyzowanego współczynnika widmowego do zdekodowania*/ arith update_context(i, a, b) i ίΜΙΕΠ = a+b+1;q[1J[i] = OxF;} } FIG 5L FIG 5L 127 127 EP 2 524 372 B1 EP 2 524 372 B1 Z-12989 Z-12989 FIG 5M / * input variables * / offset / * number of decoded 2-folds * / FIG 5M /*zmienne wejściowe*/ offset /*liczba zdekodowanych 2-krotek*/ N / * window length * / λ Ί: i '/ * vector of decoded spectral coefficients * / ari lh J inish (xa c_d ec, of f set, N) { N /*długość okna*/ λ Ί: i'/*wektor zdekodowanych współczynników widmowych*/ ari l h J i n i s h (xa c_d e c, of f set, N) { for (i = offsei: i <N / 4;l ++) {x_ac_dec [2 * i] = 0;for(i=offsei :i<N/4;l++) { x_ac_dec[2*i] = 0;X ac dec [2'i + 1] = 0;X ac dec[2’i+1] = 0;q [l] fi] = l;q[l]fi] = l;} } } } FIG 5N b = m >> 2 a = m & (M33;FIG 5N b= m>>2 a = m&(M33;1or (j = Q;J <lev;j ++) {r = arith_decode (arith_cf r, 4);a- (a << 1) | (R & 1);b = (b << 1) 1or(j=Q;J<lev;j++){ r = arith_decode(arith_cf r,4);a-(a<<1) | (r&1);b = (b<<1) FIG 50 / * input variables * / a, b / * decoded quantized spectral coefficients without a 2-fold sign * / i / * index of quantized spectral coefficient to be decoded * / ariih_updale_context () {qdec qdec FIG 50 /*zmienne wejściowe*/ a,b /*zdekodowane, skwantyzowane współczynniki widmowe bez znaku 2-krotki*/ i /*indeks skwantyzowanego współczynnika widmowego do zdekodowania*/ ariih_updale_context (){ qdec qdec 2 * i] = a 2*i]=a 2 * i + 1] = b;2*i+1]=b;if (q | 1] [i]> 0xF) if(q|1][i]>0xF) Q [1] [i] = 0xF: Q[1][i]=0xF: 128 128 EP 2 524 372 B1 EP 2 524 372 B1 Z-12989 / * input variables * / i / * index of quantized spectral coefficient to be decoded * / lg / * number of coefficients in the frame ari th_save_con text (i, I g) {for (;i <N / 4;i ++) {qdec [2 * i] = 0: qdec [2 * i + 1] = 0;Z-12989 /*zmienne wejściowe*/ i /*indeks skwantyzowanego współczynnika widmowego do zdekodowania*/ lg /*liczba współczynników w ramce ari th_save_con text (i, I g) { for(;i<N/4;i++){ qdec[2*i] =0: qdec[2*i+1]=0;q [1] [i] = 1;q[1][i]=1;} if ;QS [j] = l · previr> us_lg = 512;} if;QS[j] = l· previr>us_lg = 512;} else {tor (j = 0;j <512;j ++) {qsDl = q [UD];} else{ tor(j=0;j<512;j ++){ qsDl =q[UD];} previous_fg = M! N (1024Jg);} previous_fg = M!N(1024Jg);FIG 5P FIG 5P 129 129 EP 2 524 372 B1 EP 2 524 372 B1 Z-12989 Z-12989 Definicje definitions a.b m ab m r lev arilh_h35h_mlJ arithJoofcupniO arith_cf _nfpki] M7] arith_cl_r [lsbidx] [] arilh_cf_r [] r lev arilh_h35h_mlJ arithJoofcupniO arith_cf _nfpki]M7] arith_cl_r [lsbidx][] arilh_cf_r [] Q [2] [J x_ace_decF] arith_reset_fiag Q[2][J x_ace_decF] arith_reset_fiag AR1IK_STOP AR1IK_STOP M previous N M previous N 2-fold to be decoded (quantized 2-fold factor, to be decoded 2-krotka do zdekodowania (skwantyzowany współczynnik 2-krotki, do zdekodowania Najbardziej znaczący 2-bitowy płat skwantyzowanego współczynnika widmowego do zdekodowania The most significant 2-bit quantized spectral coefficient to decode Najmniej znaczące płaty bitowe skwantyzowanego współczynnika widmowego do zdekodowania The least significant bit patches of quantized spectral coefficient to decode Poziom pozostałych płatów bitowych. Odpowiada on liczbie płatów bitowych mniej The level of other bit flaps. It corresponds to the number of bit flaps less A hash table that maps context states to the pki index of the cumulative frequency table Tabela skrótów mapująca stany kontekstu na indeks pki tabeli częstotliwości skumulowanych Lookup table mapping a group of context states to the pki index of the cumulative frequency table Tabela przeglądowa mapująca grupę stanów kontekstu na indeks pki tabeli częstotliwości skumulowanych Cumulative frequency models for the most significant 2-bit bit plane and the symbol ARITH_ESCAPE Modele częstotliwości skumulowanych dla najbardziej znaczącego 2-bitowego płata bitowego m i symbolu ARITH_ESCAPE Cumulative frequencies for the symbol r least significant bit lobes Częstotliwości skumulowane dla symbolu r najmniej znaczących płatów bitowych Cumulative frequencies for the symbol r least significant bit lobes Częstotliwości skumulowane dla symbolu r najmniej znaczących płatów bitowych Context elements of the previous and current 2-fold frame Elementy kontekstu 2-krotki poprzedniej i bieżącej ramki Decoded quantized spectral coefficients Zdekodowane skwantyzowane współczynniki widmowe Flag indicating whether the spectral noiseless context must be reset Flaga wskazująca czy widmowy bezszumowy kontekst musi być zresetowany Symbol Stop składający się z kolejno symbolu ARITH_ESCAPE i m=0. Gdy się pojawi, reszta ramki jest dekodowana z wartościami zerowymi The Stop symbol consisting of the following symbol ARITH_ESCAPE and m = 0. When it appears, the rest of the frame is decoded with zero values Długość okna. Dla trybu FD jest ona dedukowana z window_sequence i dla TCX N=2*lg. Window length. For FD mode it is deduced from window_sequence and for TCX N = 2 * lg. Długość poprzedniego okna The length of the previous window 130 130 EP 2 524 372 B1 EP 2 524 372 B1 Z-12989 Z-12989 Definicje definitions 131 131 EP 2 524 372 B1 EP 2 524 372 B1 Z-12989 usac raw data block ¢) { " Z-12989 usac raw data block ¢) {" single_channe1_element ();and / or channel pair element {);single_channe1_element ();and/or channel pair element {);} } FIG 6A FIG 6A Składnia single_channel_eiennent() Syntax single_channel_eiennent () FIG 6B FIG 6B 132 132 EP 2 524 372 B1 EP 2 524 372 B1 Z-12989 Z-12989 Składnia cbannel_pair_element() Syntax cbannel_pair_element () FIG 6C FIG 6C 133 133 EP 2 524 372 B1 EP 2 524 372 B1 Z-12989 <υ ro c Z-12989 <υ ro c About σ O σ about. o. o cj oh Składnia ω Ω syntax CD CD ABOUT O 134 134 EP 2 524 372 B1 EP 2 524 372 B1 Z-12989 Z-12989 Składnia fd channel~stream() Syntax fd channel ~ stream () FIG 6F FIG 6F 135 135 EP 2 524 372 B1 EP 2 524 372 B1 Z-12989 Z-12989 FIG 6G FIG 6G Składnia arith riata() Syntax arith riata () Składnia Syntax Liczba bitów Mnemonika ari I l'_daia(l g. ari th_reset_flag) { " C “ arilh_map contExl(N, arith _reset_f (ag);Number of bits Mnemonic ari I l'_daia (l g. Ari th_reset_flag) {"C" arilh_map contExl (N, arith _reset_f (ag);for (ł = QJ <| g /? J ++) {/ * decoding MSB * / c = anmjga_cofltefl (c;, N);lor flev = esc nh = 0.) i pki = arith jjet_pk {c + esc_nłx <17) acod_m | iki] im] f ii ΐ m! - ARFTIH_ESCAPE) braak. for(ł=QJ<|g/?J++) { /*dekodowanie MSB*/ c = anmjga_cofltefl (c ;,N);lor flev=esc nh =0 .) i pki = arith jjet_pk{c+esc_nłx<17) acod_m|iki]im] f ii ΐ m !- ARFTIH_ESCAPE) braak. Icv 4 = 1;Icv 4 = 1;ii {(ese_rA-lw)> 7) escnb-7;ii {(ese_rA-lw)>7) escnb-7;} 'b = m >> 2;a = m - (b <<2);}’ b = m>>2;a = m - (b< <2);/ * detecting the symbol ARITH_STOP * / im --o as ie *> oj break;/*wykrywanie symbolu ARITH_STOP*/ im --o as ie*>oj break;/ * LSB decoding * / /*dekodowanie LSB*/ IOr (l-1ev-.l> 0;1H acod_r | f | a-0 << 1) | (r & 1). IOr(l-1ev-.l>0;l-H acod_r|f| a-0<<1)|(r&1). b = 0 «1) | ({r >> n6f);b=0«1)|({r>>n6f);} i_ac_decj2 * r = a;x_ac_dec,? * i - 1] = b;} i_ac_decj2*r = a;x_ac_dec,?*i — 1] = b;' ar'th_ijprialE_CDntext(La1b): 'ar'th_ijprialE_CDntext (La1b) Ϊ arilhflriisłi (x _ac_d & sjg N), / * decoding characters * / for (i-fl;idg. I ++) {i {x_ac_dec (i |! = 0} {s;'if (s = = i) {x_ac_dec [ll } " Ϊ arilhflriisłi (x _ac_d&sjg N), /*dekodowanie znaków*/ for (i-fl;idg. i++) { i{x_ac_dec(i| !=0} { s;’ if (s= = i) {x_ac_dec[ll } " Ϊ r=-1;} Ϊ r=-1;} 1..20 1..20 1..2D vlcibf viclbf uimsbf 1..2D vlcibf viclbf uimsbf 136 136 EP 2 524 372 B1 EP 2 524 372 B1 Z-12989 Z-12989 Tabela Table Składnia arith ciata<) Syntax arith ciata <) Składnia Syntax Liczba bitów Mnemonika Number of Mnemonic bits Ariih_daia (ig, ari1h_reset_1lag) {c = arith_msp_coii text (lg, af Ohneset _fi ag J;tar {1 = 0;i + +) 1 / * decode MSB * / c - anmjjajMmer (ci);track (lev = esc_nb = 0 ;,) 1 pki - ariiti_gat_pk (c + esc_ [A 7} esc_nb = 7;ł b = rn >> 2;Ariih_daia(ig, ari1h_reset_1lag){ c=arith_msp_coii text(l g, af Ohneset _fi ag J;tar {1=0;i + +) 1 /*dekodowanie MSB*/ c - anmjjajMmera (c.i);tor (lev=esc_nb=0;,) 1 pki - ariiti_gat_pk(c+esc_[A7} esc_nb=7;ł b=rn>>2;/ * detecting the symbol ARITH_STOP * / i1 (m = = 0 & £ lev ^ 0) break;/*wykrywanie symbolu ARITH_STOP*/ i1(m= =0 &£ lev^0) break;/ * LSB decoding * / lor (= | «v;l> 0;H {acod_r [r] a- [a > i) il & ·;/*dekodowanie LSB*/ lor ( =|«v;l>0;H { acod_r[r] a-[a>i)&il·;} ar r !4i_Lipda te_co nie xl(a, tr. i);} ar r! 4i_Lipda also not what xl (a, tr. i);} aritti_ £ ive_arlth {l.lg);} aritti_£ive_arlth {l.lg);/ * decoding characters * / tor (i — 0;i <lg / 2;ί + +) and if (a! = 0) { /*dekodowanie znaków*/ tor (i—0;i< lg/2;ί + +) i if(a!=0){ Si Si . II (s) a = -a;ll(s) a=-a;} ii {bl = Q} (s;} ii{bl=Q}( s;il (s) b - b: il(s) b--b: 1 "£ O 1„£O 1.,20 1.,20 Vlclbf uimsbt uimsbf Vlclbf uimsbt uimsbf FIG 6H FIG 6H 137 137 EP 2 524 372 B1 EP 2 524 372 B1 Z-12989 Z-12989 Definicje ariRi_dala() arithreseljlag Definitions ariRi_dala () arithreseljlag Data element for decoding data of a spectral noiseless encoder Flag indicating whether the spectral noiseless context must be reset icad jnfpk] [rr] The arithmetic code word necessary to decode the most significant 2-bit slice of quantized spectral coefficient 2-fold Element danych do zdekodowania danych widmowego bezszumowego kodera Flaga wskazująca czy widmowy bezszumowy kontekst musi być resetowany icad jnfpk ][rr ] Arytmetyczne słowo kodu konieczne do dekodowania najbardziej znaczącego 2bitowego płata m skwantyzowanego współczynnika widmowego 2-krotki 9COdmr [lsbrd) (J [] 9COdmr[lsbrd)(J[] a.b ab Arithmetic code word necessary for decoding residual bit lobes r quantized 2-fold spectral coefficient Coded nonzero spectral coefficient Arytmetyczne słowo kodu konieczne do dekodowania resztkowych płatów bitowych r skwantyzowanego współczynnika widmowego 2-krotki Zakodowany znak niezerowego współczynnika widmowego Auxiliary elements Elementy pomocnicze 2-fold corresponding to quantized spectral coefficients The most significant 2-bit 2-fold decode to decode f Least significant 2-bit bit decks to be decoded 2-krotka odpowiadająca skwantyzowanym współczynnikom widmowym Najbardziej znaczący 2-bitowy płat 2-krotki do zdekodowania f Najmniej znaczące płaty bitowe 2-krotki do zdekodowania Liczba skwantyzowanych współczynników do zdekodowania Number of quantized coefficients to be decoded N Długość okna. Dla trybu FD jest ona dedukowana z window_sequence i dla TCX N Window length. For FD mode it is deduced from window_sequence and for TCX N = 2 * lg. N=2*lg. phi arilh goose! pk 0 l5bidx: phi arilh gę! pk 0 l5bidx: lev lev ARlTH_tSCAFE esc nb x_ac_dec (] ariih_map_coniexiO arith_get_con1e) d (} arilh_update_coniexiO ariih_łinish 0 ARlTH_tSCAFE esc nb x_ac_dec(] ariih_map_coniexiO arith_get_con1e)d(} arilh_update_coniexiO ariih_łinish 0 2-fold index to be decoded in the frame Indeks 2-krotek do zdekodowania w ramce Cumulative frequency table index used by the arithmetic decoder to decode m Indeks tabeli częstotliwości skumulowanych użyty przez arytmetyczny dekoder do dekodowania m Funkcja zwracająca indeks pki tabeli częstotliwości skumulowanych konieczny do zdekodowania słowa kodu acod_m[pki][a] This function returns the pki index of the cumulative frequency table necessary to decode the code word acod_m [pki] [a] Context Status Stan kontekstu Indeks tabel częstotliwości skumulowanych użyty przez koder arytmetyczny do dekodowania r Index of cumulative frequency tables used by the arithmetic encoder to decode r Poziom płatów bitowych do zdekodowania poza najbardziej znaczący 2-bitowy płat The level of bit lobes to be decoded beyond the most significant 2-bit lobe An escape symbol indicating additional bit flaps to be decoded beyond the two most significant bit flaps Symbol ucieczki wskazujący dodatkowe płaty bitowe do zdekodowania poza dwa najbardziej znaczące płaty bitowe Liczba symboli ARITH_ESCAPE już zdekodowanych dla bieżącej 2-krotki. Wartość jest ograniczona do 7. Number of symbols ARITH_ESCAPE already decoded for the current 2 times. The value is limited to 7. Element holding the decoded current frame Initializes the contexts needed to decode the current frame Element przetrzymujący zdekodowaną ramkę bieżącą Inicjalizuje konteksty potrzebne do dekodowania ramki bieżącej Calculates the state of the context for decoding m symbols of the current 2-fold Oblicza stan kontekstu do dekodowania m symboli bieżącej 2-krotki Aktualizacje kontekstu dla następnej 2-krotki Context updates for the next 2 times Complete noiseless decoding Zakończ dekodowanie bezszumowe FIG 61 FIG 61 138 138 EP 2 524 372 B1 EP 2 524 372 B1 Z-12989 Z-12989 Definicje ariiłidaiaO arilhjesettlag Definitions of ariiłidaiaO arilhjesettlag Data element to decode spectral noiseless encoder data Flag indicating whether the spectral noiseless context must be reset Element danych do zdekodowania danych widmowego bezszumowego kodera Flaga wskazująca czy widmowy bezszumowy kontekst musi być resetowany An arithmetic code word necessary for decoding the most significant 2-bit flap of quantized 2-fold spectral coefficient Arytmetyczne słowo kodu konieczne do dekodowania najbardziej znaczącego 2bitowego płata m skwantyzowanego współczynnika widmowego 2-krotki -fi-li and LJ Arithmetic code word necessary for decoding residual bit lobes of a quantized spectral coefficient of 2 times -fi-li i LJ Arytmetyczne słowo kodu konieczne do dekodowania resztkowych płatów bitowych r skwantyzowanego współczynnika widmowego 2-krotki Coded sign of a non-zero spectral coefficient Zakodowany znak niezerowego współczynnika widmowego Auxiliary elements ί 2-fold corresponding to quantized spectral coefficients i, Most significant 2-bit 2-fold decode to be decoded 'Least significant 2-bit 2-fold decoder to be decoded j Number of quantized coefficients to be decoded and Index 2-fold to be decoded in the frame j Index cumulative frequency table used by the arithmetic decoder to decode m π. η,, | A function that returns the pki index of the cumulative frequency table necessary to decode the code word acod_m [pki] [a] c Elementy pomocnicze ί 2-krotka odpowiadająca skwantyzowanym współczynnikom widmowym i , Najbardziej znaczący 2-bitowy płat 2-krotki do zdekodowania ' Najmniej znaczący płat bitowy 2-krotki do zdekodowania j Liczba skwantyzowanych współczynników do zdekodowania i Indeks 2-krotki do zdekodowania w ramce j Indeks tabeli częstotliwości skumulowanych użyty przez arytmetyczny dekoder do dekodowania m π. η, , | Funkcja zwracająca indeks pki tabeli częstotliwości skumulowanych konieczny do zdekodowania słowa kodu acod_m[pki][a] c Lion lew ARTTH_ESCAPE esc no ARTTH_ESCAPE esc no Context Status Stan kontekstu Poziom płatów bitowych do zdekodowania poza najbardziej znaczący 2-bitowy płat The level of bit lobes to be decoded beyond the most significant 2-bit lobe An escape symbol indicating additional bit flaps to be decoded beyond the two most significant bit flaps Symbol ucieczki wskazujący dodatkowe płaty bitowe do zdekodowania poza dwa najbardziej znaczące płaty bitowe Liczba symboli ARITH_ESCAPE już zdekodowanych dla bieżącej 2-krotki. Wartość jest ograniczona do 7. Number of symbols ARITH_ESCAPE already decoded for the current 2 times. The value is limited to 7. »Ith_ ™ p_COftlesdO as i th_g et_coritexl () »ith_™p_COftlesdO as i th_g et_coritexl() Inicjalizuje konteksty potrzebne do dekodowania ramki bieżącej Oblicza stan kontekstu do dekodowania m symboli bieżącej 2-krotki uli i- ::i i·: Aktualizacje kontekstu dla następnej 2-krotki Initializes the contexts needed for decoding the current frame. Calculates the context status for decoding m symbols of the current 2-hives i- :: ii ·: Context updates for the next 2-tuple ..! ih --.- 1. ? n :: i Save context for the next frame to be decoded ..!ih --.-1. ?n:: i Zapisz kontekst dla następnej ramki do zdekodowania FIG 6J FIG 6J 139 139 EP 2 524 372 B1 EP 2 524 372 B1 Z-12989 Z-12989 FIG 7 FIG 7 140 140 EP 2 524 372 B1 EP 2 524 372 B1 Z-12989 Z-12989 FIG 8 FIG 8 141 141 EP 2 524 372 B1 EP 2 524 372 B1 142 142 EP 2 524 372 B1 EP 2 524 372 B1 Z-12989 Z-12989 FIG 10 FIG 10 143 143 EP 2 524 372 B1 EP 2 524 372 B1 Z-12989 Z-12989 FIG 11 FIG 11 144 144 EP 2 524 372 B1 EP 2 524 372 B1 Z-12989 Z-12989 FIG 12 FIG 12 145 145 EP 2 524 372 B1 EP 2 524 372 B1 Z-12989 Z-12989 FIG 13 FIG 13 146 146 EP 2 524 372 B1 EP 2 524 372 B1 Z-12989 kontekst obliczania stanu użyty w USAC WD4 czas Z-12989 state calculation context used in USAC WD4 time I I II FIG 14A FIG 14A 4 times already decoded, out of context 4-krotki już zdekodowane, nieuwzględniane dla kontekstu 4 times not yet decoded 4-krotki jeszcze nie zdekodowane 4 decoded ones already, included in the context 4-krotki już zdekodowane, uwzględniane dla kontekstu 4 decodable 4-krotka do zdekodowania 147 147 TABELE UŻYTE W KODOWANIU ARYTMETYCZNYM USAC WD4 TABLES USED FOR USAC WD4 ARYTMETHIC CODING 148 148 EP 2 524 372 B1 EP 2 524 372 B1 Z-12989 kontekst obliczania stanu użyty w proponowanym sposobie częstotliwość czas Z-12989 state calculation context used in the proposed method time frequency FIG 15A FIG 15A 149 149 EP 2 524 372 B1 EP 2 524 372 B1 Z-12989 Z-12989 □ About □O LO LO O u_ Oh TABALE UŻYTE W PROPONOWANYM SPOSOBIE KODOWANIA TABLES USED IN THE PROPOSED CODING METHOD 150 150 EP 2 524 372 B1 EP 2 524 372 B1 Z-12989 Z-12989 Demand for ROM, noiseless coding method proposed and according to WD4 Zapotrzebowanie na ROM, bezszumowy sposób kodowania proponowany i wg WD4 FIG 16A FIG 16A 151 151 EP 2 524 372 B1 EP 2 524 372 B1 Z-12989 Z-12989 Całkowite zapotrzebowanie na ROM dekodera USAC, WD4 i niniejsza propozycja The total demand for the decoder ROM USAC, WD4 and this proposal FIG 16B FIG 16B 152 152 EP 2 524 372 B1 EP 2 524 372 B1 Z-12989 Z-12989 Comparison of WD3 / WD5 noise-free coding with the proposed coding method Porównanie kodowania bezszumowego WD3/WD5 z proponowanym sposobem kodowania ABOUT O LL LL 153 153 EP 2 524 372 B1 EP 2 524 372 B1 Z-12989 ^ 'δ Z-12989 ^'δ 5d 5d c.ro c c.ro c s | c ~ o 0 Ν Π) Ο) <υ ε s| c~o 0 Ν Π) Ο) <υ ε ro !? O_ro sN ro!? O_ro sN ΟΤΡ _ n - ro Q.- ° C retro (U rfiF £ = roi ro fn ro Kii Ol ΓΌ>> ΟΤΡ _ n — ro Q.-° C retro (U rfiF £= roi ro fn ro Kii Ol ΓΌ > > > N ^ ro> s = oo 2 qj 5.5> ŁJ - * Γ'ΙΌ LA O ro o N > N ^ro > s= o o 2 qj 5.5 >ŁJ -*Γ'ΙΌ LA O ro o N FIG 18 FIG 18 154 154 EP 2 524 372 B1 EP 2 524 372 B1 Z-12989 Z-12989 Tabela: minimalne i maksymalne poziomy rezerwuaru bitów dla arytmetycznego kodera WD3 i propozycji Table: minimum and maximum bit reservoir levels for the WD3 arithmetic encoder and proposal FIG 19 FIG 19 Tabela: średnie liczby złożoności dla dekodowania 32 kbit/s strumienia bitów WD3 dla innej wersji kodera arytmetycznego Table: average numbers of complexities for decoding 32 kbit / s bit stream WD3 for another version of the arithmetic encoder FIG 20 FIG 20 155 155 EP 2 524 372 B1 EP 2 524 372 B1 Z-12989 bez znaku, statyczna krótka Γ· ΐΓ·,'-:.ιρ τ'ϋΟϋ -- 0x02,0x01,0x03.0x38.0x36,0x44,0x45.0x05, 0x0 7,0x3 7,0x41.0x08 ,ΟχΟΑ, 0x0 7,0x38,0x44, 0x08,0x14,0χ3Ε, 0x38,0x00,0x14,0κ3Ε, 0x0 C, 0x2 Β ,0x5 F,ΟκΟ F,0x42,0χ3Β, 0x44,0x11,0x36, 0x42,0x41,0x13,0x2 Β.Οχ3Ε,Οχ3Β, OxOC,Ox14, 0χ3Ε,0χ14,0χ2Β,0χ3Ε ,0x15,0x07,0x30,0x11. 0x2 5,0x42,0x41,0x16,0x36,0χ3Α ,0x41,0x25, 0x36, Οχ3Α, Οχ 14.0x3 Ε,0x36,0x42,0x36,0x3Α, Οχ2Β,Οχ3 Ε,0χ42,0χ3&,0χ41,0x17,0x19,0x42. 0x36,0x44,0x19.0x10,0x42,0x38,0x44,0x10, 0x28,0x38,0x12,0χ2Β,0x1 Ε, 0x20,0x42.0x41, 0x22,0x36.0x37,0x41,0x24,0x36,0x42,0x41, 0x26,0x07 Οκ3Α,Οχ2Β,Οχ3Ε,Οχ01,0χ3Ε, 0x27, 0x07,0x37,0x44,0x3F,0x29.0x42,0χ3Β, 0x44. 0χ2Α, 0x0 7,0x37,0x41,0x29,0x07,0x38 ,Όχ2&, Οχ3Ε, 0x36,0x3 Ε, 0x39,0x42,0x34,0x07,0x38. 0x26,0x36,0x42.0x41,0x36,0x42.0x38,0x36, Οχ3Α, 0x02,0x3 Α,0x03,0x38,0x07,0x37,0x07, 9x37,0x39,0x3A,0x3F, 0x3 Β,0x41.0x44,0x57, &x2C ,0x0 7,0x30,0x03,0x31,0x42,0x3C ,0(22, 0x36,0x38, Οχ 2 Α,0x0 7,0x2 7.0x2 Ε,0x07,0x38, 9x44.0x2F, 0x0 7.0x3 7,0x41,0x0 3,0x32,0x4 2, 0x3 Β ,0x4 4,0x32,0x0 7, Οχ 38,0x26,0x0 7, 0x3 Α, 9x26, Οχ 3Ε, Οχ 02,0x2 Α, 0x07,0x3 Ε,0x33,0x0 3, 0x42,0x38,0x44,0x1 Β, 0x36,0x4 2,0x41.0x32, 0x07, Οχ3Β, 0x26,0x3 6,0x4 2, Οχ 3 Β ,0x36,0χ3Ε, 0x39,0x42,0x39,0x42,0x36,0x26,0x07.0x42, 0x41,0x36,0x42,0x37,0x41.0x3 6,0x42,0x3 Β, 0x07,0x3^0x03,0x36.0x07,0x42,0x30.0x39. 0x42 ,Qx3C,0x0 7,0x38,0x07,0x38,0x37,0x38, 0x3C ,0x41,0x44,0x57,0x3Β,0χ3Α ,0x33,0x37, 0x33,0x03,0x02,0x33,0x07,0x30,0x33,0x07. 0χ3Β,Οχ2Α,Οχ34,Οχ42,0χ41.0χ34,0χΟ7.Οχ33, 0χ36,0χ3Ε,0x26,0x07,0x30,0x39.0x42.0x41, 0x33,0x36,0x42,0x30,0x26.0x07.0x42,0x41. 0x07.0x38,0x07,0x3Α, 0x39.0x37,0x39,0x42, 0x38,0x26,0x07,0x37,0x41,0x01,0x07.0x42.. 0x30,0x39.0x42,Οχ3ΒΓ0χ03,0x36,9x03.0x38, Z-12989 unsigned, static short Γ· Ϊ́Γ ·, '- :. ιρ τ'ϋΟϋ - 0x02,0x01,0x03.0x38.0x36.0x44.0x45.0x05, 0x0 7.0x3 7.0x41.0x08, ΟχΟΑ, 0x0 7.0x38.0x44, 0x08 , 0x14,0χ3Ε, 0x38,0x00,0x14,0κ3Ε, 0x0 C, 0x2 Β, 0x5 F, ΟκΟ F, 0x42,0χ3Β, 0x44,0x11,0x36, 0x42,0x41.0x13.0x2 Β.Οχ3Ε, Οχ3Β, OxOC, Ox14, 0χ3Ε, 0χ14.0χ2Β, 0χ3Ε, 0x15.0x07.0x30.0x11. 0x2 5.0x42.0x41.0x16.0x36.0χ3Α, 0x41.0x25, 0x36, Οχ3Α, Οχ 14.0x3 Ε, 0x36.0x42.0x36.0x3Α, Οχ2Β, Οχ3 Ε, 0χ42.0χ3 &, 0χ41.0x17.0x19.0x42 . 0x36.0x44.0x19.0x10.0x42.0x38.0x44.0x10, 0x28.0x38.0x12.0χ2Β, 0x1 Ε, 0x20.0x42.0x41, 0x22.0x36.0x37.0x41.0x24.0x36.0x42.0x41, 0x26 , 0x07 Οκ3Α, Οχ2Β, Οχ3Ε, Οχ01,0χ3Ε, 0x27, 0x07,0x37.0x44,0x3F, 0x29.0x42,0χ3Β, 0x44. 0χ2Α, 0x0 7.0x37.0x41.0x29.0x07.0x38, Όχ2 &, Οχ3Ε, 0x36.0x3 Ε, 0x39.0x42.0x34.0x0.0x38. 0x26.0x36.0x42.0x41.0x36.0x42.0x38.0x36, Οχ3Α, 0x0.0x3 Α, 0x0.0x38.0x0.0x37.0x07, 9x37.0x39.0x3A, 0x3F, 0x3 Β, 0x41.0x4.0x57, & x2C, 0x0 7.0x30.0x0.0x31.0x42.0x3C, 0 (22, 0x36.0x38, Οχ 2 Α, 0x0 7.0x2 7.0x2 Ε, 0x07,0x38, 9x44.0x2F, 0x0 7.0x3 7.0x41, 0x0 3.0x32.0x4 2, 0x3 Β, 0x4 4.0x32.0x0 7, Οχ 38.0x26.0x0 7, 0x3 Α, 9x26, Οχ 3Ε, Οχ 02.0x2 Α, 0x07,0x3 Ε, 0x33,0x0 3 , 0x42,0x38.0x44.0x1 Β, 0x36.0x4 2.0x41.0x32, 0x07, Οχ3Β, 0x26.0x3 6.0x4 2, Οχ 3 Β, 0x36.0χ3Ε, 0x39.0x42.0x39.0x42.0x36.0x26 , 0x07.0x42, 0x41,0x36.0x42.0x37.0x41.0x3 6.0x42.0x3 Β, 0x07,0x3 ^ 0x03,0x36.0x07,0x42.0x30.0x39. 0x42, Qx3C, 0x0 7.0x38.0x0.0x38.0x37.0x38, 0x3C, 0x41.0x44.0x57.0x3Β, 0χ3Α, 0x33.0x37, 0x33.0x0.0x0.0x33.0x0.0x30.0x33.0x07. 0χ3Β, Οχ2Α, Οχ34, Οχ42.0χ41.0χ34.0χΟ7.Οχ33, 0χ36.0χ3Ε, 0x26.0x0.0x30.0x39.0x42.0x41, 0x33.0x36.0x42.0x30.0x26.0x07.0x42.0x41. 0x07.0x38.0x0.0x3Α, 0x39.0x37.0x39.0x42, 0x38.0x26.0x07.0x37.0x41.0x0.0x07.0x42 .. 0x30.0x39.0x42, Οχ3ΒΓ0χ03,0x36,9x03.0x38, FIG 21 (1) FIG 21(1) 156 156 EP 2 524 372 B1 EP 2 524 372 B1 Z-12989 Z-12989 0x39,0x42,0x36,0x39.0x37.0x36,0x39,0x37, 0x30,0x03,0x30,0x3 A. 0x3 6,0x30,0x41,0x44. 0x57,0x03,0x33.0x03,0x26,0x3?,0x34,0x42, 0x41,0x39,0x36,0x34,0x42,0x39,0x37,0x39, 0x4 2,0x3 Β,0x26,0x07,0x3 7,0x41,0xQ7,0x3B, 0x0 7,0x3 A,0x03,0x4 2,0x41,0x39,0x42 r0x3C, 0x39,0x42,0x36,0x07,0x36,0x03.0x38,0x03, 0x38,0x39,0x37.0x36,0x02,0x42,0x36,0x03, 0x3 D, 0x40. Dx3 C, 0x41,0x44,0x57,0x0 3,0x39. 0x3D, 0x03,0x3 B, 0x3 9,0x4 2,0x41.0x39, 0x3A, 0x03,0x36,0x39,0x36,0x02,0x36,0x36.0x02, 0x40,0x36,0x41.0x4 4,0x2 7,0x0 3,0x03,0x03, Ox3D, 0x3F,0x40,0x39,0x41,0x4 4,0x03,0x30„ 0x4 2,0x4 3,0x03,0x36,0x4 4.0x03,0x3 D,0x40, 0x36,0x02,0x30,0x44,0x30,0x43,0x36,0x02. 0x41,0x44,0x3D,0x43,0x36,0x03,0x44,0x3D, 0x43,9x41,0x02,0x44,0x30.0x41.0x44,0x43, 0x41,0x44.0x43,0x41,0x44,0x03,0x3C, 0x44. 0x46,0x47,0x49,0x40,0x50,0x40,0x46.0x00, 0x56,0x06,0x06,0x28,0x03,0x52,0x00,0x10, 0x1 AŁOx56,Ox56,Ox57rOx58,Ox5B,OxOC ,0x26, 0x01,0x01,0x02,0x30,0x1 A, 0x16,0x56,0x5 A, 0x56,0x56,0x00,0x27.0x15,0x06,0x39,0x39, 0x26,0x01.0x02,0x02,0x30.0x57,0x57,0x27, 0x57.0x00,0x39,0x3 9,0x02,0x02,0x0 3,0x£ 7, 0x2 7,0x02,0x2 7,0x0 2,0x02.0x30,0x5 E .0x5 D, 0x5 F ,0x5 E .6x5 D .0x5 D;0x5D ,0x5 D, 0x5 C, 0x56, Ox5F,Ox5D, 0x5 D, 0x5 D, 0x5E ,0x 5 D, 0x5D, 0x5C, 0x5C .0x56,0x56.0x56.0x5 D, 0x5D, Dx5D ,0x5E, 0x5 D ,0x56,0x56,0x5E, 0x56, Ox5E ,0x5 C ,0x56, 0x5 F, 0x5D ,0x5C, 0x5 D, 0x5 F ,0x 5 D, 0x 5D, 0x5F. 0x5E, 0x56,0x50,0x58,0x50,0x56,0x56,0x50. 0 x 5 F, 0x 5 D, 0x 5 F ,0x5 D, 0x5 F, 0 x5 F, 0 x5 F, 0x5 F, 0x5 F, 0x56,0x5 F ,0x5F ,0x4 4,0x5 F, 0x5E ,0x5D, 0x5 D, 0x56,0x5 6,0x5 D,0x56,0x56,0x5C, 0x5 F, 0x5E, 0x5 D,0x5E ,0x5D, 0x5 E ,0x5 D ,0x5E ,0x5 F, 0x56,0x5 F, 0x5E, 0x56,0x5E, 0x56, 0x5E,0x5E, };0x39.0x42.0x36.0x39.0x37.0x36.0x39.0x37, 0x30.0x0.0x30.0x3 A. 0x3 6.0x30.0x41.0x44. 0x57,0x03,0x33.0x03,0x26.0x3?, 0x34.0x42, 0x41.0x39.0x36.0x34.0x42.0x39.0x37.0x39, 0x4 2.0x3 Β, 0x26.0x07.0x3 7.0x41.0xQ7, 0x3B, 0x0 7.0x3 A, 0x03,0x4 2.0x41.0x39.0x42r0x3C, 0x39.0x42.0x36.0x0.0x36.0x03.0x38.0x03, 0x38.0x39.0x37.0x36.0x02.0x42.0x36.0x03, 0x3 D, 0x40. Dx3 C, 0x41.0x44.0x57.0x0 3.0x39. 0x3D, 0x03,0x3 B, 0x3 9.0x4 2.0x41.0x39, 0x3A, 0x03,0x36.0x39.0x36.0x0.0x36.0x36.0x02, 0x40.0x36.0x41.0x4 4.0x2 7.0x0 3, 0x03,0x03, Ox3D, 0x3F, 0x40,0x39.0x41.0x4 4.0x03,0x30 "0x4 2.0x4 3.0x03,0x36.0x4 4.0x03,0x3 D, 0x40, 0x36.0x02,0x30.0x44.0x30, 0x43,0x36,0x02. 0x41.0x44.0x3D, 0x43.0x36.0x0.0x44.0x3D, 0x43.9x41.0x02.0x44.0x30.0x41.0x44.0x43, 0x41.0x44.0x43.0x41.0x44.0x0.0x3C, 0x44. 0x46,0x47.0x49.0x40.0x50.0x40.0x46.0x00, 0x56,0x06,0x06,0x28.0x03,0x52.0x00.0x10, 0x1 ALOx56, Ox56, Ox57rOx58, Ox5B, OxOC, 0x26, 0x01,0x01,0x02,0x30,0x1 A, 0x16,0x56.0x5 A, 0x56.0x56.0x00.0x27.0x15.0x0.0x39.0x39, 0x26.0x01.0x0.0x02, 0x30.0x57.0x57.0x27, 0x57.0x00.0x39.0x3 9.0x0.0x0.0x0 3.0x £ 7, 0x2 7.0x0.0x2 7.0x0 2.0x02.0x30.0x5 E .0x5 D, 0x5 F, 0x5 E .6x5 D .0x5 D;0x5D, 0x5 D, 0x5 C, 0x56, Ox5F, Ox5D, 0x5 D, 0x5 D, 0x5E, 0x 5 D, 0x5D, 0x5C, 0x5C. 0x56,0x56.0x56.0x5 D, 0x5D, Dx5D, 0x5E, 0x5 D, 0x56,0x56,0x5E, 0x56, Ox5E, 0x5 C, 0x56, 0x5 F, 0x5D, 0x5C, 0x5 D, 0x5 F, 0x 5 D, 0x 5D, 0x5F. 0x5E, 0x56,0x50.0x58.0x50.0x56.0x56.0x50. 0 x 5 F, 0x 5 D, 0x 5 F, 0x5 D, 0x5 F, 0 x5 F, 0 x5 F, 0x5 F, 0x5 F, 0x56,0x5 F, 0x5F, 0x4 4.0x5 F, 0x5E, 0x5D, 0x5 D, 0x56,0x5 6.0x5 D, 0x56,0x56,0x5C, 0x5 F, 0x5E, 0x5 D, 0x5E, 0x5D, 0x5 E, 0x5 D, 0x5E, 0x5 F, 0x56,0x5 F, 0x5E, 0x56,0x5E, 0x56, 0x5E, 0x5E,};FIG 21 (2) FIG 21(2) 157 157 EP 2 524 372 B1 Z-12989 bez znak^ statyczna długa ,1 EP 2 524 372 B1 Z-12989 no sign^ Statstotal debtgand ,1 OxO00OOlOOULOx00OO03O2UlL Ox000OO53AUL, Ox000OO73BUL10xOOOO0A4WL, OxOOOD0F44UL, 0x001111O4UL.0M0O111306UL, OxO00OOlOOULOx00OO03O2UlL,Ox000OO53AUL,Ox000OO73BUL10xOOOO0A4WL,OxOOOD0F44UL, 0x001111O4UL.0M0O111306UL, 0x0 011154 2 U L, 0x0 011173BUL,OxOO1 f1F4 4 UL, 0x0011 ?209UL,0x001124 2BUI, 0x0011263EUL, OxO011293CUL,OxO0113105UL 0x0 011154 2 UL, 0x0 011173BUL, OxOO1 f1F4 4 UL, 0x0011? 209UL, 0x001124 2BUI, 0x0011263EUL, OxO011293CUL, OxO0113105UL 0x0011330CUL, Ox0011352BJL. 0x0011363AUL, 0x00113F44U 1.0x0011440C UL, 0x001146 28UL, 0x00114F4110x0011530CUL. 0x0011330CUL,Ox0011352BJL. 0x0011363AUL, 0x00113F44U 1.0x0011440C UL ,0x001146 28UL, 0x00114F4110x0011530CUL. Ox0O1211ODULlOxO01212OEULl, OxOO12l436ULl0xO0l2f637ULl0xOOl2l94lUL, Ox0O122llOUl ·, 0x00122312 JL, 0x00122507UL. Ox0O1211ODULlOxO01212OEULl,OxOO12l436ULl0xO0l2f637ULl0xOOl2l94lUL,Ox0O122llOUl·, 0x00122312 JL, 0x00122507UL. Ox00122738UŁ, Ox00123156ULandOx00123314UL, Ox00123507UL.OxD012373AULOx00123F44UL1 Ox00122738UŁ,Ox00123156ULiOx00123314UL,Ox00123507UL.OxD012373AULOx00123F44UL1 OmM124212UL, Ok0012452BUL, OmM124212UL,Ok0012452BUL, OxOOl24F44LłLOxOO1253l4UL.OxOOl27e20UL (MC13l12WLtOxOO13l323UU (MO131542LJL, 0x0013211 DUL, 0x0013221 fiUL, OxOOl24F44LłLOxOO1253l4UL.OxOOl27e20UL,(MC13l12WLtOxOO13l323UU(MO131542LJL, 0x0013211 DUL, 0x0013221 fiUL, 0x00 i32436UUQx0013273fiUL, 0x0C13311 DUUOxOOl33329ULOx0O133507UL, Ox0O133 «38UL, 0x00134115UL, 0x0013432BUL, 0x00 i32436UUQx0013273fiUL,0x0C13311 DUUOxOOl33329ULOx0O133507UL,Ox0O133«38UL, 0x00134115UL,0x0013432BUL, 0x0013463EUL.0xOO134F44ULOx00l3532BDLl0x0O13FF3GUL, OxOO142307LfL, OxDOl 43126UL, 0x0014 3407LJ L, 0x00143E 44UL, 0x0013463EUL.0xOO134F44ULOx00l3532BDLl0x0O13FF3GUL,OxOO142307LfL,OxDOl 43126UL, 0x0014 3407LJ L, 0x00143E 44UL, 0x0014 430 7 (JL, 0x0014F F3BUL, 0x0015633 EU L, 0x0017 86 3 BUt, 0x00210O5AUL, 0x0021121 BUL, 0x0021 14O7UL, 0xOO21 1637UL, 0x0014 430 7(J L, 0x0014F F3BUL, 0x0015633 EU L,0x0017 86 3 BUt, 0x00210O5AUL ,0x0021121 BUL, 0x0021 14O7UL,0xOO21 1637UL, 0x00211941 UL, 0x002121 1AUL, 0x0021 221 BU L, 0x002124 36UL. 0x00212637UL, Ox0O212941 UL, 0x00213118UL, 0x0021332OUL, 0x00211941 UL, 0x002121 1AUL,0x0021 221 BU L ,0x002124 36UL. 0x00212637UL,Ox0O212941 UL, 0x00213118UL, 0x0021332OUL, 0x00213507UL, 0x00213F44UL, Ox00214314UI .0x00220001 UL, 0x0022121 FUL.0x00221407JJL, 0x0022173GUL.0x0Q222121 UL, 0x00213507UL,0x00213F44UL,Ox00214314UI .0x00220001 UL ,0x0022121 FUL.0x00221407JJL, 0x0022173GUL.0x0Q222121 UL, OxflO222323UL, 0xOO222542UL, OxOO22263BUL, OxO0223l 1 DUL, 0 «00223325UL.Ox00223507UL, Ox00223737UL.Ok00224115UL, OxflO222323UL,0xOO222542UL,OxOO22263BUL,OxO0223l 1 DUL,0«00223325UL.Ox00223507UL, Ox00223737UL.Ok00224115UL, 0x0022 4436UL, 0 «0022463E,JLandOx00224F440Land 0x0022 5436UL, Qx00225F44UL1Ox0022022BUL, 0x0023112OU L, 0x002 31330UL, 0x0022 4436UL,0«0022463E,JLiOx00224F440Li 0x0022 5436UL,Qx00225F44UL1Ox0022022BUL, 0x0023112OU L, 0x002 31330UL, 0x002 31542UIL, 0x0023103 C U L.OxOO 23 212 DUL .0x00 23222&U L, 0x00232 4 0 7 UL,0x00232537UL, 0x00232941 UL, 0x00233115UL, 0x002 31542UIL, 0x0023103 CU L.OxOO 23 212 DUL. 0x00 23222 & U L, 0x00232 4 0 7 UL, 0x00232537UL, 0x00232941 UL, 0x00233115UL, Ox0023332BUL1(Jx002 335 42UL, OxOO23383BUL(OxO0 23412AUL, 0x00 234336UL, 0x00234 642UL, 0x00234F44 UL, Ox00235407UL, Ox0023332BUL1(Jx002 335 42UL,OxOO23383BUL(OxO0 23412AUL, 0x00 234336UL,0x00234 642UL, 0x00234F44 UL,Ox00235407UL, Ox00235F44UL1Ox0023653EUL, Ox0023FF3BUL.Ox0024l307UL.Ołi0024lF44UL, Ox00242336UL1 Ox00235F44UL1Ox0023653EUL,Ox0023FF3BUL.Ox0024l307UL.Ołi0024lF44UL,Ox00242336UL1 0xfl0242542UL, M0242F44UL, 0xfl0242542UL,M0242F44UL, Qx00243234UL, Ox00243407UL, OxM243738UL1Ox00244l26LlL1Cx00244307UL1OxG024463AU_l Qx00243234UL,Ox00243407UL,OxM243738UL1Ox00244l26LlL1Cx00244307UL1OxG024463AU_l 0xD0244F44UL.0x00245442UL. 0xD0244F44UL.0x00245442UL. OxD024SF44UL.Ox00246236ULlOx0024FF3CUL, 0x00252442ULl0xOO252F44UL, 0xOO253303UL, OxO0253F44UL, 0x00254303UL, OxD024SF44UL.Ox00246236ULlOx0024FF3CUL,0x00252442ULl0xOO252F44UL,0xOO253303UL, OxO0253F44UL,0x00254303UL, 0xD0254F44UL, Gx00255303U L, 0x0025 FF41UL, 0x0026 733EUL. 0x0 027FF44 UL.0x002AF203UL, 0xU02FFF44UL, 0x0031115BUL, 0xD0254F44UL, Gx00255303U L,0x0025 FF41UL,0x0026 733EUL. 0x0 027FF44 UL.0x002AF203UL, 0xU02FFF44UL,0x0031115BUL, 0x00311331 UL, 0x0031154210x00312121 UL.QxQQ31222OUL.Qx0O312436U L.OKD0312637U L, 0x00312F 4 4UL, 0x003l3335UL, 0x00311331 UL, 0x0031154210x00312121 UL.QxQQ31222OUL.Qx0O312436U L.OKD0312637U L, 0x00312F 4 4UL,0x003l3335UL, FIG 22 (1) FIG 22(1) 158 158 EP 2 524 372 B1 EP 2 524 372 B1 Z-12989 Z-12989 0x003135O7ULlOxOO313F44UL, 0x003l4332UL, 0x0031 FF3CUL, 0x0032112C UL, 0x00321335ΙΛ, 0x00321542UL, Ox00321B3CUl, 0x003135O7ULlOxOO313F44UL,0x003l4332UL, 0x0031 FF3CUL,0x0032112C UL,0x00321335ΙΛ, 0x00321542UL,Ox00321B3CUl, 0x0032212CULOxOO32233OU "OxW) 322542UL, Ox0O32273BU [.lOx0O32312DUL, 0x00323231 UL, 0x0032 3-10 7 UL, 0x003 23537UL, 0x0032212CULOxOO32233OU„,OxW)322542UL,Ox0O32273BU[.lOx0O32312DUL ,0x00323231 UL, 0x0032 3-10 7 UL, 0x003 23537UL, Qx00323A41UL1OxQO32412AUL10kO0324407UL, 0x0G324642UL.0xOO324F44UL.Ox00325336UL, Qx00323A41UL1OxQO32412AUL10kO0324407UL,0x0G324642UL.0xOO324F44UL.Ox00325336UL, Ox003255O7UL (MW325F44UL, Ox003255O7UL,(MW325F44UL, 0x00326234UL, 0xO032FF3CUL, 0x00331127U L, 0x0033l 332UL, 0x0033154 2 UL, 0x0033212EUL. 0x00 332334UL, 0x00332407 UL. 0x00326234UL,0xO032FF3CUL,0x00331127U L,0x0033l 332UL, 0x0033154 2 UL ,0x0033212EUL. 0x00 332334UL, 0x00332407 UL. Ox00332637UL, 0x00332941 UL.0x00333l;5UL10x00333235UL10xO03334O7UL, 0x00333738UL. 0x0033412AU L, 0x00334 336UL, Ox00332637UL,0x00332941 UL.0x00333l ;5UL10x00333235UL10xO03334O7UL,0x00333738UL. 0x0033412AU L,0x00334 336UL, Ox00334637UL, Ojt00334F44UL, Ox00335234UL.Ox00335407UL.Ox0033573AUL.O "00335F44UL, Ox00334637UL,Ojt00334F44UL,Ox00335234UL.Ox00335407UL.Ox0033573AUL.O«00335F44UL, Ox00336407UL, 0x0O33FF3CUL. Ox00336407UL,0x0O33FF3CUL. 0xO0341307ULOx0O34lF "ULl0x00342307UL.0xO0342542ULOx00342F44ULl0x00343234ULl 0x003 4 34 4 2 UL, 0x0034 373BUL, (M) 0344126UL, Ox00344307UL, ft <00344542ULlOx00344B3BUL.Ox00345126UL, Ox00345307UL. 0xO0341307ULOx0O34lF«ULl0x00342307UL.0xO0342542ULOx00342F44ULl0x00343234ULl 0x003 4 34 4 2 U L ,0x0034 373BUL, (M)0344126UL,Ox00344307UL,ft<00344542ULlOx00344B3BUL.Ox00345126UL,Ox00345307UL. 0xO0345637UL, Ox00345F44UC 0xO0345637UL,Ox00345F44UC 0x0O346442UL0) (0034FF3CUL0x00352442ULl0xO0353139ULl0x003533O3UL.05 (00353637ULl 0x00 3 53F44UL, 0x00354303 UL, 0x0O346442UL0)(0034FF3CUL0x00352442ULl0xO0353139ULl0x003533O3UL.05(00353637ULl 0x00 3 53F44UL, 0x00354303 UL, 0xO0354637ULl0w00354F44ULl0x00355442ULl0x0O356l02UL.0x003563O3UL, 0xO035FF41UL, 0x00366203 UL.Ox003 7733D UL, 0xO0354637ULl0w00354F44ULl0x00355442ULl0x0O356l02UL.0x003563O3UL,0xO035FF41UL, 0x00366203 UL.Ox003 7733D UL, 0x00 39E43AUL, Ox0O3BF641UL, 0x003FFF44UL, 0x00411227UL, 0x00411334UL, 0x0041212CUL. 0x00412407UL, Ox0041312EUL, 0x00 39E43AUL,Ox0O3BF641UL,0x003FFF44UL,0x00411227UL, 0x00411334UL,0x0041212CUL. 0x00412407UL,Ox0041312EUL, 0x00413334UL.OxOQ41 FF3CUL, 0x0042l 12 7 UL, 0x00421334UL, Ox00421542UL, 0x00422127UL, 0x00422 3 3 4 UU 0 «0042 254 2 UL, 0x00413334UL.OxOQ41 FF3CUL,0x0042l 12 7 UL, 0x00421334UL,Ox00421542UL,0x00422127UL, 0x00422 3 3 4 U U 0«0042 254 2 U L, Ox00422F44UL, Ow00423232UL, Ox00423407ULlOxQ042373BUL, Ox00424126UL.Ox00424336ULl 0x00424542UL, 0xO0424F44 UL, Ox00422F44UL,Ow00423232UL,Ox00423407ULlOxQ042373BUL,Ox00424126UL.Ox00424336ULl 0x00424542UL,0xO0424F44 U L, Ox00425407UL10 »0042FF3CUL(0 »0043l 339UL, 0x004 31542 UL r0x004321 33UL, Ox00432407UL, 0x00432 73 BUL, 0x00432F44UL, Ox00425407UL10»0042FF3CUL(0»0043l 339UL,0x004 31542 U L r0x004321 33UL,Ox00432407UL, 0x00432 73 BUL, 0x00432F44UL, 0x004 33234LJL, 0xO04 33 40 7UL, 0x0043363711 L, 0x00433F44 UL. 0x004342 34 UL, 0x0O434442JL, 0x00434736UL. 0x0043512 6UL, 0x004 33234LJL,0xO04 33 40 7UL ,0x0043363711 L,0x00433F44 UL. 0x004342 34 UL ,0x0O434442JL, 0x00434736UL .0x0043512 6UL, OxOO435542UL, OxO0435F44UL, 0x0043644 2ULfOx0O43FF41UL, 0ix00441 3O3UL, 0x00442126UL, 0x0044 2307 UL, 0x0044 2 54 2UL, x004 4 2F4 ^ UL, 0x004 4 3239UL, 0x004 434 42 UL, 0x0044373 BU L, OxO0443F44 UL, 0x00444234 UL, 0x004 444 42UL OxOO435542UL,OxO0435F44UL,0x0043644 2ULfOx0O43FF41UL,0ix00441 3O3UL,0x00442126UL, 0x0044 2307 UL, 0x0044 2 54 2UL, x004 4 2F4^ U L,0x004 4 3239UL,0x004 434 42 UL, 0x0044373 BU L ,OxO0443F44 UL, 0x00444234 U L, 0x004 4 44 42UL,0x00444637U L, 0x0044 4F44 U L, 0x004 4 530 7U L,0x0044 5637 UL .0x004 45 F44U L, 0x004465 37U L,0x0044 FF41U L, foOO452442UL,(M)(MKH4lJL( 0x0044 4F44 UL, 0x004 4 530 7U L, 0x0044 5637 UL. 0x004 45 F44U L, 0x004465 37U L, 0x0044 FF41U L, foOO452442UL, (M) (MKH4lJL( 0x004 53303UL, 0x004 5353 7 U L ,0xV0453F4 4 UL, 0x004 54303 UL ,0x00 4 54633 UL,OxGO454 F44UL, 0x004 55303UL .0x004 55638U L, 0x004 53303UL, 0x004 5353 7 UL, 0xV0453F4 4 UL, 0x004 54303 UL, 0x00 4 54633 UL, OxGO454 F44UL, 0x004 55303UL. 0x004 55638U L, Ox00455F44UL, Ox00456437UL, Ox0045FF4lUL, 0x004 66 2O3UL.OxOO47 & 430UL, 0x0049 FF44UL, Ox004CF74tUL, 0xDO4FFF44UL, Ox00455F44UL,Ox00456437UL,Ox0045FF4lUL,0x004 66 2O3UL.OxOO47&430UL, 0x0049 FF44UL, Ox004CF74tUL,0xDO4FFF44UL, FIG 22 (2) FIG 22(2) 159 159 EP 2 524 372 B1 EP 2 524 372 B1 Z-12989 Z-12989 0x005112 26UL 0x0051212 7 U L ,0x00 512339U L, 0x00 521127U L, 0x00521339 U L .0x0 052212 7 U L. 0x0052233901,0x0052263701. 0x005112 26UL 0x0051212 7 UL, 0x00 512339U L, 0x00 521127U L, 0x00521339 UL. 0x0 052212 7 U L. 0x0052233901.0x0052263701. 0x00523126UL.UxD05234031JL, 0) t00524126lJLJOxOiI524307ULlDxOD5 31 126UL, 0x0 0531307UL, 0x005321 a6UL.Ox00532307lK, 0x00523126UL.UxD05234031JL,0)t00524126lJLJOxOiI524307ULlDxOD5 31 126UL,0x0 0531307UL, 0x005321 a6UL.Ox00532307lK, 0x00 532537UL. QxflO5 32F44 UL, 0x00533239 UL, 0xC0533442UL. 0x005 33 7 3B UL, 0x005 34126UL, 0x00 534 542LSL, 0x005 34 F44UL. 0x00 532537UL. QxflO5 32F44 UL,0x00533239 UL,0xC0533442UL .0x005 33 7 3B UL ,0x005 34126UL, 0x00 534 542LSL, 0x005 34 F44UL. 0x00 535 442UL, 0x005 3FF3CUL, 0xO054 230 3UL, 0x00 542638UL, 0x00 5 431 O2UL, OxO (JS43307UL ΟχΰΟ 5 4 3 e 3 eu L. 0x0 O 543 F 4 4 UL, 0x00 535 442UL, 0x005 3FF3CUL,0xO054 230 3UL, 0x00 542638UL, 0x00 5 431 O2UL,OxO(JS43307UL ΟχΰΟ 5 4 3 e 3 eu L. 0x0 O 543 F 4 4 U L, 0x0054430 7 UL, 0x0054 4 537UL .0x0054 5102 UL ,0xfl0545303UL (MM54 FF41U L,0x005524 3 7U L, 0xOC552F44UL.foD0553437UL, 0x0054430 7 UL, 0x0054 4 537UL. 0x0054 5102 UL, 0xfl0545303UL (MM54 FF41U L, 0x005524 3 7U L, 0xOC552F44UL.foD0553437UL, Qxn0553F44UL1Ox005543D3UL.Ox005H63BUL. (M) 0554F44ULOx00555307UL.O) (00555537UL1 0x00556102UL, 0x0055 6342U L, Qxn0553F44UL1Ox005543D3UL.Ox005H63BUL.(M)0554F44ULOx00555307UL.O)(00555537UL1 0x00556102UL ,0x0055 6342U L, OxOO56e2O3UL, 0x0057 7 342UL ,0x00 59733AUL, 0xQ05CF 53C U L, 0x00 5FFF44 UL. 0x00611239UL, 0x00621127Ul,Dx00623307U!, OxOO56e2O3UL, 0x0057 7 342UL, 0x00 59733AUL, 0xQ05CF 53C UL, 0x00 5FFF44 UL. 0x00611239UL, 0x00621127Ul, Dx00623307U !, 0x00631126 UL, OxOii632442UL, Clx00632F44UL, Clx00633303 UL, 0x00633636 UL, 0x00634102UL, 0x006 34 303UL .0x0 D63FF 41 UL, 0x00631126 UL,OxOii632442UL,Clx00632F44UL,Clx00633303 UL, 0x00633636 UL,0x00634102UL, 0x006 34 303UL .0x0 D63FF 41 UL, Ox00642303UL, OxOD642 "44UL(Ox00643303UL, Ox00643F44UL, Ok00644207UL {] «00655203UL. Ox00642303UL,OxOD642”44UL(Ox00643303UL,Ox00643F44UL,Ok00644207UL,{]«00655203UL. (M) OS65H410m006663031JL( (M)OS65H410m006663031JL( Ox006772O3ULlOxDfl63A53BUL, 0xO06DF841ULl0x006FFF44ULl0x00711239EJL, 0x00721127UL, O (DQ722239UL, MW733239UL, Ox006772O3ULlOxDfl63A53BUL,0xO06DF841ULl0x006FFF44ULl0x00711239EJL, 0x00721127UL, O(DQ722239UL,MW733239UL, 0x00 744437U L, 0x00755203 UL, 0x007 76F4 4 UL, 0x0077 7437UL, OxQ07BF33PU L, 0x007 FFF MUL, ®f OO022239UL.OxOOQ332O3 UL. 0x00 744437U L,0x00755203 UL,0x007 76F4 4 U L,0x0077 7437UL,OxQ07BF33PU L, 0x007 FFF MUL, ®f OO022239UL.OxOOQ332O3 UL. 0x00B54540UL, 0x00ge8l02UL, 0x008Be538ULl0x0OBBF23DUL.0x00eFFF44UL.0x00922239UL 0x0094 333DUL.Ox0O9 B533DU L, 0x00B54540UL,0x00ge8l02UL,0x008Be538ULl0x0OBBF23DUL.0x00eFFF44UL.0x00922239UL 0x0094 333DUL.Ox0O9 B533DU L, QxDO99fl F44 UL ,0x0099930311,0x00 96 F53BUL.IM09FFF44LJL,OxOGA442O3tJL,GKOOA6633FUL, QxOOAA9F44UL,OxOOAAA303LIL, QxDO99fl F44 UL, 0x0099930311,0x00 96 F53BUL.IM09FFF44LJL, OxOGA442O3tJL, GKOOA6633FUL, QxOOAA9F44UL, OxOOAAA303LIL, OxOOADF33DULOxOOAFFF44UL.OxOOe33203UL, OxOOe55440UL, OxOOBBAC44UL, OxOOBBB53BUL, OxOOADF33DULOxOOAFFF44UL.OxOOe33203UL,OxOOe55440UL,OxOOBBAC44UL,OxOOBBB53BUL, OxOOBFFF44UL.OrtOC33203UL, OxOOBFFF44UL.OrtOC33203UL, 0x00C64230 UL, 0x00CC6F44U L, 0xOCCCC3O3UL, 0x00 CFFF44UL.0x00C4423 DUL JteOODOD303UL. OwOODPFF44UL, OmOOE6453CUL, 0x00C64230 UL,0x00CC6F44U L,0xOCCCC3O3UL, 0x00 CFFF44UL.0x00C4423 DUL JteOODOD303UL. OwOODPFF44UL,OmOOE6453CUL, ΟχΟΟΕΕΕ 34 2UL, 0xfl0EFFF44UL, 0x0QF55343U L, OxOOF7FF44UL, OxOOFFEF4 4 UL, OxOOFFF3 3 DUL, OxOOFFF744UL, 0x01000145UL, ΟχΟΟΕΕΕ 34 2UL,0xfl0EFFF44UL,0x0QF55343U L, OxOOF7FF44UL ,OxOOFFEF4 4 UL,OxOOFFF3 3 DUL, OxOOFFF744UL, 0x01000145UL, 0x0101114 7 UL, 0x0111124 BUL, 0x0111224AUL, OxO1113 24DU L, 0x0112114 CU L .0x0112214EUL. 0x01123108UL, 0x01131150UL, 0x0101114 7 UL, 0x0111124 BUL,0x0111224AUL,OxO1113 24DU L, 0x0112114 CU L .0x0112214EUL. 0x01123108UL, 0x01131150UL, 0x01132150UL, 0x01 l3315DULL0x0H41l26UL, 0xDl144l00ULlDx0l 211151 UL.Ox01212153UL, OxO12131O8UL, 0xO1221 154UL 0x01132150UL,0x01 l3315DULł0x0H41l26UL,0xDl144l00ULlDx0l 211151 UL.Ox01212153UL, OxO12131O8UL,0xO1221 154UL 0x01222155UL ,0x01223117UL .0x0122 4 212UL,0x01231215U L, 0x0123 2215UL.0x0l 23321S U L, 0x01241 l26UL,ax0l242239UL, 0x01222155UL, 0x01223117UL .0x0122 4 212UL, 0x01231215U L, 0x0123 2215UL.0x0l 23321S UL, 0x01241 l26UL, ax0l242239UL, 0x0124322BUL, 0x01251103U L, 0x01255100 ULsOxO1311159ULM1312155U1. .0x01313117UL, 0x01315201 UL, Ox0132122CUL, 0x0124322BUL,0x01251103U L ,0x01255100 U LsOxO1311159ULM1312155U1. .0x01313117UL, 0x01315201 UL,Ox0132122CUL, FiG 22 (3) FiG 22(3) 160 160 EP 2 524 372 B1 Z-12989 EP 2 524 372 B1 Z-12989 OxOl32222CUL.OxOt3232lDULOxOl33ll57UL.OxOl332158UL.Qx01333l50lJLl05 (0134ll26LJLl □ m01342127UL, Dj <013J310 [HJL, OxOl32222CUL.OxOt3232lDULOxOl33ll57UL.OxOl332158UL.Qx01333l50lJLl05(0134ll26LJLl □m01342127UL,Dj<013J310[HJL, 0x0134410OUL, 0x01351103U! .0x013551OOUL, 0x013691OOUL, 0x0141115AUL, 0x01421227UL, ftrfłl 422227UL, 0x0U31 226UL, 0x0134410OUL,0x01351103U! .0x013551OOUL ,0x013691OOUL ,0x0141115AUL, 0x01421227UL, ftrfłl 422227UL,0x0U31 226UL, 0x014 3222SU L, 0 * 01441127 IJ L .0x014 4 2121U L .0x014 431OOUL, Owfl 14441OOU L, OxO 14 5310OU L, 0x01511157UL, Ox0153l239ULt 0x014 3222SU L, 0*01441127 IJ L .0x014 4 2121U L .0x014 431OOUL, Owfl 14441OOU L,OxO 14 5310OU L, 0x01511157UL,Ox0153l239ULt 0x015551OOUL, 0x0161115 Z JL0xD 1631239UL ,0x017771OOU L, 0x01 D3310 2UL,=Qx01FFF203UL, 0x0200 D55DI L,0x02000 Θ 5DUL, 0x015551OOUL, 0x0161115 Z JL0xD 1631239UL, 0x017771OOU L, 0x01 D3310 2UL, = Qx01FFF203UL, 0x0200 D55DI L, 0x02000 Θ 5DUL, 0x0200 DF5IFJL, 0xO21I1155DUL, 0x02111F44UL, 0x02112F5F UL, 0x02121 F44UL, 0x02122F44UL. 0x02133F5FUL, 0x0217FF5RJL, 0x0200 DF5IFJL,0xO21I1155DUL, 0x02111F44UL,0x02112F5F UL,0x02121 F44UL,0x02122F44UL. 0x02133F5FUL,0x0217FF5RJL, 0x021 F ^ 44 ^, 0x022'1F44UL, 0x02212F44UL, 0x02 221F4 4 UL, Ox0222245FUL, 0x022 22F 5 FUL, 0x0222 3F5F JL.QxO2232F5 FUL, 0x021 F ^44^,0x022'1F44UL ,0x02212F44UL ,0x02 221F4 4 UL,Ox0222245FUL, 0x022 22F 5 FUL, 0x0222 3F5F JL.QxO2232F5 FUL, 0x0223 3F 5IF JL, 0xD2 24 3F5 FU L, 0x022B F = 5FUL, 0 * 0 22FF F 4 4UL, 0x0232204 4 UL, 0x02 323F5FU and .. QxO2332F 5 F UL, 0x023335 5CUL, 0x0223 3F 5IF JL,0xD2 24 3F5 FU L ,0x022B F=5FUL, 0*0 22FF F 4 4UL, 0x0232204 4 U L, 0x02 323F5FU i.. QxO2332F 5 F UL,0x023335 5CUL, 0x02333F5FUL, 0xO2334F5F:JL 0xO233FF5CUL.OxO2343F5FUL1OxO234FF5CL) L OxO2353F5FUL, 0x02333F5FUL,0xO2334F5F:JL,0xO233FF5CUL.OxO2343F5FUL1OxO234FF5CL)L,OxO2353F5FUL, Ox02364F5FUL, Ox0239e55CUL, Ox02364F5FUL,Ox0239e55CUL, 0x023F F F44UL. DxO243 3F5 FU L. 0x02454 45C U L. ΟΧ024Α9550 UL ,Ox024F F F 4 4U, 0x02574 35 EUL. OxD25AC55CUi,Ox025FFF44UL, 0x023F F F44UL. DxO243 3F5 FU L. 0x02454 45C U L. ΟΧ024Α9550 UL, Ox024F FF 4 4U, 0x02574 35 EUL. OxD25AC55CUi, Ox025FFF44UL, 0x0257 565DUL, 0x02 6FFF44 U L,OxO2 785 55DUL,0xD 27 FFF4 4 UL ,0x02086 75CUL,0xO28CC95 DUL, Ox02BFFF44UL.0x029AS65OUL, 0x0257 565DUL, 0x02 6FFF44 UL, OxO2 785 55DUL, 0xD 27 FFF4 4 UL, 0x02086 75CUL, 0xO28CC95 DUL, Ox02BFFF44UL.0x029AS65OUL, 0x029F - F44UL, DxO2AQA65DU L, OxO2AFFF44U L, OxO 2BAFF5FUL, 0x02 EFFF44 UL, 0x02 CCC45DUL, OxO2CFFF4 4U L, Qx02DF FF44 UL, 0x029F - F44UL, DxO2AQA65DU L, OxO2AFFF44U L,OxO 2BAFF5FUL, 0x02 EFFF44 UL, 0x02 CCC45DUL, OxO2CFFF4 4U L, Qx02DF FF44 U L, OxO2EEE65lDUL1OxO2CFFF44LfL, 0x02F7335EUL, 0xO2FFO044UL, OxO2FFEF44UL, Ox02FFFF44UL, OxO2EEE65lDUL1OxO2CFFF44LfL,0x02F7335EUL,0xO2FFO044UL,OxO2FFEF44UL,Ox02FFFF44UL, Qx0400045EUL, Ox04000F5FUL, Qx0400045EUL,Ox04000F5FUL, 0x04111F5DUL, 0xO4234F5DUL.OxO42DFF5CULO) fl4343r5DUL, 0xO43FF5FULr0KO44FFF5FUL, OxO45ED75CUL, 0xO45FFF5FUL, 0x04111F5DUL,0xO4234F5DUL.OxO42DFF5CULO)fl4343r5DUL,0xO43FF5FULr0KO44FFF5FUL, OxO45ED75CUL,0xO45FFF5FUL, 0x046DFF 5FUL 0x046 FFF5FU L, 0xO47B5C 5CU L, 0 * O 47FFF5 FUL, 0x04 0B435E UL, 0xO46FFF5 FUL, Ox0499FF 5 CU L.0KO4EFFF5FUL, 0x046DFF 5FUL 0x046 FFF5FU L,0xO47B5C 5CU L ,0* O 47FFF5 F U L ,0x04 0B435E UL, 0xO46FFF5 FUL, Ox0499FF 5 C U L.0KO4EFFF5FUL, Ox04F D FE5DULQxO4FFFF5FU l ,0x05000750111 ,OxOSDF FF5 FU L, Ox06FF FF5FUL, 0x08 BFFF5CUL. OxOBFFF F5 CUŁ,0x7FFFFFFF4HJL, };Ox04F D FE5DULQxO4FFFF5FU l, 0x05000750111, OxOSDF FF5 FU L, Ox06FF FF5FUL, 0x08 BFFF5CUL. OxOBFFF F5 CUŁ, 0x7FFFFFFF4HJL,};FIG 22 (4) FIG 22(4) 161 161 EP 2 524 372 B1 EP 2 524 372 B1 Z-12989 Z-12989 2310 2310 2312 bez znaku krótka { 7528,5263,5173?5«2,2636, 825, 674. 653, 511. 281, 21D 195. 173, 130. 105. 2312 no signat short {7528.5263.5173? 5 «2.2636, 825, 674. 653, 511. 281, 21D 195. 173, 130. 105. > 96, / 0 }. > 96, / 0 }. { 10351, 7392 7203,7176,4327,1620,1279.123011006 606 436, 399, 362. 2B8, 233, 212. {10351, 7392 7203,7176,4327,1620,1279.123011006 606 436, 399, 362. 2B8, 233, 212. Λ. ° {12505.9566 8210.9157.6661.3220.2541,2416.2020.16404.1010, 922, 856. 721. Λ.° { 12505,9566 8210.9157,6631,3220.2541,2416,2066.1404,1024, 922, 856. 721. 597, 535, }, { 14710,12600,11956.11601,10114. 7050,5723. 5381,4070, 3724,2870, 2506. 2437, 2122, 1009,1609, 597, 535, }, { 14710,12600,11956.11601,10114. 7050,5723. 5381,4070, 3724,2870, 2506. 2437, 2122, 1009,1609, }. }. { 4185.2623,2608.2007, 939, (09, ff, 04, S3, 23, 14, 13, 11. 8, 5, 4. {4185.2623,2608.2007, 939, (09, ff, 04, S3, 23, 14, 13, 11. 8, 5, 4. }. }. { 7310.4598, 4547. 4544.2079, 354. 264. 259. 204, 90. 42. 38. 34, 25. 14. 11. { 7310.4598, 4547. 4544.2079, 354. 264. 259. 204, 90. 42. 38. 34, 25. 14. 11. ) { 9990, 6785, 6041.6030,4087,1058, 770, 746, 621. 339, 106, 143 131. 104, 67. ) { 9990, 6785, 6041.6030,4087,1058, 770, 746, 621. 339, 106, 143 131. 104, 67. 49, }, { 13601,1’125,13550,10472, 8498, 5030, 3694, 3509, 31 Dl. 2141 1247.1038, 975. 821. 623. 440, λ 49,}, {13601,1'125,13550,10472, 8498, 5030, 3694, 3509, 31 DI. 2141 1247.1038, 975. 821. 623. 440, λ { 5704,3557,3523,3521,1359, 184, 122, 119, 65, 29,-16, 14. 12, 8, 5, 4, }, { 7617,4716,4649,4045,2129, 361, 250. 252, 191, 80 39. 34, 30. 22. 13, 10. { 5704,3557,3523,3521,1359, 184, 122, 119, 65, 29,-16, 14. 12, 8, 5, 4, }, { 7617,4716,4649,4045,2129, 361, 250. 252, 191, 80 39. 34, 30. 22. 13, 10. } { 9553,6223, 6064,6052, 3524, 912, 643, 620. 501, 262. 132, 112, 102, 79, 52, 39, 0 }, { 6423, 5300, 5106,5179, 2629, 539, 375, 362, 276. 119, 61, 53, 46, 33, 21, 17, } { 9553,6223, 6064,6052, 3524, 912, 643, 620. 501, 262. 132, 112, 102, 79, 52, 39, 0 }, { 6423, 5300, 5106,5179, 2629, 539, 375, 362, 276. 119, 61, 53, 46, 33, 21, 17, }. , { 9570.6162, 5952,5936, 3574,1016. 702, 670. 53B. 282, 15Z 129, 117, 90, 63, }. , {9570.6162, 5952,5936, 3574.1016. 702, 670. 53B. 282, 15Z 129, 117, 90, 63, 50. 50. ). ). FIG 23 (1) FIG 23(1) 162 162 EP 2 524 372 B1 EP 2 524 372 B1 Z-12989 { 7355.4678. 4630, 4620, 1834, 252, 190. 187, 124, 38, 21. 19, 16, 10, 6. 5, Z-12989 {7355.4678. 4630, 4620, 1834, 252, 190. 187, 124, 38, 21. 19, 16, 10, 6.5 Ο ) Ο) { 8916.5717,5627, 5622. 2647. 471, 340. 332. 242. 97, 46. 41. 36, 25. 15, 12. { 8916.5717,5627, 5622. 2647. 471, 340. 332. 242. 97, 46. 41. 36, 25. 15, 12. Ο Ο Γ. Γ. { 10639,7394. 7198. 7184, 4273,1169, 832. 803. 643, 327, 167, 143, 130 100, 66, 49, . { 10639,7394. 7198. 7184, 4273,1169, 832. 803. 643, 327, 167, 143, 130 100, 66, 49, . Ο Ο }. }. ί 8036.5132,5045,5040,2207. 350, 250. 243, 167. 56. 31. Ζ8. 23, 15. 10, 8. ί 8036.5132.5045.5040.2207. 350, 250. 243, 167. 56. 31. Ζ8. 23, 15. 10, 8. Ο Ο }. }. { 9663, 6256, 6110,6101,3064. 633, 441. 426. 311, 127. 65. 57, 49, 34, 22, 18. Ο {9663, 6256, 6110.6101.3064. 633, 441. 426. 311, 127. 65. 57, 49, 34, 22, 18. Ο }. }. {11237, 7629.7361,7339. 4460, 1302. 898, 859, 675, 333, 178, 152. 136. 104, 73, 57, {11237, 7629.7361,7339. 4460, 1302. 898, 859, 675, 333, 178, 152. 136. 104, 73, 57, Ο Ο ). ). { 10436, 6930, 6718, 6703. 3735. 902.619, 595, 446, 189, 90, 35, 74. 51, 34. 28. Ο {10436, 6930, 6718, 6703. 3735. 902.619, 595, 446, 189, 90, 35, 74. 51, 34. 28. Ο ). ). { 11670. 7933. 7574, 7541. 4826.1560,1057. 1002, 796, 406. 210, 184. 165. 124. 86, 70. { 11670. 7933. 7574, 7541. 4826.1560,1057. 1002, 796, 406. 210, 184. 165. 124. 86, 70. Ο ), { 10597, 7255, 7057, 7039, 3904.1071, 768. 738, 541. 227, 127, 111, 93, 60, 40, Ο), {10597, 7255, 7057, 7039, 3904.1071, 768. 738, 541. 227, 127, 111, 93, 60, 40, 34, 34, Ο } Ο} { 11298.7892. 7596. 7566.4416,1276, 873, 632, 611, 261, 141, 122, 103. 70. 47, 40. { 11298.7892. 7596. 7566.4416,1276, 873, 632, 611, 261, 141, 122, 103. 70. 47, 40. Ο Ο ). ). ί 6435, 4238.4210,4208,1558, 216, 174, 172, 116, 39, 24. 22. 18. 11. 7. 6, ί 6435, 4238.4210,4208,1558, 216, 174, 172, 116, 39, 24. 22. 18. 11. 7. 6, Ο Ο ). ). { 8744,5744.5671,5667,2636. 496. 375, 368, 273, 113, 53, 52. 45, 32, 19. 15, Ο }, { 10899, 7632. 7457. 7444.4488,1270, 942, 914. 737, 383, 204, 177, 161. 122. 60. 62. {8744,5744.5671,5667,2636. 496. 375, 368, 273, 113, 53, 52. 45, 32, 19. 15, Ο}, {10899, 7632. 7457. 74444848.121270, 942, 914. 737, 383, 204, 177, 161. 122. 60. 62. Ο Ο F1G 23 (2) F1G 23(2) 163 163 EP 2 524 372 B1 EP 2 524 372 B1 Z-12989 { 7929,5176. 5119, 5116. 2169. 307, 230. 226, 155, 51, 28, 25, 21. 13, β. 7, >. Z-12989 {7929,5176. 5119, 5116. 2169. 307, 230. 226, 155, 51, 28, 25, 21. 13, β. 7,>. ( 9520.6304.6204.6199.3044, 585. 424, 415, 3D4, 118, 53, 53, 45, 31. 19, 15. (9520.6304.6204.6199.3044, 585.424, 415, 3D4, 118, 53, 53, 45, 31. 19, 15. }. }. { 11187. 7805.7600, 7586,4554,1292, 928, 896, 703, 342, 170, 153. 130, 103. 66. 52, ΰ {11187. 7805.7600, 7586,4554,1292, 928, 896, 703, 342, 170, 153. 130, 103. 66. 52, ΰ } { 10371,7037.6801,6871,3721, 86D. 613, 596, 440. 176, 88. 77, 67, 46, 28. 23, 0 } } {10371.7037.6801,6871,3721, 86D. 613, 596, 440. 176, 88. 77, 67, 46, 28. 23, 0} { 8562, 5804. 5730.5734.2472. 467, 374. 369. 233, 76, 48. 44. 34. 20, 13, 11. { 8562, 5804. 5730.5734.2472. 467, 374. 369. 233, 76, 48. 44. 34. 20, 13, 11. }, { 10070,6836,6713,6705,3407, 782, 591, 578, 407. 164. 92. 83. 69, 46, 29. 24, 0 } }, { 10070,6836,6713,6705,3407, 782, 591, 578, 407. 164. 92. 83. 69, 46, 29. 24, 0 } { 11694. 6342, 8108, 0009, 4999,1559, 1143,1105, 850, 424, 240, 210, 105. 135, 92. 73. { 11694. 6342, 8108, 0009, 4999,1559, 1143,1105, 850, 424, 240, 210, 105. 135, 92. 73. { 9115,6191,6004,6077,2924. 604 . 455, 445. 304, 109, 64, 50, 47, 29, 20. 17, { 10700, 7434.7256, 7244.3968.1006, 734, 712, 517, 213, 118, 104. 88, 60, 40, { 9115,6191,6004,6077,2924. 604 . 455, 445. 304, 109, 64, 50, 47, 29, 20. 17, { 10700, 7434.7256, 7244.3968.1006, 734, 712, 517, 213, 118, 104. 88, 60, 40, 34, } 34, } { 12716, 6840, 8535. Β507, 5492,1060,1,342. 1289.1007. 505. 289, 249, 221. 163, 115. 94, } {12716, 6840, 8535. Β507, 5492,1060,1,342. 1289.1007. 505. 289, 249, 221. 163, 115. 94,} { 11473, 8005, 7043, 7825.4602.1304, 931, 890, 669, 203, 153, 135. 116, 80, 53. { 11473, 8005, 7043, 7825.4602.1304, 931, 890, 669, 203, 153, 135. 116, 80, 53. 44, 44, }. }. { 12650.9279, 8900, 0072.5924.2160.1539, 1470,1162. 505, 329, 202, 251. 184. 130, 107, { 12650.9279, 8900, 0072.5924.2160.1539, 1470,1162. 505, 329, 202, 251. 184. 130, 107, }. ' f 12597.3310. 6859. ΒΒ06. 6019. 2457.11741.1643.1310, 604, 401, 343. 304. 225, 164, 137, ο }. 'f 12597.3310. 6859. ΒΒ06. 6019. 2457.11741.1643.1310, 604, 401, 343. 304. 225, 164, 137, ο ?. ?. FIG 23 (3) FIG 23(3) 164 164 EP 2 524 372 B1 EP 2 524 372 B1 Z-12989 ( 11509, 8255. 8030, 8012, 4706,1489, 1135. 11U3, 793, 347, 212, 192, 154, 98, 60, Z-12989 (11509, 8255. 8030, 8012, 4706,1489, 1135. 11U3, 793, 347, 212, 192, 154, 98, 60, 59, 59, ABOUT O }. }. { 11946, 6640. 0370, 0344, 5106,1629.1165, 1142, 842, 366. 206. 183. 153, 100, 68, 57, { 11946, 6640. 0370, 0344, 5106,1629.1165, 1142, 842, 366. 206. 183. 153, 100, 68, 57, }. }. { 13008, 9356. 9444, 9397.6468, 2535, 1031, 1745,1384, 700, 407, 852, 310. 224, 160, 132, { 13008, 9356. 9444, 9397.6468, 2535, 1031, 1745,1384, 700, 407, 852, 310. 224, 160, 132, }. }. f 12362,9021, 8603, 0647, 5519.1929. 1405.1342,1ΟΞ4, 401, 280, 245t 210, 146, 104. 89. f 12362.9021, 8603, 0647, 5519.1929. 1405.1342.1ΟΞ4, 401, 280, 245t 210, 146, 104. 89. ABOUT O ł. ł. { 13353,10225,9742, 9678. E908.2945. 2133.2017,1619. 875. 524 , 450. 401. 290. 210, 183, {13353,10225,9742, 9678. E908.2945. 2133.2017,1619. 875. 524, 450. 401. 290. 210, 183, }. }. { 10055.6900.6879, 6072, 3544, 802, 607, 675, 490, 209, 121, 112. 95, 63, 41, 86, O {10055.6900.6879, 6072, 3544, 802, 607, 675, 490, 209, 121, 112. 95, 63, 41, 86, O I, { 10647,7427, 7278, 7270, 3911, 968, 723, 705. 513, 203. 109. 98. 83, 55, 34, 20, 0 I, {10647,7427, 7278, 7270, 3911, 968, 723, 705.513, 203. 109. 98. 83, 55, 34, 20, 0 }. }. { 11221,8027. 7B61.7851,4397,1264, 981. 961. 689, 293, 174, 159, 132, 83, 54, {11221,8027. 7B61.7851,4397,1264, 981. 961. 689, 293, 174, 159, 132, 83, 54, 46, 46, }. }. ( 11700,8429, 82C9. 8192.4025,1451.1079,1049, 767, 327, 185, 167, 140, 92. 61, 52, (11700.8429, 82C9. 8192.4025,1451.1079,1049, 767, 327, 185, 167, 140, 92. 61, 52, ABOUT O }. }. { 12949,9762.9414. 9379. 6351. Z41B. 1786.1717.1351. 686. 398. 345, 301. 216. 152, 125. {12949.9762.9414. 9379. 6351. Z41B. 1786.1717.1351. 686. 398. 345, 301. 216. 152, 125. }, { 12208. B979,0703, 8682. 5437,1780.1303,1261. 955, 422, 231, 204, 175, 120, 77, 63, }, {12208. B979,0703, 8682. 5477,1780,1303,1261. 955, 422, 231, 204, 175, 120, 77, 63, ABOUT O ł. ł. { 13277.10148, 9741. 9698, 68 D7. 28D0, 2047. 1950,1563, 808. 463, 390, 352, 255. 174. 140, {13277.10148, 9741. 9698, 68 D7. 28D0, 2047. 1950,1563, 808. 463, 390, 352, 255. 174. 140, ABOUT ' O ' }. }. FIG 23 (4) FIG 23(4) 165 165 EP 2 524 372 B1 EP 2 524 372 B1 Z-12989 { 12426.9284,8975,0947,5753,2121 1609,1555,1166, 548, 333 , 298, 247, 162. 113. 99, Z-12989 {12426.9284,8975,0947,5753,2121 1,609.1555.1166, 548, 333, 298, 247, 162. 113. 99, 1, { 13492,10473.10042,9906.7177. 3133,2347.2241 1797, 970, 594. 520, 457, 331, 1, { 13492,10473.10042,9906.7177. 3133,2347.2241 1797, 970, 594. 520, 457, 331, 241, 204, 241, 204, }. }. {12407. 9334.9013.8977, 5920, 2276.1706,1642.1284, 642, 392, 343, 299, 211. 153, 132, } {12407. 9334.9013.8977, 5920, 2276.1706,1642.1284, 642, 392, 343, 299, 211. 153, 132, } { 13579.10631,10132,10121, 7466, 3396,2542.2420,1975 1112 , 691. 604 , 542, 4Qfl, {13579.10631,10132,10121, 7466, 3396.22542.2420,1975 1112, 691. 604, 542, 4Qfl, 300. 256, 300. 256, O }, {15415,14163,13591,13335,12111.9β85, 6640, 8070, 7541, 6383.5413, 4919. 4683. 4157, 3662, 33B4. O}, {15415,14163,13591,13335,12111.9.985, 6640, 8070, 7541, 6383.5413, 4919. 4683. 4157, 3662, 33B4. ABOUT O }. }. {15645,14640,14124,13536,12910,11112,9969.9338,0909,7923.7060,6507,6315.5341. {15645,14640,14124,13536,12910,11112,9969.9338,0909,7923.7060,6507,6315.5341. 5365, 5903, 5365, 5903, D }, { 13303,11130,10691,10638, 7807,3900, 3070,2956, 2343,1300, 865, 781, 667, 462, 337. 292, D}, {13303,11130,10691,10638, 7807,3900, 3070,2956, 2,343.1300, 865, 781, 667, 462, 337. 292, ABOUT O }. }. { 15381,14112.13568,13348,12083, 9783, 8595,8105, 7565,6347.540S, 4945, 4704, 4158, 3671 3377, {15381,14112.13568,13348,12083, 9783, 8595.8105, 7565,6347.540S, 4945, 4704, 4158, 3671 3377, }. }. { 15595,14555,14062,13813,12830.1D944, 9820, 9259.6013, 7769,6872, 6351. 6149,5655, 5160, 4798. {15595,14555,14062,13813,12830.1D944, 9820, 9259.6013, 7769,6872, 6351. 6149.5655, 5160, 4798. }. }. { 15555.15124,14719,14487,13812,12440,11517,10975,10628, 9802, 9036, 8493,8312, 7869,7383.6992, { 15555.15124,14719,14487,13812,12440,11517,10975,10628, 9802, 9036, 8493,8312, 7869,7383.6992, O l·. Oh l { 15484.14324,13800,13578,12460,10325, 9149, 8632, 8118,6954, 6030. 5548, 5320, 4797, 4296,3961. { 15484.14324,13800,13578,12460,10325, 9149, 8632, 8118,6954, 6030. 5548, 5320, 4797, 4296,3961. O ł * {15407,14130,13600.13402,12107.9730,8527, 8059. 7475, 6205.5245, 4803, 4563.4022, 3557.3260, 1 FIG 23 {5) O ł* { 15407,14130,13600.13402,12107.9730,8527, 8059. 7475, 6205.5245, 4803, 4563.4022, 3557,3260, 1 FIG 23{5) 166 166 EP 2 524 372 B1 EP 2 524 372 B1 Z-12989 { 15475,14322.13830,13621.12482,10304, 9270, Β779, θ266. 7125. 6200. 5730,5493, 4962 4469,4140. Z-12989 {15475,14322.13830,13621.12482.10304, 9270, Β779, θ266. 7125. 6200. 5730.5493, 4962 4469.4140. }· { 15596,14601,14153,13940,12346.11040,9997.9517. 3048. 7949, 7054. 6560,6325. 5785, 5200,4913. }· { 15596,14601,14153,13940,12346.11040,9997.9517. 3048. 7949, 7054. 6560,6325. 5785, 5200,4913. }. }. ( 15871,15153,14709,14602,13921.12540,11660.111 SB. 10047,10009.9224,0719, 8532. 8078. 7594.7190, b (15871,15153,14709,14602,13921.12540,11660.111 SB. 10047.10009.9224,0719, 8532. 8078. 7594.7190, b { 15474,14312,13843,13669.12397,10171,9109, 0697, 0D63, 6764,5886. 5470,5181,4574, 4090, 3790, {1547414312,13843,13669.12397,10171,9109, 0697, 0D63, 6764,5886. 5470,5181,4574, 4090, 3790, O b Oh b { 15720,14856.14443.14249.13373,11680,10700.10226, 9779.6747, 7881, 7386. 7156, 6611,6097, 5712, }, { 16133,15786.15587,154 7 2,15104.14369,13054.13555.13314,12 73B, 12214,11861,11 701. 11314.10905,10579. {15720,14856.14443.14249.13373,11680,10700.10226, 9779.6747, 7881, 7386. 7156, 6611,6097, 5712,}, {1613315786.155877,154 7 2.11510.14.14369.13054.13555.13314.12 73B, 12214,11861,111 701. 11314.10905.10579. O b Oh b { 2594, 1645. 1633,1631. 535, 108. 92, 89, 64, 34. 27. 25, 21 15, 12, 11. { 2594, 1645. 1633,1631. 535, 108. 92, 89, 64, 34. 27. 25, 21 15, 12, 11. b { 7130, 4521,4444, 4431. 2008, 590, 489, 469, 370, 235, 185, 173, 153. 120, 100. b {7130, 4521,4444, 4431. 2008, 590, 489, 469, 370, 235, 185, 173, 153. 120, 100. 94, 94, ABOUT } O } { 1326, 780, 778. 777, 173. 17. 15, 14, 11. 7, 6, 5. 4, 3. 2, 1, >, { 4974,2032,2814,2812. 945, 102. 70. 76, 56. 26. 16, 15, 13. 9, 6, 5, b {1326, 780, 778. 777, 173. 17. 15, 14, 11. 7, 6, 5. 4, 3.2, 1,>, {4974,2032,28144,2812. 945, 102. 70. 76, 56. 26. 16, 15, 13. 9, 6, 5, b { 3593,2051,2043,2042, 530, 36, 20. 27, 18. 0, 6, 5. 4. 3. 2, 1. { 3593,2051,2043,2042, 530, 36, 20. 27, 18. 0, 6, 5. 4. 3. 2, 1. O }, { 5521,3055,3028,3026,1052, 102, 72, 69. 49, 20. 12. 11, 9, 6, 4, 3, O}, {5521,3055,3028,3026,1052, 102, 72, 69. 49, 20. 12. 11, 9, 6, 4, 3, O b < 4294, 2539, 2520, 2518. 812, 83, 61. 59, 41, 17, 12, 11, 9, 6, 4, 3. O b <4294, 2539, 2520, 2518. 812, 83, 61. 59, 41, 17, 12, 11, 9, 6, 4, 3. }. }. FIG 23 (6) FIG 23(6) 167 167 EP 2 524 372 B1 EP 2 524 372 B1 Z-12989 Z-12989 168 168 EP 2 524 372 B1 EP 2 524 372 B1 Z-12989 { 6049, 464β, 4599,4596.1063. 367, 304, 299, 167, 68, 49. 46, 34, 19, 14. 13, Ο Z-12989 {6049, 464β, 4599,4596.1063. 367, 304, 299, 167, 68, 49. 46, 34, 19, 14. 13, Ο ). ). { 16303.16362,14098,13672,13671,13670.1105β. 104916060, 5456.423D, 3029.3412, 2076. 2494, 2264. {16303.16362,14098,13672,13671,13670.1105β. 104916060, 5456.423D, 3029.3412, 2076. 2494, 2264. Ο Ο }. }. { 16303,16362,14436,14062,14361,14060,11574.11033, 6597, 5905, 4621. 4204, 372.0, 3106,2674,2430, { 16303,16362,14436,14062,14361,14060,11574.11033, 6597, 5905, 4621. 4204, 372.0, 3106,2674,2430, Ο ( 16383,163Β2,14635.14264,14263.14262,11398,11372. 8910.6216. 4935. 4506, 3962, 3287. 2335, 2578, ο Ο (16383,163Β2,14635.14264,14263.14262,11398,11372. 8910.6216. 4935.4506, 3962, 3287. 2335, 2578, ο ( 16383,16362,14851,14330.14379.14378.12610,12032, 9570, 7609, 6543, 6005,5335, 4590, 4112.3325, ( 16383,16362,14851,14330.14379.14378.12610,12032, 9570, 7609, 6543, 6005,5335, 4590, 4112.3325, D } D} ? ? FIG 23 (8) unsigned, short t ari_Cf_r [4] = {(3 <<! 4) / 4, (2 <<14) / 4, (1 << 14) / 4, 0};FIG 23(8) bez znaku, krótka t ari_Cf_r [4] = {(3< <!4)/4,(2< <14)/4,(1 <<14)/4, 0};FIG 24 FIG 24
452 paragraphs in 1 section, as filed
Technical field [0001] Embodiments of the invention relate to an audio decoder for providing decoded audio information based on encoded audio information, an audio encoder for providing encoded audio information based on input audio information, a method of providing decoded audio information based on encoded audio information, a method of providing coded audio information based on audio input information and a computer program.
[0002] Embodiments of the invention relate to improved spectral noiseless coding that can be used in an audio encoder or audio decoder, such as in so-called USAC encoder (unified speech-and-audio coder).
Background of the invention [0003] The background of the invention will be briefly explained below to facilitate the understanding of the invention and its advantages. Over the past decade, great effort has been made in creating opportunities for digital storage and distribution of content with good throughput. One important achievement on this path is the definition of the international standard ISO / IEC 14496-3. Part 3 of this standard deals with the coding and decoding of audio content, and Subpart 4 deals with general audio coding. ISO / IEC 14496-3 Part 3, Subpart 4 defines the concept of coding general audio content. In addition, further improvements have been proposed to improve the quality and / or reduce the required bit rate.
[0004] According to the concept described in the Standard, the time-domain audio signal is converted into a time-frequency domain representation. The transformation from time domain to time-frequency domain is typically accomplished using transformation blocks, which are also referred to as "frames", of time domain samples. It has been found to be advantageous to use tabbed frames that are offset, for example, by half a frame, because the tab allows efficiently avoiding (or at least reducing) artifacts. In addition, it was found that in order to avoid artifacts arising in this processing of time-limited frames, windowing should be implemented.
[0005] By transforming the windowed portion of the time domain audio signal into the time-frequency domain, energy compaction is obtained in many cases, so that some of the spectral values have a clearly larger modulus than many other spectral values. Therefore, in many cases there is a relatively small number of spectral values having a module that is clearly larger than the average module of spectral values. A typical example of transformation from the time domain to the time-frequency domain causing energy concentration is the so-called Modified discrete cosine transformation (MDCT, modifieddiscrete-cosine-transform).
[0006] Spectral values are often scaled and quantized according to the psychoacoustic model in such a way that the quantization errors are comparatively smaller for psychoacoustically more significant spectral values and are comparably higher for psychoacoustic less significant spectral values. Scaled and quantized spectral values are coded to provide their efficient bit-rate representation.
[0007] For example, the use of so-called Huffman coding of quantized spectral coefficients is described in the international standard ISO / IEC 14496-3: 2005 (E), Part 3, Subpart 4.
[0008] However, it has been found that the coding quality of spectral values has a significant impact on the required bit rate. It has also been found that the complexity of the audio decoder, which is often implemented in a portable consumer device, which in this case should be cheap and consume a small amount of energy, depends on the coding used to encode the spectral values.
[0009] In view of this situation, there is a need for a concept for encoding and decoding audio content that provides a better balance between bit rate and resource efficiency.
Summary of the Invention [0010] The embodiment of the invention as defined in claim 1 creates an audio decoder for providing decoded audio information based on the encoded audio information. The audio decoder includes an arithmetic decoder for providing a plurality of decoded spectral values based on an arithmetically coded representation of spectral values contained in the encoded audio information. The audio decoder also includes a frequency domain to time domain converter for providing time domain audio representations using decoded spectral values to obtain decoded audio information. The arithmetic decoder is configured to select a mapping rule that describes the mapping of the code value of the arithmetically coded representation of spectral values to a symbol code (which symbol code describes one or more decoded spectral values, or at least a portion of one or more decoded spectral values depending on the state context, described by the numeric current value of the context. The arithmetic decoder is configured to determine the numerical current context value depending on a number of previously decoded adjacent spectral values. The arithmetic decoder is also configured to obtain multiple context subarea values based on previously decoded spectral values and to store the listed context subarea values. The arithmetic decoder is configured to obtain the numerical current context value associated with one or more spectral values to be decoded (or more precisely, define the context for decoding one or more spectral values to be decoded) based on stored sub-area values context. The arithmetic decoder is configured to calculate a vector norm formed by multiple previously decoded spectral values to obtain one of the many listed values of the context subarea as a common value of the context subarea associated with the many previously decoded spectral values based on which the said norm is calculated.
[0011] The present embodiment is based on the finding that memory-efficient information of the sub-context of the context can be obtained by calculating a vector norm formed by many of the previously decoded spectral values, since the norm of such a vector formed by many of the previously decoded spectral values contains the most significant information. context. By creating a standard, spectral value characters are typically omitted. However, it has been found that the signs of spectral values only have a subordinate effect on the state of the context, if any at all, and for this reason can be omitted without significant sacrifice to the importance of the value of the context sub-area. In addition, it has been found that the creation of a vector norm created by many previously decoded spectral values, which typically entails an averaging effect, allows a reduction in the amount of information, while leading to a context value that reflects the current context situation with sufficient accuracy. In summary, the memory requirements for storing the context in the form of multiple context subarea values can be kept low by storing the context subarea values, which are based on calculating the norm of the vector formed by many previously decoded spectral values (instead of the spectral values themselves).
[0012] In a preferred embodiment, the arithmetic decoder is configured to sum the absolute values of a plurality of previously decoded spectral values that are, preferably but not necessarily, associated with neighboring frequency bins of the frequency domain converter to the time domain and the common time portion of the audio information in to obtain the common value of the context sub-area associated with the aforementioned multiple previously decoded spectral values.
[0013] It has been found that the summation of the absolute values of many previously decoded spectral values, corresponding to the calculation of the norm, is a particularly efficient way of calculating the significant values of the context subarea. It should be noted here that the calculation of the sum of the absolute values of the vector is equal to the calculation of the so-called L-1 norm of the vector. In other words, calculating the sum of absolute values of a vector is an example of calculating a norm.
[0014] In a preferred embodiment, the arithmetic decoder is configured to quantize the norm of previously decoded spectral values that are associated with adjacent frequency bands of the frequency domain to time domain converter and a common time portion of audio information to obtain a common context sub-area value associated with many previously decoded spectral values. Quantization of the norm, for example, may include calculating the norm on a discrete scale (e.g. the sum of absolute integers) as well as limiting the result.
[0015] In a preferred embodiment, the arithmetic decoder is configured to quantize the norm of a plurality of previously decoded spectral values that are, preferably but not necessarily, associated with neighboring frequency bins of the frequency domain to time domain and the common time portion of the audio information to obtaining a common value of the context sub-area associated with many previously decoded spectral values. It has been found that quantizing this standard can help maintain a relatively small amount of information. For example, quantization can help reduce the number of bits required to represent the value of a context subarea and, for this reason, can help provide a numeric current context value with a low number of bits.
[0016] In a preferred embodiment, the arithmetic decoder is configured to sum the absolute values of a plurality of previously decoded spectral values that are encoded using a common code value to obtain a common context subarea value associated with the plurality of previously decoded spectral values. Context accuracy has been found to be particularly high if the common context subarea value is created for such spectral values that are encoded using the common code value. Accordingly, each context subarea value may correspond to a code value, which in turn results in good memory performance when storing the context subarea values.
[0017] In a preferred embodiment, the arithmetic decoder is configured to provide decoded discrete spectral values with a sign to a frequency domain converter to the time domain and to add absolute values corresponding to the decoded signed spectral values in order to obtain a common context sub-area value associated with multiple previously decoded spectral values. It has been found that sometimes, in terms of audio quality, it is advantageous to have signed values as input values for the frequency domain to time domain converter, since this allows phases to be included in the reconstruction of audio content. However, it was also found that omitting phase information (i.e. information about the sign of spectral values) in the context subarea values does not significantly degrade the accuracy of the context status information obtained using the context subarea value, since phase information in most cases is not strongly correlated between different frequency bins.
[0018] In a preferred embodiment, the arithmetic decoder is configured to acquire a limited sum value from the sum of absolute values of previously decoded discrete spectral values (or to obtain a limited norm value from a norm of a vector formed by a plurality of previously decoded discrete spectral values), so that a range of potential values for a limited sum value is less than the range of potential sum values (or so, that the range of potential values for the limited standard value is smaller than the range of potential values of the standard). It has been found that limiting the value of the context subarea allows reducing the number of bits required to store the value of the context subarea. It was also found that a reasonable limitation of the value of the context sub-area does not cause significant information loss, because for spectral values that are greater than a certain threshold value, the context does not change significantly anymore.
[0019] In a preferred embodiment, the arithmetic decoder is configured to obtain the numerical current context value depending on a plurality of context sub-area values associated with different sets of previously decoded spectral values. This concept allows efficient consideration of different contexts for decoding different spectral values (or spectral tuples). By maintaining sufficiently fine granulation of the context subarea value, so that multiple context subarea values are used to obtain a single numeric current context value, it is possible to store significant and universally useful context subarea information from which the actual numerical context value can be obtained shortly before decoding the spectral value (or spectral tuples) to be decoded.
[0020] In a preferred embodiment, the arithmetic decoder is configured to obtain a numerical representation of the current context value, such that the first part of the numerical representation of the current context value is determined by a first sum value or a limited value of the sum of absolute values of many previously decoded spectral values (or , more generally, the first value of the norm or the limited value of the norm) and yes, that the second part of the numerical representation of the current context value is determined by a second value of the sum or a limited value of the sum of absolute values of many previously decoded spectral values (or, more generally, a second value of the norm or a limited value of the norm). It has been found that it is possible to efficiently use the context sub-area value in obtaining the numeric current context value. In particular, it has been found that the values of the context sub-area, calculated as discussed above, are well suited to composing the numeric current value of the context. It has been found that the values of the context sub-area, calculated as discussed above, are well suited for determining the different numerical parts of the numerical representation of the current context value. This results in efficient calculation of the context sub-area as well as efficient acquisition or updating of the numeric current context value.
[0021] In a preferred embodiment, the arithmetic decoder is configured to obtain the numeric current value of the context in such a way that that the first sum or limited value of the sum of absolute values of many previously decoded spectral values (or first norm value or restricted norm value) and the second value of the sum or limited value of the sum of absolute values of many previously decoded spectral values (or second norm value or limited norm value) contain different weights in the current numerical context value. Accordingly, the different distances of the spectral values on which the po values are based context , from one or more spectral values to be decoded on an ongoing basis, may be taken into account. Alternatively, a different relative position between the spectral values on which the context subareas are based and one or more spectral values to be decoded on an ongoing basis may be taken into account by using different numerical weights in the numerical current context value. Also, iterative updating of the numerical current value of the context can be facilitated by such a concept, because the numerical weights of the parts of the numerical representation can be easily changed by applying offset operations.
[0022] In a preferred embodiment, the arithmetic decoder is configured to modify the numerical representation of the previous context value describing the context state associated with one or more previously decoded spectral values depending on the sum or limited value of the sum of absolute values of many previously decoded spectral values (or norm value or limited norm value) to get a numerical representation of the current context value describing the context state associated with one or more spectral values to be decoded. As a result, a particularly efficient numerical update of the current context value can be obtained which avoids the total recalculation of the current numerical context value.
[0023] In a preferred embodiment, the arithmetic decoder is configured to check if the sum of multiple values of the context subarea is less than or equal to a predetermined threshold value of the sum and to selectively numerically modify the current context value depending on the result of the check, wherein each of the context subarea values is a sum value or a limited value of the sum of absolute values associated with a number of previously decoded spectral values (or norm value or limited norm value). Accordingly, the presence of an extended area of relatively small spectral values can be detected, and the detection result can be used in context matching. For example, from the presence of such an extended region of relatively small spectral values, it can be concluded that there is a high probability that the spectral value to be decoded using the numerical current context value is also relatively small. Thanks to this, the context can be adapted in a particularly efficient way.
[0024] In a preferred embodiment, the arithmetic decoder is configured to include multiple context subarea values defined by previously decoded spectral values associated with the previous temporal portion of the audio content, as well as to include at least one context subarea value defined by previously decoded spectral values associated with current time portion of audio content, to obtain the numerical current context value associated with one or more spectral values to be decoded and associated with the current temporal portion of the audio content, such that the surrounding of both the temporally adjacent previously decoded spectral values of the previous temporal portion and the frequency of adjacent previously decoded spectral values the current time portion is included to get the numeric current value of the context. This provides a particularly significant context. Also note that acquiring the context subarea values described above maintains relatively low memory requirements for storing the context subarea values of the previous time portion.
[0025] In a preferred embodiment, the arithmetic decoder is configured to store a set of context subarea values, each of the context subarea values is based on the sum or limited value of the sum of absolute values of many previously decoded spectral values (or more generally, the value of the norm of the vector formed by multiple previously decoded spectral values) for a given temporal portion of the audio information and to use the context sub-area value to obtaining the numeric current context value for decoding one or more time spectral values the portion of the audio information that follows the given temporal portion of the audio information, while leaving individual previously decoded spectral values for the given temporal portion of the audio information omitted when obtaining the numeric current context value. Therefore, the calculation performance of the numeric current context value can be increased. Also, it is no longer necessary to store individual previously decoded spectral values for a longer period of time.
[0026] In a preferred embodiment, the arithmetic decoder is configured to separately decode the module value and the spectral value sign. In this case, the arithmetic decoder is configured to leave the characters of previously decoded spectral values omitted when determining the numeric current context value for decoding the spectral value to be decoded. It has been found that such separate operation of the absolute value and the spectral value sign does not lead to a serious degradation of coding performance, but significantly reduces computational complexity. In addition, it has been found that the calculation of the context sub-area values based on the calculation of the norm of a vector formed by many previously decoded spectral values is well suited for use in connection with such a concept.
[0027] An embodiment of the invention as shown in independent claim 15 creates an audio encoder for providing coded audio information based on the audio input information. The audio encoder includes an energy-thickening time domain to frequency domain converter for providing a frequency domain audio representation based on a time domain representation of the input audio information in such a way that the frequency domain audio representation comprises a set of spectral values. The audio encoder comprises an arithmetic encoder configured to encode a spectral value or pre-processed version thereof, or - equivalent - multiple spectral values, or a preprocessed version thereof, using a variable length code word. The arithmetic encoder is configured to map the spectral value, or the value of the most significant bitplan of the spectral value, or equivalent - multiple spectral values, or the value of the most significant bitplan of multiple spectral values, to the code value, wherein the encoded audio information comprises a plurality of variable-length code words. The arithmetic encoder is configured to select a mapping rule describing the mapping of the spectral value or the most significant bitplan of the spectral value to the code value depending on the context state described by the numeric current context value. The arithmetic encoder is configured to determine the numerical current context value depending on previously decoded adjacent spectral values. The arithmetic encoder is configured to obtain multiple context subarea values based on pre-coded spectral values to store said context subarea values and to obtain the numeric current context value associated with one or more spectral values to be encoded (or more precisely, define context for encoding spectral values, to be encoded) depending on the stored sub-context values. The arithmetic encoder is configured to calculate the norm of a vector formed by a plurality of pre-coded spectral values to obtain one of said multiple values of the context sub-area, a common context sub-area value associated with the many previously coded spectral values based on which said norm is calculated.
[0028] Said audio encoder is based on the same timing as the audio decoder described above. Also, said audio encoder may be supplemented by any of the elements and by any of the functions described above with respect to the audio decoder.
[0029] Another embodiment of the invention as shown in independent claim 16 creates a method of providing decoded audio information based on the encoded audio information.
[0030] Another embodiment of the invention as shown in independent claim 17 creates a method of providing coded audio information based on the audio input information.
[0031] Another embodiment of the invention as shown in independent claim 18 creates a computer program for performing one of the mentioned methods.
Brief Description of the Figures [0032] Embodiments of the present invention will then be described with reference to the attached figures, in which:
Fig. 1 shows a block diagram of an audio encoder according to an embodiment of the invention;
Fig. 2 shows a block diagram of an audio decoder according to an embodiment of the invention;
Fig. 3 shows a code representation of the "values_decode ()" algorithm pseudo-program for decoding spectral values;
Fig. 4 shows a schematic representation of the context for calculating the state;
Fig. 5a shows the code for the "arith_map_context ()" algorithm pseudo-program for context mapping;
Fig. 5b shows a representation of the pseudo program code of another algorithm "arith_map_context ()" for context mapping;
Fig. 5c shows a representation of the code of the pseudo-program of the "arith_get_context ()" algorithm for obtaining the context state value;
Fig. 5d shows a representation of the pseudo program code of another algorithm "arith_get_context ()" for obtaining the context state value;
Fig. 5e shows a representation of the pseudo-program code of the "arith_get_pk ()" algorithm for obtaining the "pki" index values of the cumulative frequency table from state values (or state variables);
Fig. 5f shows a representation of the pseudo-program code of another algorithm "arith_get_pk ()" for obtaining the "pki" index values of the cumulative frequency table from state values (or state variables);
Fig. 5g shows a code representation of the pseudo-program of the "arith_decode ()" algorithm for arithmetically decoding a symbol from a variable-length code word;
Fig. 5h shows the first part of the code representation of the pseudo-program of another algorithm "arith_decode ()" for arithmetic decoding of a symbol from a variable-length code word;
Fig. 5i shows a second part of the pseudo-program code representation of another algorithm "arith_decode ()" for arithmetically decoding a symbol from a variable length code word;
Fig. 5j shows a representation of the pseudo-program code of the algorithm for obtaining absolute values a, b of spectral values from a common value of m;
Fig. 5k shows a representation of the pseudo-program code of an algorithm for entering decoded spectral values a, b into a matrix of decoded spectral values;
Fig. 5l shows a representation of the pseudo-program code of the "arith_update_context ()" algorithm for obtaining context sub-area values based on absolute values a, b of decoded spectral values;
Fig. 5m shows a representation of the pseudo-program code of the "arith_finish ()" algorithm for populating entries of a matrix of decoded spectral values and a matrix of context sub-area values;
Fig. 5n shows a representation of the pseudo-program code of another algorithm for obtaining the absolute values of a, b decoded spectral values from a common value of m;
Fig. 5o shows a representation of the pseudo-program code of the "arith_update_context ()" algorithm for updating the matrix of decoded spectral values and the matrix of context sub-area values;
Fig. 5p shows the code representation of the pseudo-program of the "arith_save_context ()" algorithm for filling matrix entries of decoded spectral values and matrix entries of context subareas;
Fig. 5q shows the definition legend;
Fig. 5r shows another legend of the definition;
Fig. 6a shows a syntax representation of a block of raw data of Unified Speech and Audio Coding (USAC);
Fig. 6b shows a syntax representation of one channel element;
Fig. 6c shows a syntax representation of a channel pair element;
Fig. 6d shows a syntax representation of "ICS" control information;
Fig. 6e shows a syntax representation of a channel stream in the frequency domain;
Fig. 6f shows a syntax representation of arithmetically coded spectral data;
Fig. 6g shows a syntax representation for decoding a set of spectral values;
Fig. 6h shows another syntactic representation for decoding a set of spectral values;
Fig. 6i shows the legend of data elements and variables;
Fig. 6j shows another legend of data elements and variables;
Fig. 7 shows a block diagram of an audio encoder according to the first aspect of the invention; Fig. 8 shows a block diagram of an audio decoder according to the first aspect of the invention;
Fig. 9 shows a graphical representation of the mapping of the numerical current context value to the mapping rule index value according to the first aspect of the invention; Fig. 10 shows a block diagram of an audio encoder according to the second aspect of the invention; Fig. 11 shows a block diagram of an audio decoder according to the second aspect of the invention;
Fig. 12 shows a block diagram of an audio encoder according to the third aspect of the invention; Fig. 13 shows a block diagram of an audio decoder according to the third aspect of the invention;
Fig. 14a shows a schematic representation of the context for calculating the state that is used in accordance with draft working 4 of the USAC draft project;
Fig. 14b shows an overview of the tables used in the arithmetic coding method according to draft version 4 of the USAC draft standard;
Fig. 15a shows a schematic representation of the context for calculating the state that is used in the embodiments of the invention;
Fig. 15b is an overview of the tables used in the arithmetic coding method of the present invention;
Fig. 16a is a graphical representation of permanent memory demand for the noiseless coding method of the present invention, according to draft USAC draft version 5, and according to Huffman AAC (advanced audio coding) coding;
Fig. 16b is a graphical representation of the total permanent memory demand of the USAC decoder according to the present invention and according to the concept according to working version 5 of the USAC draft project;
Fig. 17 shows a schematic representation of the system for comparing noise-free coding according to draft version 3 or draft version 5 of the USAC draft standard with the coding method according to the present invention;
Fig. 18 shows a tabular representation of the average bit rates produced by the arithmetic USAC encoder according to working version 3 of the USAC draft standard and according to an embodiment of the present invention;
Fig. 19 shows a tabular representation of the minimum and maximum bit resource levels for an arithmetic decoder according to draft version 3 of the USAC standard project and for an arithmetic decoder according to an embodiment of the present invention; Fig. 20 shows a tabular representation of the average numbers of complexities for decoding a 32 kilobit bit stream according to draft version 3 of the USAC draft for different versions of the arithmetic encoder;
Figures 21 (1) and 21 (2) show a tabular representation of the contents of the table "ari_lookup_m [600]";
Figures 22 (1) to 22 (4) show a tabular representation of the contents of the table "ari_hash_m [600]";
Figures 23 (1) to 23 (7) show a tabular representation of the contents of the table "ari_cf_m [96] [17]"; and
Fig. 24 shows a tabular representation of the contents of the "ari_cf_r []" table.
A detailed description of the embodiments
1. Audio encoder according to Fig. 7 [0033] Fig. 7 is a block diagram of an audio encoder according to an embodiment of the invention. The audio encoder 700 is configured to receive 710 audio input information and to provide 712 encoded audio information based thereon. The audio encoder includes an energy-thickening time domain to frequency domain converter 720 that is configured to provide an audio representation 722 in the frequency domain based on a time domain representation of the input audio information 710 such that the frequency domain 722 audio representation includes a set of values spectral. The audio encoder 700 further includes an arithmetic encoder 730 configured to encode the spectral value (from the set of spectral values forming the 722 audio representation in the frequency domain) or its pre-processed version using a variable length code word to obtain 712 encoded audio information (which may include for example, many code words of variable length).
[0034] The arithmetic encoder 730 is configured to map the spectral value or the most-significant bitplan value of the spectral value to the code value (i.e., the variable length code word) depending on the state of the context. The arithmetic encoder is configured to select a mapping rule describing the mapping of the spectral value or the most significant bitplan of the spectral value to the code value depending on the (current) context state. The arithmetic encoder is configured to determine the current context state or the numeric current context value describing the current context state depending on a plurality of previously coded spectral values (preferably, but not necessarily, adjacent). For this purpose, the arithmetic encoder is configured to evaluate the hash table, whose entries define both significant state values between the numerical context values and the limits of the numeric ranges of context values, with the mapping rule index value individually linked to the numeric (current) context value, being a significant state value and where the common index value of the mapping rule is associated with various numerical current context values within the range bounded by the range boundaries (wherein the range boundaries are preferably defined by hash table entries).
[0035] As can be seen, mapping the spectral value (audio representation 722 in the frequency domain) or the most significant bitplan of the spectral value to the code value (encoded audio information 712) can be implemented by encoding 740 the spectral value using the mapping principle 742. Tracking module 750 status can be configured to track the status of the context. The status tracking module provides information 754 describing the current state of the context. Information 754 describing the current state of the context may preferably take the form of a numeric current context value. The mapping rule selection module 760 is configured to select a mapping rule, e.g., a cumulative frequency table describing the mapping of the spectral value or the most significant bitplan of the spectral value to the code value. Accordingly, the mapping rule selection module 760 provides mapping rule information 742 for encoding the spectral value 740. The mapping rule information 742 may take the form of a mapping rule index value or a cumulative frequency table selected depending on the mapping rule index value. The mapping rule selection module 760 includes (or at least evaluates) a hash table 752, whose entries define both significant state values between numerical context values and boundaries as well as ranges of numerical context values, with the mapping rule index value individually related to the numerical context value, being a significant state value and where the common index value of the mapping rule is associated with various numerical context values within the range bounded by the boundaries of the range. The hash table 762 is evaluated to select a mapping rule, i.e. to provide information 742 of the mapping rule.
[0036] In summary of the above, the audio encoder 700 implements arithmetic coding of the frequency domain audio representation provided by the time domain to frequency domain converter. Arithmetic coding is context dependent, so that the mapping principle (e.g., cumulative frequency table) is selected depending on the previously coded spectral values. Accordingly, spectral values adjacent in time and / or frequency (or at least in a predetermined environment) to each other and / or to the currently encoded spectral value (i.e., spectral values in the predetermined environment of the currently encoded spectral value) are included in the coding arithmetic to match the probability distribution evaluated by arithmetic coding. When selecting the appropriate mapping policy, the numeric current context values 754 provided by the state tracking module 750 are evaluated. Because typically the number of different mapping rules is much smaller than the number of possible numeric values of the current context values 754, the mapping policy selection module 760 allocates the same mapping rules (described for example by the mapping rule index value) to a relatively large number of different numerical context values. However, there are typically spectral configurations (represented by specific numerical context values) with which the mapping principle should be associated to achieve high coding efficiency.
[0037] It has been found that the selection of the mapping rule depending on the numerical current context value can be implemented with particularly high computational efficiency if the entries of a single hash table define both the most significant state values and the limits of the numerical (current) context values of the context. This mechanism has been found to be appropriate for the selection of the mapping rule because there are many cases where a single significant state value (or significant numeric context value) is inserted between the left interval of many non significant state values (with which the common mapping rule is associated) and the right range of many non-significant state values (with which the common mapping principle is associated). Also, the mechanism of using a single hash table whose entries define both significant state values and numeric (current) range limits of context values can efficiently handle various cases where, for example, there are two adjacent ranges of non-significant state values (also known as non-significant numeric values) context values) with no significant status value between them. Particularly high computing performance is obtained by maintaining a small number of table accesses. For example, a single iterative table search is sufficient in most embodiments to check if the numeric current context value is equal to any of the significant state values or in which non-significant state values the numeric current context value is within. As a result, a small number of table accesses that are both time consuming and energy consuming can be maintained. Thus, the mapping rule selection module 760, which uses the hash table 762, can be considered a particularly efficient mapping rule selection module in terms of computational complexity while still providing high coding performance (in terms of bit rate).
[0038] Further details regarding obtaining information 742 of the mapping rule from the numeric current context value 754 will be described below.
2. Audio decoder according to Fig. 8 [0039] Fig. 8 is a block diagram of an audio decoder 800. The audio decoder 800 is configured to receive encoded audio information 810 and to provide, on its basis, decoded audio information 812. The audio decoder 800 comprises an arithmetic decoder 820 which is configured to provide multiple spectral values 822 based on an arithmetically coded representation of spectral values 821. The audio decoder 800 also includes a frequency domain to time domain converter 830 that is configured to receive decoded spectral values 822 and to provide a representation of audio 812 in the time domain which may constitute decoded audio information using decoded spectral values 822 to obtain decoded audio information 812.
[0040] The arithmetic decoder 820 includes a spectral value determination module 824 that is configured to map the code value of the arithmetically coded representation of the spectral value 821 to the symbol code representing one or more decoded spectral values or at least a portion (e.g., the most significant bitplan) of one or more number of spectral values. The spectral value determination module 824 may be configured to perform mapping depending on the mapping rule, which may be described by the mapping rule information 828a. For example, the mapping rule information 828a may take the form of a mapping rule index value or a selected cumulative frequency table (selected for example depending on the mapping rule index value).
[0041] The arithmetic decoder 820 is configured to select a mapping rule (e.g., cumulative frequency table) describing the mapping of code values (described by the arithmetically coded representation of 821 spectral values) to the symbol code (describing one or more spectral values or their most significant bitplan) in depending on the context state (which can be described by context state information 826a). The arithmetic decoder 820 is configured to determine the current context state (described by the numerical current context value) depending on a plurality of previously decoded spectral values. To this end, a state tracking module 826 can be used that receives information describing previously decoded spectral values and which provides a numerical current context value 826a thereof describing the current state of the context based thereon.
[0042] The arithmetic decoder is also configured to evaluate the hash table 829, whose entries define both significant state values between numerical context values and the limits of numerical ranges of context values to select a mapping rule, wherein the mapping rule index value is individually associated with a numerical context value being a significant state value and wherein the common mapping rule index value is associated with various numeric context values within the range bounded by the range limits. The evaluation of the hash table 829 may, for example, be performed using the hash table evaluation module, which may be part of the mapping rule selection module 828. Accordingly, the mapping rule information 828a, for example in the form of a mapping rule index value, is obtained based on the numeric current context value 826a describing the current state of the context. The mapping rule selection module 828, for example, determines the value of the mapping rule index 828a depending on the result of the hash table evaluation 829. Alternatively, the hash table evaluation 829 may directly provide the mapping rule index value.
[0043] Regarding the functionality of the audio decoder 800, it should be noted that the arithmetic decoder 820 is configured to select a mapping rule (e.g. cumulative frequency table), which is, on average, suitable for spectral values to be decoded because the mapping rule is selected depending on the current context state (described for example by the current numerical context value), which in turn is determined depending on many previously decoded spectral values. Accordingly, statistical relationships between adjacent spectral values to be decoded can be used. In addition, arithmetic decoder 820 can be efficiently implemented with a good balance between computational complexity, table size, and coding efficiency using the mapping rule selection module 828. By evaluating the (single) hash table 829, whose entries describe both significant state values and interval boundaries for non-significant state values, a single search of the hash table may be sufficient to obtain information 828a of the mapping rule from the numeric current context value 826a. Accordingly, it is possible to map a relatively large number of different potential numeric (current) context values to a relatively smaller number of different indexing index values. By using the 829 hash table described above, it is possible to use the statement that in many cases, a single isolated significant state value (significant context value) is inserted between the left range of many non-significant state values (non-significant context values) and the right range of many not significant state values (not significant context values), wherein a different mapping rule index value is associated with a significant status value (significant context value) compared to the left range status values (context values) and the right range status values (context values). However, the use of the hash table 829 is also appropriate in situations where two ranges of numeric state values are directly adjacent to each other, with no significant state value between them.
[0044] It follows that the mapping rule selection module 828, which evaluates the hash table 829, provides particularly high performance when choosing the mapping rule (or when providing the mapping rule index value) depending on the current context state (or depending on the current numeric context values describing the current state of the context) because the hash mechanism is appropriate in a typical context situation in the audio decoder.
[0045] Further details will be described below.
3. Context shortening mechanism according to Fig. 9 [0046] Below, a context shortening mechanism that may be implemented in the mapping rule selection module 760 and / or in the mapping rule selection module 828 will be disclosed. The hash table 762 and / or hash table 829 can be used to implement said context shortening mechanism.
[0047] Now referring to Fig. 9, which shows the situation of shortening the numerical current value of the context, further details will be described. In the graphical representation of Fig. 9, the abscissa 910 describes the numerical value of the current context value (i.e., numeric context values). The ordinate axis 912 describes the index value of the mapping rule. Markings 914 describe the mapping rule index values for non-significant numeric context values (describing non-significant states). Markings 916 describe the mapping rule index values for "individual" (true) significant numeric context values describing individual (true) significant states. Markings 916 describe the mapping rule index values for "wrong" numeric context values describing "wrong" significant states, where the "wrong" significant state is a significant state with which the same mapping rule index value is associated as with one of the adjacent ranges significant numerical context values.
[0048] As can be seen, the entry "ari_hash_m [i1]" of the hash table describes the individual (real) state having a numerically coded spectral value c1. As you can see, the mriv1 value of the mapping rule index is associated with an individual (real) significant state having the numeric value of the context c1. Accordingly, both the numerical context value c1 and the mriv1 index value of the mapping rule index can be described by the "ari_hash_m [i1]" entry of the hash table. The range 932 of the numerical context values is limited by the numeric value of the context c1, with the numerical context value c1 not belonging to the interval 932, so that the largest numerical value of the context context 932 is equal to c1-1. The mriv4 value of the mapping rule index (which is different from mriv1) is associated with numeric values of the 932 context. For example, the mriv4 value of the mapping policy index can be described by the "ari_lookup_m [i1-1]" table entry of the additional "ari_lookup_m" table.
[0049] Furthermore, the mriv2 index value of the mapping rule can be associated with numerical context values in the range 934. The lower limit of the interval 934 is determined by the numerical value of the context c1, which is a significant numerical value of the context, with the numerical context value c1 not belonging to interval 932. Accordingly, the smallest value of interval 934 is equal to c1 + 1 (assuming integer numeric context values). The second boundary of interval 934 is determined by the numerical value of context c2, with the numerical value of context c2 not belonging to interval 934, so that the largest value of interval 934 is equal to c2-1. The numeric value of the context c2 is the so-called "incorrect" numeric context value, which is described by the entry "ari_hash_m [i2]" of the hash table. For example, the mriv2 value of the mapping rule index may be associated with the numeric value of the c2 context in such a way that the numeric context value associated with the "wrong" significant numeric value of the c2 context is equal to the value of the mapping rule index associated with the interval 934 bound by the numeric value of the c2 context. In addition, the range 936 of the numerically coded spectral value is also limited by the numerical value of the context c2, with the numerical value of the context c2 not belonging to the range 936, so that the smallest numerical value of the context of range 936 is equal to c2 + 1. The mriv3 value of the mapping policy index, which is typically different from the mriv2 value of the mapping policy index, is associated with the numeric values of the 936 interval context.
[0050] As can be seen, the mriv4 value of the mapping rule index, which is associated with a range of 932 numeric context values, can be described by the entry "ari_lookup_m [i1-1]" of the table "ari_lookup_m", the mriv2 value of the mapping rule index that is associated with a range of 934 numeric context values, can be described by the entry 'ari_lookup_m [i1]' of the table 'ari_lookup_m', and the mriv3 value of the mapping rule index that is associated with a range of 932 numeric context values, can be described by the entry "ari_lookup_m [i2]" of the table "ari_lookup_m". In the example above, the i2 value of the hash table index may be greater by 1 than the i1 value of the hash table index.
[0051] As seen in Fig. 9, mapping policy selection module 760 or mapping policy selection module 828 may receive the 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 significant state value (regardless of whether it is " individual "significant state value or" incorrect "significant state value), or the numeric current context value lies in one of the ranges 932, 934, 936, which are limited by ("individual" or "inappropriate") significant values of c1, c2 states. Both checking if the numeric current context value is equal to a significant c1, c2 status value and an assessment in which of the ranges 932, 934, 936 lies the numeric current context value (in case the numeric current context value is not equal to a significant state value) can be implemented using a single joint search of the hash table.
[0052] In addition, the hash table rating "ari_hash_m" can be used to obtain the index value of the hash table (for example, ii-i, ii or i2). Thus, the mapping rule selection module 760 can be configured to obtain, by evaluating a single hash table 762, 829 (for example, the hash table "ari_hash_m") a hash table index value (for example, i1-1, i1 or i2) determining a significant state value ( e.g. c1 or c2) and / or range (e.g. 932, 934, 936) and whether the numeric current context value is a significant context value (also designated as a significant state value) or not.
[0053] Also, if it is found in the hash table 762, 829 "ari_hash_m" assessment that the numeric current context value is not a "significant" context value (or "significant" state value), the hash table index value (e.g., i1- 1, i1 or i2) obtained as a result of the hash table evaluation ("ari_hash_m") can be used to obtain the index value of the mapping rule associated with the range 932, 934, 936 numeric context values. For example, the hash table index value (for example, i1-1, i1 or i2) can be used to designate an additional mapping table entry (for example, "ari_lookup_m"), which describes the index values of the mapping rule associated with the range 932, 934, 036, in which is the numeric current context value.
[0054] For further details, we refer below to a detailed discussion of the "arith_get_pk" algorithm (with various options for this "arith_get_pk ()" algorithm, examples of which are shown in Figs. 5e and 5f).
[0055] In addition, it should be noted that the size of the compartments may vary from case to case. In some cases, the numeric context value range contains a single numeric context value. However, in many cases, a range can contain many numerical context values.
4. Audio encoder according to Fig. 10 [0056] Fig. 10 is a block diagram of an audio encoder 1000 according to an embodiment of the invention. The audio encoder 1000 according to Fig. 10 is similar to the audio encoder 700 according to Fig. 7, so that identical signals and means are indicated with identical reference numbers in Figs. 7 and 10.
[0057] Audio encoder 1000 is configured to receive audio input information 710 and to provide coded audio information 712 based thereon. The audio encoder 1000 includes an energy-thickening time domain to frequency domain converter 720 that is configured to provide a frequency domain representation 722 based on a time domain representation of the input audio information 710, so that the frequency domain 722 audio representation includes a set of spectral values. The audio encoder 1000 also includes an arithmetic encoder 1030 configured to encode a spectral value (from a set of spectral values forming a 722 representation in the frequency domain) or a pre-processed version thereof, using a variable length code word to obtain 712 encoded audio information (which may include example, many code words of variable length).
[0058] The arithmetic encoder 1030 is configured to map the spectral value or multiple spectral values or the most significant bitplan values of the spectral value or multiple spectral values to the code value (i.e., the variable length code word) depending on the state of the context. The arithmetic encoder 1030 is configured to select a mapping rule describing the mapping of the spectral value or multiple spectral values or the most significant bitplan of the spectral value or multiple spectral values to the code value depending on the context state. The arithmetic encoder is configured to determine the current context state depending on many previously coded spectral values (preferably but not necessarily adjacent). For this purpose, the arithmetic encoder is configured to numerically modify the representation of the previous numerical context value describing the context state associated with one or more previously coded spectral values (e.g., to choose the appropriate mapping rule) depending on the value of the context subarea, to obtain a numerical representation of the current context value describing the context state associated with one or more spectral values to be encoded (for example, to select the appropriate mapping rule).
[0059] As can be seen, mapping the spectral value or multiple spectral values or the most significant bitplan of the spectral value or multiple spectral values to the code value can be accomplished by encoding 740 the spectral value using the mapping rule described by the mapping rule information 742. The status tracking module 750 may be configured to track the status of the context. The status tracking module 750 may be configured to modify the numerical representation of the previous numerical context value describing the context state associated with the coding of one or more previously coded spectral values depending on the value of the context subarea to obtain the numerical representation of the current context value describing the context state associated with the coding one or more spectral values to be encoded. Modification of the numerical representation of the previous numeric context value may for example be implemented by a numerical representation modifier 1052 that receives the previous numeric context value and one or more context sub-area values and provides the numeric current context value. Accordingly, the state tracking module 750 provides information 754 describing the current context state, e.g. in numerical form of the current context value. The mapping rule selection module 1060 may select a mapping rule, e.g., a cumulative frequency table, describing the mapping of the spectral value or multiple spectral values or the most significant bitplan of the spectral value or multiple spectral values per code word. Accordingly, mapping rule selection module 1060 provides mapping rule information 742 for spectral encoding 740. [0060] It should be appreciated that in some embodiments, the status tracking module 1050 may be identical to the status tracking module 750 or the status tracking module 826. It should also be noted that the mapping policy selection module 1060 may in some cases be identical to the mapping policy selection module 760 or the mapping policy selection module 828.
[0061] In summary of the above, the audio encoder 1000 implements arithmetic coding of the frequency domain audio representation provided by the time domain to frequency domain converter. The arithmetic coding is context dependent, so that the mapping principle (e.g., cumulative frequency table) is selected depending on the previously coded spectral values. Accordingly, spectral values adjacent in time and / or frequency (or at least in a predetermined environment) with each other and / or with a currently coded spectral value (e.g., spectral values in a predetermined environment of a currently coded spectral value) are included in arithmetic coding to match the probability distribution evaluated by arithmetic coding.
[0062] When determining the numeric current context value, the numerical representation of the numerical current context value describing the context state associated with one or more previously coded spectral values is modified depending on the value of the context subarea to obtain a numerical representation of the current context value describing the context state associated with one or more spectral values to be encoded. This approach avoids the complete numerical conversion of the current context value, which complete conversion consumes significant amounts of resources in conventional approaches. There is a wide variety of options for modifying the numerical representation of the current context value, including a combination of rescaling the numerical representation of the current context value, in addition to the value of the context subarea or the value derived therefrom, into a numerical representation of the previous numerical context value or the numerical representation of the previous context value, replacing part of the numerical representation (instead of the entire numerical representation) of the previous context value depending on the value of the context subarea, etc. Thus, typically the numerical representation of the current numerical context value is obtained based on the numerical representation of the previous context value as well as based on at least one context subarea value, typically the combination of operations is performed to combine the numerical value of the previous context value with the value of the context sub-area, such as, for example, two or more operations from among add operations, subtraction operations, multiplication operations, division operations, Boolean operations (AND operator), Boolean OR operations, BAND NAND operations, BOR NOR operations, Boolean negation operations, complement operations and shift operations. Accordingly, at least part of the numerical representation of the current context value is typically kept unchanged (except for an optional offset to another position) when obtaining the numeric current value of the context from the numeric previous context value. In contrast, other parts of the numerical representation of the previous context value are changed depending on one or more values of the context subarea. Thus, the numerical current context value can be obtained with a relatively low computational load, while avoiding the complete numerical conversion of the current context value.
[0063] In this way, a significant numerical current context value can be obtained that is suitable for use by the mapping rule selection module 1060.
[0064] As a result, efficient coding can be obtained by keeping the context calculation simple enough.
5. Audio decoder according to Fig. 11 [0065] Fig. 11 is a block diagram of audio decoder 1100. Audio decoder 1100 is similar to audio decoder 800 according to Fig. 8, so that identical signals, means and functions are indicated by identical reference numerals.
[0066] Audio decoder 1100 is configured to receive encoded audio information 810 and to provide decoded audio information 812 thereon. Audio decoder 1100 includes an arithmetic decoder 1120 that is configured to provide decoded numerical values 822 based on an arithmetically coded representation of 821 values spectral. The audio decoder 1100 also includes a frequency domain to time domain converter 830 that is configured to receive decoded spectral values 822 and to provide a time domain audio representation 812 that can be decoded audio information from previously decoded spectral values 822 to obtain decoded audio information 812.
[0067] Arithmetic decoder 1120 includes a spectral value determination module 824 that is configured to map the value of the arithmetically coded representation of the spectral value 821 to the symbol code, representing one or more decoded spectral values or at least a portion (e.g., the most significant bitplan) of one or more decoded spectral values. The spectral value determination module 824 may be configured to perform mapping depending on the mapping rule, which may be described by the mapping rule information 828a. For example, the mapping policy information 828a may include a mapping policy index value or may include a selected set of cumulative frequency table entries.
[0068] Arithmetic decoder 1120 is configured to select a mapping rule (e.g., cumulative frequency table) describing the mapping of the code value (described by the arithmetically coded representation of 821 spectral values) to the symbol code (describing one or more spectral values) depending on the state of the context , which context state can be described by context state information 1126a. Context status information 1126a may take the form of a numeric current context value. Arithmetic decoder 1120 is configured to determine the current context state depending on a plurality of previously decoded spectral values 822. For this purpose, the state tracking module 1126 can be used that receives information describing previously decoded spectral values. The arithmetic decoder is configured to modify the numerical representation of the current numerical context value describing the context state associated with one or more previously decoded spectral values depending on the value of the context subarea to obtain the numerical representation of the current context value describing the context state associated with one or more values spectral to be decoded. Modification of the numerical representation of the numerical current value of the context may, for example, be accomplished by the numerical representation modifier 1127, which is part of the state tracking module 1126. In this way, the current context status information 1126a is obtained, for example in the numerical form of the current context value. The selection of the mapping rule may be implemented by the mapping rule selection module 1128, which obtains the mapping rule information 828a from the current context state information 1126a and which provides the mapping rule information 828a to the spectral value determination module 824.
[0069] Regarding the functionality of the audio decoder 1100, it should be noted that the arithmetic decoder 1120 is configured to select a mapping rule (e.g., cumulative frequency table) which is, on average, suitable for the spectral value to be decoded because the mapping rule is selected depending on the current state of the context, which in turn is determined depending on many previously decoded spectral values. Thanks to this, statistical relationships between adjacent spectral values to be decoded can be used.
[0070] Furthermore, by modifying the numerical representation of the current context value describing the context state associated with the decoding of one or more previously decoded spectral values depending on the value of the context subarea, to obtain a numerical representation of the current context value describing the context state associated with decoding one or more spectral values to be decoded, it is possible to obtain significant information about the current state of the context, which is suitable for mapping to the index value of the mapping rule, with relatively low computational load. By maintaining at least part of the numerical representation of the current context value (potentially in a bit-shifted or scaled version) with the simultaneous update of another part of the numerical representation of previous context values depending on the value of the context sub-area, which were not included in the numeric previous value of the context, but which should be included in the current numerical context value, a small number of operations may be saved to obtain the current numerical value of the context. It is also possible to take advantage of the fact that the contexts used to decode adjacent spectral values are typically similar or correlated. For example, the context for decoding the first spectral value (or the first multiple spectral values) depends on the first set of previously decoded spectral values. The context for decoding a second spectral value (or second multiple 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. Because the first spectral value and the second spectral value are assumed to be adjacent (e.g. relative frequency associated) the first set of spectral values that determines the context for encoding the first spectral value may include a portion in common with the second set of spectral values that defines the context for decoding the second spectral value. Thus, it is easy to understand that the context state for decoding the second spectral value has some correlation with the context state for decoding the first spectral value. The computational efficiency of acquiring context, i.e. acquiring the numerical current value of the context, can be obtained by using such correlations. It was found that the correlation between the context states for decoding adjacent spectral values (e.g. between the context state described by the numerical pre-coded value and the context state described by the numeric current context value) can be used efficiently by modifying only those numerical parts of the current context value that depend on the values of the context subarea not taken into account when obtaining the numeric previous context value and by obtaining numeric current context value from the previous numeric context value. [0071] In summary, the concepts described herein enable particularly high computational performance when acquiring the numeric current value of the context. [0072] Further details will be described below.
6. Audio encoder according to Fig. 12 [0073] Fig. 12 is a block diagram of an audio encoder according to an embodiment of the invention. The audio encoder 1200 according to Fig. 12 is similar to the audio encoder 700 according to Fig. 7, so that identical means, signals and functions are indicated by identical reference numerals.
[0074] The audio encoder 1200 is configured to receive audio input information 710 and to provide coded audio information 712 based thereon. The audio encoder 1200 includes an energy thickening converter 720 in the frequency domain to the time domain based on a time domain representation of the input audio information 710, such that the 722 frequency domain representation contains a set of spectral values. Audio encoder 1200 also includes an arithmetic encoder 1230 configured to encode a spectral value (from a set of spectral values forming a 722 representation in the frequency domain) or multiple spectral values or their pre-processed versions using a variable length code word to obtain 712 encoded audio information (which for example, it can contain many variable-length code words.)
[0075] The arithmetic encoder 1230 is configured to map the spectral value or multiple spectral values or the most significant bitplan of the spectral value or multiple spectral values to the code value (i.e. per variable length code word) depending on the state of the context. The arithmetic encoder 1230 is configured to select a mapping rule describing the mapping of a spectral value or multiple spectral values or the most significant bitplan of the spectral value or multiple spectral values depending on the state of the context. The arithmetic encoder is configured to determine the current context state depending on a plurality of previously coded (preferably but not necessarily adjacent) spectral values. To this end, the arithmetic encoder is configured to obtain multiple context subarea values based on pre-coded spectral values, to store said context subarea values, and to obtain the numeric current context value associated with one or more spectral values to be encoded, depending on from stored values of the context subarea. In addition, the arithmetic encoder is configured to calculate a vector norm formed by a plurality of pre-coded spectral values to obtain a common context sub-area value associated with a plurality of pre-coded spectral values.
[0076] As can be seen, mapping the spectral value or multiple spectral values or the most significant bitplan of the spectral value or multiple spectral values to the code value can be accomplished by encoding 740 the spectral value using the mapping rule described by the mapping rule information 742. The state tracking module 1250 may be configured to track the context state and may include computer 1252 of the context subarea values, to calculate the vector norm formed by a plurality of pre-coded spectral values, to obtain a common context subarea value associated with the many previously coded spectral values. The state tracking module 1250 is also preferably configured to determine the current context state depending on the result of said calculation of the context subarea values performed by the computer 1252 of the context subarea values. Accordingly, status tracking module 1250 provides information 1254 describing the current state of the context. The mapping rule selection module 1260 may choose a mapping rule, e.g., a cumulative frequency table, describing the mapping of the spectral value or most significant spectral value bitplan to the code value. Accordingly, the mapping rule selection module 1260 provides mapping rule information 742 for spectral coding 740.
[0077] In summary of the above, the audio encoder 1200 performs arithmetic coding of the frequency domain audio representation provided by the time domain to frequency domain converter 720. Arithmetic coding is context dependent, so that the mapping principle (e.g., cumulative frequency table) is selected depending on the previously coded spectral values. Accordingly, spectral values adjacent in time and / or frequency (or at least in a predetermined environment) with each other and / or with a currently coded spectral value (i.e., spectral values in a predetermined environment of a currently coded spectral value) are included in the coding arithmetic to match the probability distribution evaluated by arithmetic coding.
[0078] In order to provide the numerical current context value, the context sub-area value associated with the plurality of pre-coded spectral values is obtained based on calculating the norm of the vector formed by the plurality of pre-coded spectral values. The result of determining the numerical current context value is used in the selection of the current context state, i.e. in the selection of the mapping rule.
[0079] By calculating the norm of a vector formed by a plurality of pre-coded spectral values, meaningful information can be obtained describing a part of the context of one or more spectral values to be encoded, wherein the pre-coded vector norm of a coded values typically can be represented by relatively a small number of bits. Thus, a sufficiently small amount of context information can be maintained that must be stored for later use when obtaining the numeric current context value by using the approach discussed above to calculate the values of the context subarea. It has been found that the vector standard of the previously encoded spectral values typically contains the most significant information regarding the state of the context. In contrast, it has been found that the sign of the aforementioned encoded spectral values typically has a secondary effect on the state of the context, so that it makes sense to omit the sign of the previously decoded spectral values to reduce the amount of information to store for later use. It has also been found that the calculation of the vector norm of previously coded spectral values is a reasonable approach to obtaining the value of the context subarea, because the averaging effect that typically appears in the calculation of the norm leaves the most important context information essentially unchanged. In summary, the calculation of the context subarea values carried out by computer 1252 of the context subarea values enables the provision of compacted context subarea information for storage and subsequent use, with the most significant context status information being retained despite the reduced amount of information.
[0080] Accordingly, efficient coding of the audio input information 710 can be obtained, while maintaining a sufficiently low computational load and a small amount of data to be stored by the arithmetic encoder 1230.
7. Audio decoder according to Fig. 13 [0081] Fig. 13 shows a block diagram of an audio decoder 1300. Since the audio decoder 1300 is similar to the audio decoder 800 according to Fig. 8 and to the audio decoder 1100 according to Fig. 11, identical means, signals and functions are marked with identical reference numbers.
[0082] Audio decoder 1300 is configured to receive encoded audio information 810 and to provide decoded audio information 812 thereon. Audio decoder 1300 includes an arithmetic decoder 1320 that is configured to provide multiple decoded spectral values 822 based on an arithmetically coded representation 821 spectral values. The audio decoder 1300 also includes a frequency domain to time domain converter 830 that is configured to receive decoded spectral values 822 and to provide a time domain representation 812 that can be decoded audio information from previously decoded spectral values 822 to obtain the decoded audio information 812.
[0083] The arithmetic decoder 1320 includes a spectral value determination module 824 that is configured to map the code value of the arithmetically coded representation of the spectral value 821 to the symbol code representing one or more decoded spectral values, or at least a portion (e.g., the most significant bitplan) of one or more decoded spectral values. The spectral value determination module 824 may be configured to perform mapping depending on the mapping rule, which is described by the mapping rule information 828a. For example, the mapping policy information 828a includes a mapping policy index value or a selected set of cumulative frequency table entries.
[0084] The arithmetic decoder 1320 is configured to select a mapping rule (e.g., cumulative frequency table) describing the mapping of the code value (described by the arithmetically coded representation of 821 spectral values) to the symbol code (describing one or more spectral values) depending on the state of the context (which can be described by context status information 1326a). The arithmetic decoder 1320 is configured to determine the current context state depending on a plurality of previously decoded spectral values 822. To this end, a state tracking module 1326 can be used that receives information describing a plurality of previously decoded spectral values. The arithmetic decoder is also configured to obtain multiple context subarea values based on previously decoded spectral values and to store said context subarea values. The arithmetic decoder is configured to obtain the numeric current context value associated with one or more spectral values to be decoded, depending on the stored values of the context subarea. The arithmetic decoder 1320 is configured to calculate the norm of a vector formed by a plurality of previously decoded spectral values to obtain a common context sub-area value associated with a plurality of previously decoded spectral values.
[0085] Computing the norm of a vector formed by a plurality of pre-coded spectral values to obtain a common context sub-area value associated with a plurality of previously decoded spectral values may, for example, be implemented by the computer 1327 of the context sub-area values that is part of the state tracking module 1326. Accordingly, information about the current state of the context 1326a is obtained based on the values of the context subarea, wherein the state tracking module 1326 preferably provides a numeric current context value associated with one or more spectral values to be decoded depending on the stored subarea values context. The selection of the mapping rule may be performed by the mapping rule selection module 1328, which obtains the mapping rule information 828a from the current state of the context 1326a and which provides the mapping rule information 828a to the spectral value determination module 824.
[0086] When considering the functionality of the audio decoder 1300, it should be noted that the arithmetic decoder 1320 is configured to select a mapping rule (e.g., cumulative frequency table) which is, on average, suitable for the spectral value to be decoded because the mapping rule is selected in depending on the current state of the context, which in turn is determined depending on many previously decoded spectral values. Accordingly, statistical relationships between adjacent spectral values to be decoded can be used.
[0087] However, it has been found that in terms of memory consumption, it is efficient to store context sub-area values that are based on calculating the norm of a vector formed by a plurality of previously decoded spectral values, for later use depending on the numerical context value. It was also found that such context sub-area values still contain the most significant context information. Accordingly, the concept used by the status tracking module 1326 is a good compromise between coding efficiency, computational complexity and memory performance.
[0088] Further details will be described below.
8. Audio encoder according to Fig. 1 [0089] The audio encoder according to an embodiment of the present invention will be described below. Fig. 1 shows a block diagram of such an audio encoder 100.
[0090] The audio encoder 100 is configured to receive the audio input information 110 and to provide based on it, the bit stream 112, which is the encoded audio information. The audio encoder 100 optionally includes a pre-processor 120 that is configured to receive the audio input information 110 and to provide, based on it, the pre-processed audio input information 110a. The audio encoder 100 also includes an energy-thickening converter 130 from the time domain to the frequency domain, which is also referred to as a signal converter. Signal converter 130 is configured to receive audio input information 110, 110a and to provide, based on it, audio information 132 in the frequency domain, which preferably takes the form of a set of spectral values. For example, the signal converter 130 may be configured to receive an audio information input frame 110,
110a (e.g., a time domain sample block) and for providing a set of spectral values representing the audio content of the respective audio frame. In addition, the signal converter 130 may be configured to receive a plurality of consecutive overlapping or non-overlapping audio frames, audio input information 110, 110a and to provide, based thereon, an audio representation in the time-frequency domain that contains a sequence of successive sets of spectral values, one set of spectral values associated with each frame.
[0091] The energy-thickening frequency-domain converter 130 may include an energy-thickening filter bank that provides spectral values associated with various overlapping or non-overlapping frequency regions. For example, the signal converter 130 may include an MDCT windowing converter 130a that is configured to wind the input audio information 110, 110a (or its frame) using a transformation window and to implement a modified discrete cosine transformation of the windowed audio input information 110, 110a (or its windowed) frame). Accordingly, the audio representation 132 in the frequency domain may comprise a set of, for example, 1024 spectral values in the form of MDCT coefficients associated with the input audio information frame.
[0092] The audio encoder 100 further optionally optionally includes a spectral terminal processor 140 which is configured to receive an audio representation 132 in the frequency domain and to provide, based on it, an end-processed audio representation 142 in the frequency domain. For example, the spectral terminal processor 140 may be configured to perform temporal noise shaping and / or long-term prediction and / or any post-processing known in the art. The audio encoder optionally further includes a scaling module / quantizer 150 that is configured to receive a frequency domain audio representation 132 or its final processed version 142 and to provide a scaled and quantized frequency domain audio representation 152.
[0093] The audio encoder 100 optionally further includes a psychoacoustic processor processor 160 that is configured to receive audio input information 110 (or its final processed version 110a) and to provide, based on it, optional control information that can be used to control energy-thickening converter 130 from the time domain to the frequency domain, for controlling the optional spectral end processor 140 and / or for controlling the optional scaling module / quantizer 150. For example, the psychoacoustic model processor 160 may be configured to analyze input audio information, to determine which components of input audio information 110, 110a are particularly important for human perception of audio content, and which components of the input audio information 110, 110a are less relevant to the perception of audio content. Accordingly, the psychoacoustic processor processor 160 may provide control information that is used by the audio encoder 100 to adjust the frequency representation of the audio representation 132, 142 in the frequency domain by the scaling module / quantizer 150 and / or the quantization resolution used by the scaling module / quantizer 150 As a result, perceptually significant bands of scaling factors (i.e. Groups of adjacent spectral values that are particularly important for human perception of audio content) are scaled with a high scaling factor and quantized with relatively high resolution, while perceptually less significant scaling factor bands (i.e., groups of adjacent spectral values) are scaled with a relatively smaller factor scaling and quantized with relatively low quantization resolution. Accordingly, scaled spectral values of perceptually more significant frequencies are typically much higher than spectral values of perceptually less significant frequencies.
[0094] The audio encoder further includes an arithmetic encoder 170 that is configured to receive the scaled and quantized version 152 of the audio representation 132 in the frequency domain (or alternatively processed final version 142 of the audio representation 132 in the frequency domain, or even the audio representation 132 in the frequency domain itself ) and to provide, based on it, information 172a of the arithmetic code word in such a way that the arithmetic code word information represents an audio representation 152 in the frequency domain.
[0095] The audio encoder 100 includes a bit stream payload formatting module 190 that is configured to receive arithmetic code word information 172a. The bit stream payload formatting module 190 is also typically configured to receive additional information, such as, for example, scale factor information describing which scale factors have been used by the scale module / quantizer 150. Additionally, the bit stream payload formatting module 190 may be configured to receive other control information. The bit stream charge formatting module 190 is configured to provide the bit stream 112 based on the received information, by assembling the bit stream according to the desired bit stream syntax, as will be discussed below.
[0096] The details of the arithmetic encoder 170 will be described below. The arithmetic encoder 170 is configured to receive a plurality of post-processed and scaled and quantized spectral values of the frequency representation of audio 132 in the frequency domain. The arithmetic encoder includes a extraction module of the most-significant bitplan, which is configured to extract the most-significant bitplan m from the spectral value. It should be noted here that the most significant bitplan may contain one or even more bits (e.g. two or three bits), which are the most significant bits of the spectral value. Thus, the most significant bitplan extraction module 174 provides the value of the most significant bitplan of the spectral value.
[0097] Alternatively, however, the most significant bitplan extraction module 174 may provide a combined m value of the most significant bitplan, combining the most significant bitplans from a plurality of spectral values (e.g., spectral values a and b). The most significant bitplan of the spectral value a is designated m. Alternatively, the combined value of the most significant bitplan of the many spectral values a, b is designated m.
[0098] The arithmetic encoder 170 further includes a first code word determination module 180 that is configured to determine the arithmetic code word acod_m [pki] [m] representing the m-value of the most significant bitplan. Optionally, the code word determination module 180 may also provide one or more escape code words (also referred to herein as "ARITH_ESCAPE") indicating, for example, how many less significant bitplans are available (and as a result indicating the numerical weight of the most significant bitplan). The first code word determination module 180 may be configured to provide the code word associated with the m-value of the most significant bitplan using a cumulative frequency table containing (or to which it refers) a pki index of the cumulative frequency table.
[0099] To determine which cumulative frequency table should be selected, the arithmetic encoder preferably includes a status tracking module 182 that is configured to track the encoder arithmetic, for example by observing which spectral values have been previously encoded. State tracking module 182 thus provides status information 184, e.g., a state value labeled "s" or "t" or "c". The arithmetic encoder 170 further includes a cumulative frequency table selection module 186 that is configured to receive status information 184 and to provide information 188 describing the selected cumulative frequency table to the code word determination module 180. For example, the cumulative frequency table selection module 186 may provide the "pki" index of the cumulative frequency table, describing which cumulative frequency table of the 96 cumulative frequency tables is selected for use by the code word determination module. Alternatively, the cumulative frequency table selection module 186 may provide the entire selected table or cumulative frequency sub-table to the code word determination module. Thus, the code word determination module 180 may use the selected table or cumulative frequency sub-table to provide the code word acod_m [pki] [m] m values of the most significant bitplan in such a way that the actual code word acod_m [pki] [m] coding the m-value of the most significant bitplan depends on the m-value of the pki index of the cumulative frequency table and, as a result, on current state information. Further details on the coding process and the resulting codeword format will be described below.
[0100] However, it should be noted that in some embodiments, the status tracking module 182 may be identical to or take over the functionality of the status tracking module 750, the status tracking module 1050 or the status tracking module 1250. It should also be noted that the cumulative frequency table selection module 186 may in some embodiments be identical to or take over the functionality of the mapping rule selection module 760, the mapping rule selection module 1060 or the mapping rule selection module 1260. In addition, the first coding module 180 may, in some cases, be identical to or assume the spectral value coding functionality 740.
[0101] The arithmetic encoder 170 further includes a less significant bitplan extraction module 189a that is configured to extract one or more bitplans from a scaled and quantized representation of frequency 152 in the frequency domain if one or more spectral values to be encoded exceed the range of values that can be encoded using only the most significant bitplan. Less significant bitplans may contain one or more bits as needed.
Accordingly, the less significant bitplan extraction module 189a provides information 189b of the less significant bitplan. The arithmetic encoder 170 further includes a second code word determination module 189c that is configured to receive less significant bitplan information 189d and to provide based on it, 0, 1 or more code words "acod_r" representing contents of 0, 1 or more less significant bitplans. Second code word determination module 189c may be configured to use an arithmetic coding algorithm or any other coding algorithm to obtain the "acod_r" code words of the less significant bitplan from the less significant bitplan information 189b.
[0102] It should be noted here that the number of less significant bitplans may vary depending on the values of the scaled and quantized spectral values 152, so that there may not be any less significant bitplans if the scaled and quantized value to be encoded is relatively small , so that there can be one less significant bitplan if the current scaled and quantized spectral value to be encoded is in the medium range, and yes, that there can be more than one less significant bitplan if the scaled and quantized spectral value to be encoded has a relatively large value.
[0103] In summary of the above, the arithmetic encoder 170 is configured to encode scaled and quantized spectral values that are described by information 152 using a hierarchical coding process. The most significant bitplan (containing, for example, one, two or three bits per spectral value) is coded to obtain the arithmetic code word "acod_m [pki] [m]" of the most significant bitplan value. One or more, less significant bitplans (each of the less significant bitplans containing, for example, one, two or three bits) of one or more spectral values are encoded to obtain one or more words of the code "acod_r". When coding the most-significant bitplan, the m-value of the most-significant bitplan is mapped to the code word acod_m [pki] [m]. To this end, 96 cumulative frequency tables are available for coding m values depending on the arithmetic state of the encoder 170, i.e. depending on previously coded spectral values. As a result, the code word "acod_m [pki] [m]" is obtained. In addition, one or more code words "acod_r" are provided and included in the bit stream if one or more minor bitplans are present.
Description of the Restore to Initial State [0104] The audio encoder 100 can optionally be configured to decide if an improvement of the throughput can be obtained by restoring the context to its initial state, for example by setting the state index to a default value. Accordingly, the audio encoder 100 may be configured to provide information to restore the state to its original state (e.g. called "arith_reset_flag") indicating whether the context for arithmetic coding is returned to its original state, as well as indicating whether the context for arithmetic decoding at the appropriate decoder should be returned to its initial state.
[0105] Details of the bit stream format and cumulative frequency tables used will be discussed below.
9. Audio decoder according to Fig. 2 [0106] The audio decoder according to an embodiment of the invention will be described below. Fig. 2 shows a block diagram of such an audio decoder 200.
[0107] The audio decoder 200 is configured to receive the bit stream 210 which represents the encoded audio information and which can be identical to the bit stream 112 provided by the audio encoder 100. The audio decoder 200 provides the decoded audio information 212 based on the bit stream 210.
[0108] The audio decoder 200 includes an optional bit stream payload formatting 220 that is configured to receive the bit stream 210 and to extract from the bit stream 210 the coded audio representation 222 in the frequency domain. For example, the bit stream payload formatting module 220 may be configured to extract from the bit stream 210 arithmetically coded spectral data, such as, for example, the arithmetically coded codeword "acod_m [pki] [m]" representing the m value of the most significant bitplan of the spectral value a or more spectral values a, b and b of the code word 'acod_r', representing the content of the less significant bitplan of the spectral value a or multiple spectral values a b audio representation in the frequency domain. Thus, the coded audio representation 222 in the frequency domain is (or includes) an arithmetically coded representation of spectral values. The bit stream payload formatting module 220 is further configured to extract additional control information from the bit stream, which is not shown in Fig. 2. In addition, the bit stream payload reformatter is optionally configured to extract from the bit stream 210 of the restore state information 224, which is also referred to as the arithmetic flag "restore_offset".
[0109] The audio decoder 200 includes an arithmetic decoder 230, which is also referred to as "spectral noiseless decoder". The arithmetic decoder 230 is configured to receive the encoded audio representation 220 in the frequency domain and optionally restore state information 224. The arithmetic decoder 230 is also configured to provide a decoded audio representation 232 in the frequency domain, which may include a decoded representation of spectral values. For example, the decoded audio representation 232 in the frequency domain may include a decoded representation of spectral values that are described by the coded audio representation 220 in the frequency domain.
[0110] The audio decoder 200 further includes an optional inverse quantization / rescaling module 240 which is configured to receive a decoded audio representation 232 in the frequency domain and to provide, based on it, the inverse quantized and re-scaled audio representation 242 in the frequency domain.
[0111] The audio decoder 200 further includes an optional spectral pre-processor 250 that is configured to receive the inverse quantized and scaled audio representation 242 in the frequency domain and to provide, based on it, a pre-processed version 252 of the inverse quantized and scaled representation 242 in the domain frequency. The audio decoder 200 further includes a frequency domain to time domain converter 260, which is also referred to as a "signal converter". Signal converter 260 is configured to receive the pre-processed version 252 of the inverse quantized and scaled audio representation 242 in the frequency domain (or alternatively, the inverse quantized and scaled audio representation 242 in the frequency domain or the decoded audio representation 232 in the frequency domain) and for delivery based on about her, 262 representation in time domain, audio information. For example, a frequency-to-time-domain signal converter 260 may include a converter for performing inverted modified discrete cosine transformation (MDCT) and appropriate windowing (as well as other additional functions such as overlap-and-add).
[0112] The audio decoder 200 may further include an optional time domain processor 270 that is configured to receive time domain representation 262 of audio information and to obtain decoded audio information 212 using time domain post processing. However, if post-processing is omitted, the time domain representation 262 may be identical to the decoded audio information 212.
[0113] It should be noted here that inverted quantization / rescaling module 240, spectral pre-processor 250, frequency-domain-time-domain converter 260 and time-domain final processor 270 can be controlled depending on the control information that is obtained from the bit stream 210 by the bit stream payload reformatting module 220.
[0114] To sum up the overall function of the audio decoder 200, a decoded audio representation 232 in the frequency domain, e.g., a set of spectral values associated with the audio frame of the encoded audio information, can be obtained based on coded representation 222 in the frequency domain using an arithmetic decoder 230. Then a set of, for example, 1024 spectral values, which can be MDCT coefficients, is inversely quantized, scaled and pre-processed. As a result, a set of inverse quantized, scaled and spectrally pre-processed spectral values (e.g. 1024 MDCT coefficients) is obtained. Next, the representation in the time domain of the audio frame is obtained from the inverse quantized, scaled and spectrally pre-processed set of values in the frequency domain (e.g. MDCT coefficients). This results in a time domain representation of the audio frame. The time domain representation of a given audio frame may be combined with the time domain representations of previous and / or subsequent audio frames. For example, over-time representations of successive audio frames may be overlapped and overlapped to smooth the transition between time-domain representations of adjacent audio frames to obtain aliasing cancellation. For details regarding the reconstruction of decoded audio information 212 based on the decoded representation of audio 232 in the time-frequency domain, reference is, for example, to the international standard ISO / IEC 14496-3, part 3, subpart 4, which gives a detailed discussion. However, other, more complex ways to bookmark and cancel aliasing can be used.
[0115] Some details of the arithmetic decoder 230 will be described below. The arithmetic decoder 230 includes the most significant bitplan determining module 282 which is configured to receive the arithmetic code word acod_m [pki] [m] describing the m value of the most significant bitplan. The most significant bitplan determination module 284 may be configured to use a cumulative frequency table from a set containing many of the 96 cumulative frequency tables to obtain the m value of the most significant bitplan from the arithmetic code word "acod_m [pki] [m]".
[0116] The most significant bitplan determining module 284 is configured to obtain the most significant bitplan value 286 of one or more spectral values based on the code word acod_m. The arithmetic decoder 230 includes a module of determining a less significant bitplan, which is configured to receive one or more code words "acod_r" representing one or more less significant bitplans of spectral value. Accordingly, the less-significant bitplan determining module 288 is configured to provide decoded values 290 of one or more less-significant bitplans. The audio decoder 200 also includes a bitplan combining module 292 that is configured to receive the decoded values 286 of the most significant bitplan of one or more spectral values and the decoded values 290 of one or more less significant bitplans of spectral values if such less significant bitplans are available for current spectral values. Accordingly, the bitplan combining module 292 provides decoded spectral values that are part of the decoded audio representation 232 in the frequency domain. Naturally, the arithmetic decoder 230 is typically configured to provide multiple spectral values to obtain a full set of decoded spectral values associated with the current audio content frame.
[0117] The arithmetic decoder 230 further includes a cumulative frequency table selection module 296 that is configured to select one of 96 cumulative frequency tables depending on a state index 298 describing the state of the arithmetic decoder. The arithmetic decoder 230 further includes a status tracking module 299 that is configured to track the decoder arithmetic state depending on previously decoded spectral values. The state information optionally can be restored to the default state of the state information in response to the initial state restore information 224. Accordingly, the cumulative frequency table selection module 296 is configured to provide an index (e.g. pki) the selected cumulative frequency table or the selected cumulative frequency table itself or for the decoding of the m-value of the most significant bitplan depending on the code word "acod_m".
[0118] To summarize the functions of the audio decoder 200, the audio decoder 200 is configured to receive a bit rate efficiently coded audio representation 222 in the frequency domain and to obtain, based on it, a decoded audio representation in the frequency domain. In the arithmetic decoder 230, which is used to obtain a decoded audio representation 232 in the frequency domain based on the encoded audio representation 222 in the frequency domain, the probability of different combinations of the values of the most significant bitplan of adjacent spectral values is used by using the arithmetic decoder 280, which is configured to application of the cumulative frequency table. In other words, statistical relationships between spectral values are used by choosing different cumulative frequency tables from a set containing 96 different cumulative frequency tables, depending on the state index 298, which is obtained by observing previously calculated decoded spectral values.
[0119] It should be noted that the status tracking module 299 may be identical to or may take over the functionality of the status tracking module 826, the status tracking module 1126 or the status tracking module 1326. The cumulative frequency table selection module 296 may be identical to or taking over the functionality of the mapping rule selection module 828, the mapping rule selection module 1128 or the mapping rule selection module 1328. The most significant bitplan determining module 284 may be identical to or taking over the functionality of the spectral value determination module 824.
10. Overview of the noiseless spectral coding tool [0120] Details of the coding and decoding algorithm that is implemented, for example, by the arithmetic encoder 170 and the arithmetic decoder 230, will be explained below.
[0121] Emphasis is placed on the description of the decoding algorithm. It should be noted, however, that the corresponding coding algorithm may be implemented according to the description of the decoding algorithm, in which the mapping between the coded and decoded spectral values is inverted and in which the calculation of the index value of the mapping rule is substantially identical. In the encoder, the encoded spectral values take the place of the decoded spectral values. Also, the spectral values to be encoded take the place of the spectral values to be decoded.
[0122] It should be noted that decoding, which will be discussed below, is used to enable so-called "Spectral noiseless coding", typically, processed, scaled and quantized spectral values. Noise spectral coding is used in the coding / decoding concept or any other audio coding / decoding concept to further reduce the quantized spectrum redundancy that is obtained, for example, by an energy-thickening converter in the time domain to the frequency domain. The method of spectral noise-free coding that is used in embodiments of the invention is based on arithmetic coding in connection with a dynamically-fitting context. [0123] In some embodiments of the invention, the noiseless spectral coding method is based on 2-fold, i.e. two adjacent spectral coefficients are combined. Each 2-fold is divided into a sign, the most significant 2-bit flap and the other less significant bitplans. Noiseless coding for the most significant 2-bit m patch uses context-dependent cumulative frequency tables obtained from four previously decoded 2-folds. Noiseless coding is powered by quantized spectral values and uses context-dependent cumulative frequency tables from four previously decoded adjacent 2-folds. In this case, the neighborhood is taken into account both in time and frequency, as shown in Fig. 4. Cumulative frequency tables (which will be explained below) are then used by the arithmetic encoder to generate variable length binary code (and by the arithmetic decoder to obtain decoded values from variable length binary code). [0124] For example, the arithmetic encoder 170 produces 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 the probability of the interval in which the set of symbols lies to the code word.
[0125] The noiseless coding of the remaining less significant bitplan r uses a single cumulative frequency table. For example, the cumulative frequencies correspond to a homogeneous symbol distribution appearing in less-significant bit lobes, i.e., it is expected that 0 or 1 will appear in less-significant bit-lobes.
[0126] Below, another brief overview of the spectral noiseless coding tool will be given. Spectral noiseless coding is used to further reduce the redundancy of quantized spectrum. The method of spectral noiseless coding is based on arithmetic coding in combination with a dynamically fitted context. Noiseless coding is powered by quantized spectral values and uses context-dependent cumulative frequency tables derived, for example, from four previously decoded adjacent 2-fold spectral values. In this case, the neighborhood is taken into account both in time and frequency, as shown in Fig. 4. The cumulative frequency tables are then used by the arithmetic encoder to generate variable length binary code.
[0127] The arithmetic encoder produces binary code for a given set of symbols and their respective probabilities. The binary code is generated by mapping the probability range in which the symbol set lies to the code word.
11. The decoding process
11.1 Overview of the decoding process [0128] In the following an overview of the spectral value coding process will be provided with reference to Fig. 3, which shows a code representation of the pseudo program code of the decoding process of multiple spectral values.
[0129] The process of decoding multiple spectral values includes initializing 310 context. Initializing 310 context involves obtaining the current context from the previous context using the function "arith_map_context (N, arith_reset_flag)". Retrieving the current context from the previous context may selectively involve restoring the context to its original state. Both restoring the context to its original state and obtaining the current context from the previous context will be discussed below.
[0130] The decoding of multiple spectral values also includes iterating the decoding of the spectral value 312 and the context update 314, which context update is performed by the function "arith_update_context (i, a, b)", which is described below. Decoding 312 spectral values and updating context 312 are repeated 1g / 2 times, where 1g / 2 is the number of 2-fold spectral values to be decoded (e.g. for an audio frame) unless the so-called "ARITH_STOP" symbol is detected. In addition, decoding the set of 1g spectral values also includes decoding the character 312 and final step 315 ..
[0131] Decoding spectral values 312 includes calculating context values 312a, decoding the most significant bitplan 312b, detecting the arithmetic stop symbol 312c, adding the less significant bitplan 312d, and updating the matrix 312e.
[0132] Calculating 312a of the state value includes invoking the function "arith_get_context (c, i, N)" as shown for example in Figs. 5c or 5d. Accordingly, the numeric current c (state) value of the context is provided as the return value of the function call "arith_get_context (c, i, N)". As you can see, the numeric previous context value (also designated "c"), which acts as the input variable for the "arith_get_context (c, i, N)" function, is updated to return the numeric current value of the context c.
[0133] The decoding 312b of the most significant bitplan includes iteratively executing the algorithm 312ba, decoding and obtaining the values a, b from the resulting m value of algorithm 312ba. In preparing the 312ba algorithm, the variable lev is initialized to zero. The 312ba algorithm is repeated until the "break" instruction (or condition) is reached. The 312ba algorithm involves calculating the "pki" status index (which also acts as a cumulative frequency table index) depending on the numerical current c value of the context, as well as depending on the "esc_nb" level value using the "arith_get_pk ()" function, which is discussed below (and whose embodiments are shown for example in Figs. 5e and 5f). The 312ba algorithm also includes the selection of a cumulative frequency table depending on the "pki" status index, which is returned by calling the "arith_get_pk" function, where the "cum_freq" variable can be set to the initial "pki" address. The variable "cfl" can also be initialized to the length of the selected table (or sub-table) of cumulative frequencies, which is, for example, equal to the number of symbols in the alphabet, i.e. the number of different values that can be decoded. The length of all tables (or sub-tables) of cumulative frequencies from "ari_cf_m [pki = 0] [17]" to "ari_cf_m [pki = 95] [17]" available for decoding the m-value of the most significant bitplan is 17, because the decoded can be 16 different values for the most significant bitplan and symbol ("ARITH_ESCAPE").
[0134]. Then the m-value of the most significant bitplan can be obtained by executing the function "arith_decode ()", taking into account the selected cumulative frequency table (described by the variable "cum_freq" and the variable "cfl"). When obtaining the m-value of the most significant bitplan, the bits named "acod_m" of the bit stream 210 can be evaluated (see, for example, Fig 6g or Fig. 6h).
[0135] Algorithm 312ba also includes checking whether the m value of the most significant bitplan is equal to or not the escape symbol "ARITH_ESCAPE". If the m-value of the most significant bitplan is not equal to the arithmetic escape symbol, the 312ba algorithm is aborted (the "break" condition), and the other instructions of the 312ba algorithm are omitted in this case. Accordingly, the process is continued with setting the bi value and a value in step 312bb. In contrast, if the decoded value of m of the most significant bitplan is identical to the arithmetic escape symbol or "ARITH_ESCAPE", the level "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 seven. As mentioned, algorithm 312ba is then repeated until the m value of the most significant bitplan is different from the arithmetic escape symbol, using the modified context (because the input parameter of the function "arith_get_pk ()" is adapted depending on the value of the variable "esc_nb" ).
[0136] As soon as the most significant bitplan is decoded using a one-time execution or iterative execution of the 312ba algorithm, i.e. the m value of the most significant bitplan is decoded, other than the arithmetic escape symbol, the variable "b" of the spectral value is set to equal many (e.g. 2. the more significant bits of the m value of the most significant bitplan, and the variable 'a' of the spectral value is set to (e.g. 2) the lowest bits of the m value, the most significant bitplan. Details of this functionality can be seen, for example, under the reference number 312bb.
[0137] Then, in step 312c, it is checked if the arithmetic stop symbol is present. This is if the m-value of the most significant bitplan is zero and the variable "lev" is greater than zero. Accordingly, the arithmetic stop condition is signaled by the "atypical" condition in which the m value of the most significant bitplan is zero, and the variable "lev" indicates that the increased numeric weight is associated with the m value of the most significant bitplan. In other words, the arithmetic stop condition is detected if the bit stream indicates that an increased numeric weight, higher than the minimum numeric weight, should be given the value of the most significant bitplan that is equal to zero, which is a condition that does not appear in the coded normal situation . In other words, the arithmetic stop condition is signaled if the encoded arithmetic stop symbol is followed by the encoded value of 0, the most significant bitplan.
[0138] After assessing whether an arithmetic stop condition exists that is performed in step 212c, a less significant bitplan is obtained, for example as shown at reference 212d in Fig. 3. For each less significant bitplan, two binary values are decoded. One of the binary values is associated with the variable a (or the first spectral value of the short spectral values), and one of the binary values is associated with the variable b (or the second spectral value of the short spectral values). The number of less significant bitplans is denoted as the variable lev.
[0139] When decoding one or more minor bitplans (if any), it is iterative to implement algorithm 212da, the number of executions of algorithm 212da being determined by the variable "lev". It should be noted that the first iteration of the algorithm 212da is implemented based on the values of the variables a, b set in step 212bb. Further iterations of the 212da algorithm are to be implemented based on updated values of variables a, b.
[0140] At the beginning of the iteration, the cumulative frequency table is selected. Then arithmetic decoding is performed to obtain the value of variable r, where the value of variable r describes a plurality of less significant bits, e.g. one less significant bit associated with variable a and one less significant bit associated with variable b. The "ARITH_DECODE" function is used to obtain the r value, with the cumulative table "arith_cf_r" used for arithmetic decoding.
[0141] Then the values of the variables a and b are updated. For this purpose, the variable a is shifted to the 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 of r. The variable b is shifted to the left by one bit, and the least significant bit of the shifted variable b is set to the value defined by bit 1 of variable r, where bit 1 of variable r has the numerical weight of 2 in the binary representation of variable r. Algorithm 412b is then repeated until the least significant bits are decoded.
[0142] After decoding the least significant bitplans, the "x_ac_dec" matrix is updated in such a way that the values of the variables a, b are stored in entries of said matrix with matrix indexes 2 * and 2 * and + 1.
[0143] Next, the context status is updated by calling the function "arith_update_context (i, a, b)", the details of which will be explained below with reference to Fig. 5g.
[0144] Then, after updating the context state, which is implemented in step 313, algorithms 312 and 313 are repeated until the current rolling variable reaches 1g / 2 or an arithmetic stop state is detected.
[0145] then, the final algorithm "arith_finish ()" is executed, as can be seen at reference number 315. Details of the final algorithm "arith_finish ()" will be described below with reference to Fig. 5m.
[0146] Then, after the final algorithm 315, the characters of the spectral values are decoded using the algorithm 314. As can be seen, the characters of the spectral values that are different from zero are individually encoded. In the algorithm 314, characters are read for all spectral values having indices and between i = 0 and i = 1g-1, which are nonzero. For each non-zero spectral value having a spectral value index and between i = 0 and i = 1g-1, the 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 1, the sign of said spectral value is inverted. For this purpose, access to the "x_ac_dec" matrix is provided both to determine whether the spectral value having the index i is zero and to update the sign of the decoded spectral values. However, it should be noted that the characters of the variables a, b are left unchanged in the 314 character decoding.
[0147] By implementing the final algorithm 315 before decoding 314 characters, it is possible to reset all bins after the symbol ARITH_STOP.
[0148] It should be noted here that the concept of obtaining values of less significant bitplans is not particularly important in some embodiments of the present invention. In some embodiments, the decoding of any minor bitplans may be omitted. Alternatively, different decoding algorithms can be used for this purpose.
11.2 Decoding order according to Fig. 4 [0149] In the following the order of decoding spectral values will be described.
[0150] The quantized "x_ac_dec []" spectral coefficients are noiselessly coded and transmitted (e.g., in the bit stream) starting from the lowest frequency factor and moving to the highest frequency factor.
As a result, the quantized spectral coefficients are noiselessly decoded starting from the lowest frequency coefficient and moving to the highest frequency coefficient. The quantized spectral coefficients are decoded by groups of two consecutive (e.g. neighboring in the frequency) coefficients a and b collected in the so-called 2-fold (a , b) (also designated as {a, b}). It should be noted here that quantized spectral coefficients are sometimes also labeled "qdec".
[0152] Decoded "x_ac_dec []" coefficients for frequency domain mode (e.g. decoded coefficients for advanced coded audio, for example obtained using modified discrete cosine transformation as discussed in ISO / IEC 14496, part 3, subpart 4) are then stored in the matrix "x_ac_quant [g] [win] [sfb] [bin ] ", The order in which the wordless coding code is sent is that when they are decoded in the order received and stored in the matrix," bin "is the fastest-growing index, and" g "is the slowest-growing index. In the code word, the order of decoding is a, b.
[0153] The decoded "x_ac_dec []" coefficients from the transform-coded excitation (TCX) are stored, for example, directly in the "x_tcx_invquant [win] [bin]" matrix, and the order of transmission of the words of the noiseless coding code is that when they are decoded in the order received and stored in the matrix, "bin" is the fastest-growing index and "win" is the slowest-growing index. In the code word, the decoding order is a, b. In other words, if the spectral values describe the transform coded excitation of the linear prediction filter of the speech encoder, the spectral values a, b are associated with the adjacent and increasing frequencies of the transform coded excitation. Spectral coefficients associated with a lower frequency are typically encoded and decoded before the spectral coefficients associated with a higher frequency.
[0154] It is noteworthy that the audio decoder 200 can be configured to use a decoded audio representation 232 in the frequency domain that is provided by the arithmetic decoder 230, both to "directly" generate a time domain audio signal representation using domain transformation frequency to time domain, and for "indirectly" providing a time domain audio representation using both a frequency domain decoder and time domain filter and a linear prediction filter excited by the frequency domain to time domain output signal. In other words, the arithmetic decoder, whose functions are discussed in detail here, is suitable for decoding spectral values of the representation in the time-frequency domain of audio content encoded in the frequency domain and for providing a time-frequency representation of the excitation signal for the linear prediction filter adapted for decoding (or synthesizing) a speech signal encoded in the field of linear prediction. Thus, the arithmetic decoder is suitable for use in an audio decoder that is capable of handling both audio content encoded in the frequency domain and audio content encoded in the linear-frequency prediction domain (linear prediction mode of transformed coded excitation).
11.3 Initialization of the context according to Figs. 5a and 5b [0156] In the following, initialization of the context (also denoted as "context mapping") which is implemented in step 310 will be discussed.
[0157] Initialization of the context includes mapping between the past context and the current context according to the algorithm "arith_map_context ()", the first example of which is shown in Fig. 5a, and the second example is shown in Fig. 5b.
[0158] As can be seen, the current context is stored in the global variable "q [2] [n_context]" which takes the form of a matrix having the first dimension 2 and the second dimension "n_context". The past context may optionally (but not necessarily) be stored in the variable "qs [n_context]", which takes the form of a table having the size "n_context" (if used).
[0159] Referring to the exemplary algorithm "arith_map_context" in Fig. 5a, the input variable N describes the length of the current window, and the input variable "arith_reset_flag" indicates whether the context should be reset. In addition, the global variable "previous_N" describes the length of the previous window. It should be noted here that typically the number of spectral values associated with a window is at least approximately equal to half the length of said window in time-domain samples. Furthermore, it should be noted that the number of 2-fold spectral values is, as a result, at least approximately one quarter of the length of said window in time-domain samples.
[0160] Referring to the example of Fig. 5a, context mapping may be implemented according to the algorithm "arith_map_context ()". It should be noted here that the function "arith_map_context ()" sets the entries "q [0] [j]" of the current context matrix q to zero for j = 0 to j = N / 4-1 if the flag "arith_reset_flag" is active and with this indicates that the context should be reset. Otherwise, i.e. if the "arith_reset_flag" flag is inactive, the entries "q [0] [j]" of the matrix q of the current context are derived from the entries "q [1] [k]" of the matrix q of the current context. Note that the function "arith_map_context ()" according to Fig. 5a sets the entries "q [0] [j]" of the matrix q of the current context to the values of "q [1] [k]" of the matrix q of the current context, if the number of spectral values associated with current (e.g. frequency-coded audio frame is identical to the number of spectral values associated with the previous audio frame for j = k = 0 to j = k = N / 4-1.
[0161] A more complex mapping is implemented if the number of spectral values associated with the current audio frame is different from the number of spectral values associated with the previous audio frame. However, the details regarding the mapping in this case are not particularly relevant to the idea of the present invention, so for details we refer to the pseudo program code in Fig. 5a.
[0162] Furthermore, the initialization value for the numeric current value of the context c is returned by the function "arith_map_context ()". This initialization value is for example equal to the value of the entry "q [0] [0]" shifted to the left by 12 bits. Accordingly, the numeric (current) c value of the context is correctly initialized for iterative update.
[0163] In addition, Fig. 5b shows another example of the "arith_map_context ()" algorithm, which can be used alternatively. For details, please refer to the pseudo program code in Fig. 5b.
[0164] In summary of the above, the "arith_reset_flag" flag determines whether the context needs to be reset. If the flag is TRUE, the reset 500 algorithm is invoked, the algorithm "arith_map_context ()". However, alternatively, if the "arith_reset_flag" flag is inactive (indicating that no context reset should be performed), the decoding operation begins with an initialization phase in which the vector (or matrix) q of the context element is updated by copying and mapping the previous context elements frame stored in q [1] [] to q [0] []. Context elements wq are stored in 4 bits per 2 times. The copying and / or mapping of the context element is carried out in the 500b sub-algorithm.
[0165] In the example of Fig. 5b, the decoding operation begins with an initialization phase in which the mapping is performed between the stored past context in qs and the context of the current frame q. The past context of qs is stored in 2 bits per frequency line.
11.4 Calculation of state values according to Figs. 5c and 5d [0166] In the following, the calculation of the state value 312a will be described in more detail. [0167] The first exemplary algorithm will be described with reference to Fig. 5c and the second exemplary algorithm will be described with reference to Fig. 5d.
[0168] It should be noted that the numerical current value of the context c (shown in Fig. 3) can be obtained as a return value of the function "arith_get_context (c, i, N)", whose representation of the pseudo-program code is shown in Fig. 5c. Alternatively, however, the numerical current value of c of the context can be obtained as the return value of the function "arith_get_context (c, i)", whose representation of the pseudo-program code is shown in Fig. 5d.
[0169] Regarding the calculation of the state value, we will also refer to Fig. 4, which shows the context used for estimating the state, i.e. for calculating the numerical current value of the context c. Fig. 4 shows a 2-dimensional representation of spectral values, both in time and frequency. The abscissa axis 410 describes the time, and the ordinate axis 412 describes the frequency. As can be seen in Fig. 4, the short 420 spectral values to be decoded (preferably using the numerical current context value) are associated with the time index t0 and the frequency index i. As can be seen, for the time index t0, the tuples with frequency indexes i = 1, i = 2 and i = 3 are already decoded at the time the spectral values of the tuple 420 having the frequency index are to be decoded. As can be seen in Fig. 4, the spectral value 430 having the time index t0 and the frequency index i-1 is already decoded before the spectral values 420 is decoded, and the spectral values 430 are taken into account for the context that is used to decode the spectral values 420. Similarly, short 440 spectral values with time index t0-1 and frequency index i-1, short 450 spectral values with time index t0-1 and frequency index i, and short 460 spectral values with time index t0-1 and frequency index i + 1 are already decoded before the spectral values 420 are decoded and are included in the context determination that is used to decode the spectral values 420. The spectral values (coefficients) already decoded when the spectral values of the tuple 420 are decoded and taken into account for the context are shown in a shaded square. In contrast, some other spectral values already decoded (when the spectral values of the tuple 420 are decoded) but not included in the context (in decoding the spectral values of the tuple 420) are represented by squares with broken lines, and other spectral values (which are not they are still decoded when the spectral values of the tuple 420 are decoded) are shown in circles with dashed lines. Tuples represented by squares having dashed lines and tuples represented by circles with dashed lines are not used to determine the context for decoding spectral values of tuple 420.
[0170] However, it should be noted that some of those spectral values that are not used for the "regular" or "normal" context calculation for decoding the spectral values of the tuple 420 may, however, be evaluated for detecting a number of previously decoded adjacent spectral values that satisfy, individually or together, a pre-determined condition for their modules. Details on this issue will be discussed below.
[0171] Referring to Fig. 5c, details of the "arith_get_context (c, i, N)" algorithm will be described. Fig. 5c shows the functionality of said function "arith_get_context (c, i, N)" in the form of a pseudo-program code that uses the conventions of the well-known C language and / or C ++. This will describe some additional details about calculating the numerical current "c" value of the context, which is implemented by the "arith_get_context (c, i, N)" function.
[0172] It should be noted that the function "arith_get_context (c, i, N)" receives, as input variables, "old state context", which can be described by the numeric value of c of the context. The "arith_get_context (c, i, N)" function also receives, as an input variable, the index and, 2-fold spectral values to be decoded. Index and is typically a frequency index. The input variable N describes the length of the window for which the spectral values are decoded.
[0173] The function "arith_get_context (c, i, N)" provides as output, an updated version of the input variable c, which describes the updated state of the context and which can be included as a numeric current context value. In summary, the function "arith_get_context (c, i, N)" receives the numeric previous c value of the context as an input variable and provides an updated version of it, which is included as the numeric current value of the context. In addition, the "arith_get_context" function includes the variables i, N, and also reaches into the "global" matrix q [] [].
[0174] Considering the details of the function "arith_get_context (c, i, N)", it should be noted that the variable c, which initially represents the numerical previous value of the context in binary form, is shifted to the right by 4 bits in step 504a. Accordingly, the four least significant bits of the previous context value (represented by the input variable c) are removed. Also, the numeric weights of the other numeric bits of the previous context values are reduced, for example by a factor of 16.
[0175] Also, if the index i 2-fold is smaller than N / 4-1, i.e. it does not take the maximum value, the numeric current context value is modified in such a way that the value of the entry q [0] [i + 1] is added to bits 12 to 15 (i.e. bits having numeric
13 The weight of 2, 2, 2 and 2) the shifted context value that is obtained in step 504a. For this purpose, the entry q [0] [i + 1] of the matrix q [] [] (or more precisely, the binary representation of the value represented by said entry) is shifted to the left by 12 bits. The shifted version of the value represented by the entry q [0] [i + 1] is then added to the context value c, which is obtained in step 504a, i.e. to the bit-shifted (shifted to the right by 4 bits) numerical representation of the previous context value. It should be noted here that the entry q [0] [i + 1] of the matrix q [] [] represents the context sub-area value associated with the previous part of the audio content (e.g., the part of the audio content having the time index t0-1, defined with reference to Fig. 4) and at a higher frequency (e.g., a frequency having a frequency index i + 1, defined with reference to Fig. 4) than the short spectral values that are to be currently decoded (using the numeric current c value of the context derived by the function "arith_get_context (c, i, N)". In other words, if the short 420 spectral values are to be decoded using the numeric current value context, the entry q [0] [i + 1] can be based on a tuple of 460 previously decoded spectral values.
[0176] The selective addition of the entry q [0] [i + 1] of the matrix q [] [] (shifted to the left by 12 bits) is shown under reference numeral 504b. As can be seen, the addition of the value represented by the entry q [0] [i + 1] is only naturally performed if the frequency index i does not indicate a short spectral value having the highest frequency index i = N / 4-1.
[0177] Then, in step 504c, a Boolean AND operation is performed in which the value of the variable c is combined in the AND operation with a hexadecimal value of 0xFFF0 to obtain the updated value of the variable c. By performing such AND operation, the four least significant bits of the variable c are effectively set to zero.
[0178] In step 504d, the value of the entry q [0] [i-1] is added to the value of the variable c that is obtained in step 504c to thereby update the value of the variable c. However, said update of the variable c in step 504d is only implemented if the index and the 2-fold decode frequency are greater than zero. It should be noted that the entry q [0] [i-1] is a context subarea value based on a short of previously decoded spectral values of the current portion of the audio content for frequencies lower than the frequencies of the spectral values to be decoded using the numeric current context value. For example, the entry q [0] [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 we assume that the tuple 420 spectral values are to be decoded using numerical current context value returned by the current execution of the function "arith_get_context (c, i, N)".
[0179] In summary, bits 0, 1, 2 and 3 (i.e. the portion of the four least significant bits) of the numeric current context value are removed in step 504a by shifting them from the binary numerical representation of the previous context value. In addition, bits 12, 13, 14 and 15 of the shifted variable c (i.e., the numeric shifted previous context value) are set to take values defined by the context sub-area value q [0] [i + 1] in step 504b. Bits 0, 1, 2 and 3 of the shifted numeric current context value (i.e., bits 4, 5, 6 and 7 of the original numeric previous context value) are overwritten with the value of the context subarea q [0] [i-1] in steps 504c and 504d.
[0180] As a result, it can be said that bits 0 to 3 of the numeric previous context value represent the value of the sub-area associated with the tuple 432 of spectral values, bits 4 to 7 of the numeric previous value of the context represent the value of the context sub-area associated with the tuple of 434 previously decoded spectral values . bits 8 to 11 of the numeric previous context value represent the context subarea value associated with the tuple of 440 previously decoded spectral values, and bits 12 to 15 of the numeric previous context value represent the context subarea value associated with the tuple of 450 previously decoded spectral values. The numeric previous context value that is entered into the "arith_get_context (c, i, N)" function is associated with decoding 430 spectral values.
[0181] The numeric current context value that is obtained as the output variable of the function "arith_get_context (c, i, N)" is associated with the decoding of a short of 420 spectral values. Correspondingly, bits 0 to 3 of the current numerical context values describe the value of the context sub area associated with the tuple 430 of spectral values, bits 4 to 7 of the numeric current context value describe the value of the context sub area associated with the tuple of 440 spectral values, bits 8 to 11 of the numeric current context value describe the numerical value of the context sub-area associated with the tuple 450 of the spectral value, and bits 12 to 15 of the numeric current context value describe the numerical value of the context sub-area associated with the tuple 460 spectral values. Thus, it can be seen that the portion of the numeric current context value, namely bits 8 to 15 of the numeric previous context value, are also included in the numeric current context value, as are bits 4 to 11 of the numeric current context value. In contrast, bits 0 to 7 of the numeric current context value are removed when obtaining the numeric representation of the current context value from the numeric representation of the previous context value.
[0182] At step 504e, the variable c that represents the numeric current context value is selectively updated if the index and the 2-fold decode frequencies are greater than the predetermined number, for example 3. In this case, i.e. if and is greater from 3, it is determined whether the sum of the values of the sub-area of the context q [1] [i-3], q [1] [i-2] and q [1] [i-1] is less than (or equal to) the preset value, for example, 5. If it is determined that the sum of the listed sub-context values is smaller than the predefined value mentioned, a hexadecimal value, for example, 0x10000, is added to the variable c. Accordingly, the variable c is set such that the variable c indicates whether a condition exists, in which the context sub-area values q [1] [i-3], q [1] [i-2] and q [1] [i-1] contain a particularly small sum value. For example, bit 16 of the current numerical context value may act as a flag to indicate such a state.
[0183] In summary, the return value of the function "arith_get_context (c, i, N)" is determined by steps 504a, 504b, 504c, 504d and 504e, wherein the numerical current context value is derived from the numeric previous context value in steps 504a, 504b , 504c and 504d, and wherein a flag indicating the surroundings of previously decoded spectral values, having on average particularly low absolute values, is obtained in step 504e and added to variable c. Accordingly, the value of the variable c obtained in steps 504a, 504b, 504c, 504d is returned in step 504f as the return value of the function "arith_get_context (c, i, N)" if the condition checked in step 504e is not met. In contrast, the value of the variable c obtained in steps 504a, 504b, 504c and 504d is increased by a hexadecimal value of 0x10000, and the result of this zoom operation is returned in step 504e if the condition checked in step 504e is met.
[0184] In summary of the above, it should be noted that the noiseless decoder outputs 2 times quantized unsigned quantitative spectral coefficients (as will be described in more detail below). First, the context status c is calculated based on the previously decoded spectral coefficients "surrounding" the 2-fold decode. In a preferred embodiment, the state (which is, for example, represented by the numeric context value) is incrementally updated using the context state of the last decoded 2-fold (which is designated as the previous numeric context value), including only two new 2-fold (e.g. 2-fold) 430 and 460). The state is encoded in 17 bits (e.g. using the numeric representation of the current context value) and is returned by the "arith_get_context ()" function. For further details, please refer to the pseudo program code representation in Fig. 5c.
[0185] Furthermore, it should be noted that the pseudo program code of the alternative embodiment of the function "arith_get_context ()" is shown in Fig. 5d. The function "arith_get_context (c, i)" according to Fig. 5d is similar to the function "arith_get_context (c, i, N)" according to Fig. 5c. However, the function "arith_get_context (c, i)" according to Fig. 5d does not include the special operation or decoding of spectral value tuples containing the index i = 0 of the minimum frequency or the index i = N / 4 of the maximum frequency.
11.5 Selection of the mapping rule [0186] In the following, the selection of the mapping rule, for example the cumulative frequency table, which describes the mapping of the code word value to the symbol code will be described. The selection of the mapping rule is made depending on the context state, which is described by the numeric current c value of the context.
11.5.1 Selection of the mapping rule using the algorithm according to Fig. 5e [0187] Below, the selection of the mapping rule using the function "arith_get_pk (c)" will be described. Note that the function "arith_get_pk ()" is called at the beginning of the sub-algorithm 312ba when decoding the value of the code "acod_m" to provide a tuple of spectral values. Note that the function "arith_get_pk (c)" is called with different arguments in different iterations of the 312b algorithm. For example, in the first iteration of algorithm 312b, the function "arith_get_pk (c)" is called with an argument that is equal to the numeric current value of the context c provided by the previous execution of the function "arith_get_context (c, i, N)" in step 312a. In contrast, in subsequent iterations of the 312ba sub-algorithm, the function "arith_get_pk (c)" is called with an argument that is the sum of the numeric current value of the context c provided by the function "arith_get_context (c, i, N)" in step 312a and bit shifted version of the value of the "esc_nb" variable, where the value of the "esc_nb" variable is shifted to the left by 17 bits. Thus, the numeric current c value of the context provided by the "arith_get_context (c, i, N)" function is used as the input value of the "arith_get_pk ()" function in the first iteration of the 312ba algorithm, i.e. when decoding relatively small spectral values. In contrast, when decoding relatively large spectral values, the input variable of the function "arith_get_pk ()" is modified such that the value of the variable "esc_nb" is included, as shown in Fig. 3.
[0188] Referring now to Fig. 5e, which shows a representation of the pseudo program code of the first embodiment of the function "arith_get_pk (c)", it should be noted that the function "arith_get_pk ()" receives the variable c as an input value, the variable c describes the state context and the input variable c of the function "arith_get_pk ()" is equal to the numeric current value of the context provided as the return variable by the function "arith_get_context ()" at least in some situations. In addition, it should be noted that the function "arith_get_pk ()" provides, as an output variable, the "pki" variable, which describes the probability model index and which can be considered as the index value of the mapping rule. Referring to Fig. 5e, it can be seen that the function "arith_get_pk ()" includes initialization of the variable 506a, wherein the variable "i_min" is initialized to take the value -1. Similarly, the variable i is set to be equal to the variable "i_min", so that the variable i is also initialized with the value -1. The variable "i_max" is initialized to take a value that is 1 less than the number of table entries "ari_lookup_m []" (whose details will be described with reference to Figs. 21 (1) and 21 (2)). thanks to this, the variables "i_min" and "i_max" define the range.
[0189] Then a search 506b is performed to identify an index value that indicates the table entry "ari_hash_m", such that the value of the input variable c of the function "arith_get_pk ()" lies within the range defined by said entry and the neighbor entry.
[0190] During the search 506b, the subalgorithm 506ba is repeated when the difference between the "i_max" and "i_min" variables is greater than 1. In the 506ba subalgorithm, the variable i is set equal to the arithmetic mean value of the variables "i_min" and "i_max". As a result, the variable i indicates the table entry "ari_hash_m []" in the middle of the table interval defined by the variables "i_min" and "i_max". Then the variable j is set to be equal to the value of the entry "ari_hash_m [i]" of the table "ari_hash_m []". Thanks to this, the variable j assumes the value defined by the table entry "ari_hash_m []", which entry lies in the middle of the table interval defined by the variables "i_min" and "i_max". Then the interval 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 the state value defined by the highest bits of the entry "j = ari_hash_m [i]" of the table "ari_hash_m []" .
For example, "upper bits" (bit 8 and higher) of table entries "ari_hash_m []" describe significant state values. Accordingly, the variable "j >> 8" describes the significant state value represented by the entry "j = ari_hash_m [i]" of the table indicated by the value and index of the hash table. Accordingly, if the value of the variable c is less than the value of "j >> 8" it means that the state value described by the variable c is less than the significant value of the state described by the entry "ari_hash_m [i]" of the table "ari_hash_m []". In this case, the value of the variable "i_max" is set equal to the value of the variable i, which in turn results in the size of the range defined by "i_min" and "i_max" being reduced, with the new range approximately equal to the lower half of the previous range . If it is found that the 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 the significant value of the state described by the entry "ari_hash_m [i]" of the matrix " ari_hash_m [] ", the value of the variable" i_min "is set to be equal to the value of the variable i. Accordingly, the size of the range defined by the values of the variables "i_min" and "i_max" is reduced to approximately half the size of the previous range, defined by the previous values of the variables "i_min" and "i_max". More specifically, the range defined by the updated value of the variable 'i_min' and by the previous (unchanged) value of the variable 'i_max' is approximately equal to the upper half of the previous interval in the case where the value of variable c is greater than the significant value of the state defined by the entry 'ari_hash_m [ and]".
[0191] However, if it is found that the context value described by the input variable c of the algorithm "arith_get_pk ()" is equal to the significant state value defined by the entry "ari_hash_m [i]" (i.e. c == (j >> 8)), the mapping rule index value defined by the lowest 8 bits of the entry "ari_hash_m [i]" is returned as the return value of the function "arith_get_pk ()" (instruction "return (j & 0xFF)").
[0192] To summarize the above, the entry "ari_hash_m [i]" whose highest bits (bits 8 and higher) describe a significant state value is evaluated in each iteration 506ba, and the context value (or numeric current context value) described by the input function variable c "Arith_get_pk ()" is compared with the significant value described by the listed "ari_hash_m [i]" entry of the table. If the context value represented by the input variable c is less than the significant state value represented by the table's "ari_hash_m [i]" entry, the upper limit (described by the value "i_max") of the table interval is reduced, and if the context value described by the input variable c is greater than the significant value described by the entry "ari_hash_m [i]" of the table, the lower limit (which is described by the value of the variable "i_min") of the table interval is increased. In both of these cases, the 506ba subalgorithm is repeated as long as the interval size (defined by the difference between "i_max" and "i_min") is not less than or equal to 1. In contrast, if the context value described by the variable c is equal to a significant state value described by the table's "ari_hash_m [i]" entry, the function "arith_get_pk ()" is aborted, the return value is defined by the lowest 8 bits of the table's "ari_hash_m [i]" entry.
[0193] However, if the 506b search is completed because the size of the interval 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 the entry "ari_lookup_m [i_max]" "ari_lookup_m []" table, which can be seen under reference number 506c. Accordingly, the "ari_hash_m []" table entries define both significant state values and range limits. In the 506ba sub-algorithm, the "i_min" and "i_max" limits of the search interval are iteratively matched in such a way that the entry "ari_hash_m [i]" of the table "ari_hash_m []" whose index and hash table lies, at least approximately, in the middle of the interval a search defined by the "i_min" and "i_max" range limits, at least approximates the context value described by the variable c. Thanks to this, we obtain that the context value described by the input variable c lies within the range defined by "ari_hash_m [i_min]" and "ari_hash_m [i_max]" after the iteration of the 506ba subalgorithm is completed, provided that the context value described by the input variable c is not equal to the state value described by the table entry "ari_hash_m []".
[0194] However, if the iterative repetition of subalgorithm 506ba is completed because the size of the interval (defined by "i_max" - "i_min") reaches its minimum value, it is assumed that the context value described by the input variable c is not a significant state value. In this case, the index "i_max", which means the upper boundary of the range, is used anyway. The upper value of the "i_max" interval that will be reached in the last iteration of the 506ba sub-algorithm is reused as the table index value for access to the "ari_lookup_m" table. The "ari_lookup_m []" table describes the mapping rule index values associated with the ranges of many adjacent numeric context values. The intervals associated with the mapping rule index values described by the "ari_lookup_m []" table entries are defined by the significant state values described by the "ari_hash_m []" table entries. The "ari_hash_m" table entries define both significant state values and range limits, of neighboring numeric context values. When executing the 506ba algorithm, it is determined whether the numerical context value described by the input variable c is equal to a significant state value, and if not, it is determined in which range of numerical context values (from many intervals whose boundaries are defined by significant state values) The context value described by the input variable c. Thanks to this, algorithm 506b performs a dual role of determining whether the input variable c describes a significant state value, and if not, identifying the range bounded by the significant state values in which the context value represented by the input variable c lies. Accordingly, the algorithm 506e is particularly efficient and only requires a relatively small number of table accesses.
[0195] In summary of the above, the context c of the context determines the cumulative frequency table used to decode the most significant 2-bit slice m. Mapping zc to the appropriate "pki" index of the cumulative frequency table is performed by the "arith_get_pk ()" function. The code representation of the pseudo-program of said function "arith_get_pk ()" is explained with reference to Fig. 5e.
[0160] Still summarizing the above, the value of m is decoded using the function "arith_decode ()" (which is described in more detail below) referenced with the table "arith_cf_m [pki] []" cumulative frequencies, where "pki" corresponds to the index ( also denoting the value of the mapping rule index) returned by the function "arith_get_pk ()", which is described with reference to Fig. 5e.
11.5.2 Selection of the mapping rule using the algorithm according to Fig. 5f [0197] Below, another embodiment of the "arith_get_pk ()" algorithm for selecting the mapping rule will be described with reference to Fig. 5f, which shows a representation of the pseudo program code of such an algorithm, which can be used for decoding short spectral values. The algorithm according to Fig. 5f can be considered as the optimized version (e.g. optimized speed version) of the "get_pk ()" algorithm or the "arith_get_pk ()" algorithm.
[0198] The "arith_get_pk ()" algorithm according to Fig. 5f receives, as an input variable, the variable c, which describes the state of the context. The input variable c may, for example, represent the numeric current value of the context.
[0199] The "arith_get_pk ()" algorithm provides, as an output variable, a "pki" variable that describes the probability distribution index (or probability model) associated with the context state described by the input variable c. The "pki" variable can be, for example, index value of the mapping policy index.
[0200] The algorithm according to Fig. 5f includes defining the context of the "i_diff []" matrix. As you can see, the first entry of the matrix "i_diff []" (having matrix index 0) is 299, and subsequent matrix entries (having matrix indexes 1 to 8) take the values 149, 74, 37, 18, 9, 4, 2 and 1. Accordingly, the size of the step selection of the "i_min" value of the hash table index is reduced with each iteration because the "i_diff []" matrix entries define the step sizes listed. For details, please refer to the following discussion.
[0201] However, different step sizes, e.g., different contents of the "i_diff []" matrix can actually be selected, however, the contents of the "i_diff []" matrix can naturally be matched to the size of the "ari_hash_m [i]" hash table.
[0202] It should be noted that the variable "i_min" is initialized to be 0 at the beginning of the "arith_get_pk ()" algorithm.
[0203] In the initialization step 508a, the variable s is initialized depending on the input variable c, wherein the numerical representation of the variable c is shifted to the left by 8 bits to obtain the numerical representation of the variable s.
[0204] Next, a table search 508b is performed to identify the "i_min" value of the hash table index of the hash table entry "ari_hash_m []", so that the context value described by the context value c lies within a range which is limited by the context value described by "ari_hash_m [i_min]" entry of the hash table, and context value described by another "ari_hash_m" entry of the hash table, which other "ari_hash_m" entry is adjacent (in the sense of the hash table index value) to the "ari_hash_m [i_min]" entry of the hash table. This allows the 508b algorithm to determine the "i_min" value of the hash table index indicating the entry "j = ari_hash_m [i_min]" of the hash table "ari_hash_m []", so that the entry "ari_hash_m [i_min]" of the hash table at least approximates the context value described by the input variable c.
[0205] Searching table 508b includes iteratively executing subalgorithm 508ba, wherein subalgorithm 508ba performs a predetermined number, e.g., nine, iterations. In the first stage of the 508ba subalgorithm, the variable i is set to a value that is equal to the sum of the values of the variable "i_min" and the value of the entry "i_diff []" of the table. It should be noted here that k is a moving variable that is increased, starting from the initial value k = 0, with each iteration of the 508ba subalgorithm. The "i_diff []" matrix defines the preset increment values, with the increment values decreasing as the table index k increases, i.e. as the number of iterations increases.
[0206] In the second stage of sub-algorithm 508ba, the value of the entry "ari_hash_m []" is copied to the variable j. Preferably, the highest bits of the table entries, the table "ari_hash_m []" describe significant context values of the numeric context value, and the lowest bits (bits 0 to 7) entries in the table "ari_hash_m []" describe the values of the mapping rule index associated with the relevant significant state values.
[0207] In the third step of sub-algorithm 508ba, the value of the variable s is compared with the value of the variable j, and the variable "i_min" is selectively set to the value of "i + 1" if the value of the variable s is greater than the value of the variable j. Then, the first stage , the second stage and the third stage of the 508ba subalgorithm are repeated for a predetermined number of times, e.g. nine times. Thanks to this, in each implementation of the 508ba sub-algorithm, 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 index i_min + i_diff [] of the hash table is smaller than the value of the context described by the variable c. Accordingly, the "i_min" value of the hash table index is (iteratively) increased in each execution of the 508ba sub-algorithm, if (and only if) the context value described by the input variable c and as a result by the variable s is greater than the context value described by the entry " ari_hash_m [i + i_min = diff [k]]. "
[0208] Furthermore, it should be noted that only a single comparison, namely a comparison of whether the value of the variable s is greater than the value of the variable j, is made in each implementation of the sub-algorithm 508ba. Accordingly, the 508ba algorithm is particularly computationally efficient. In addition, it should be noted that there are various possible results as to the final value of the variable "i_min". For example, it is possible that the value of the variable "i_min" after executing the 512ba sub-algorithm is such that the context value described by the "ari_hash_m [i_min]" entry of the hash table is smaller than the context value described by the input variable ci that the context value described by the entry "ari_hash_m [ i_min + 1] "hash table is greater than the context value described by the input variable c. Alternatively, it may happen that after the last execution of the 508ba sub-algorithm, the context value described by the "ari_hash_m [i_min-1]" entry of the hash table is smaller than the context value described by the input variable ci that the context value described by the entry "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 "ari_hash_m [i_min]" entry of the hash table is identical to the context value described by the input variable c.
[0209] For this reason, feedback value 508c is implemented based on the decision. The variable j is set to take the value of the "ari_hash_m [i_min]" entry in the hash table. It is then determined whether the context value described by the input variable c (as well as by the variable s) is greater than the context value described by the entry "ari_hash_m [i_min]" (the first case defined by the condition "s> j") or the context value described by the input variable c is smaller than the context value described by the entry "ari_hash_m [i_min]" of the hash table (the second case is defined by the condition "c <j>> 8"), or whether the context value described by the input variable c is equal to the context value described by the entry "ari_hash_m [i_min]" (third case).
[0210] In the first case, (s> j), the entry "ari_lookup_m [i_min + 1]" of the table "ari_lookup_m []" indicated by the value "i_min + 1" of the table index is returned as the output value of the function "arith_get_pk ()". In the second case, (c <(j >> 8)), the entry "ari_lookup_m [i_min]" of the table "ari_lookup_m []" indicated by the "i_min" value of the table index is returned as the return value of the function "arith_get_pk ()". In the third case (i.e. if the context value described by the input variable c is equal to the significant state value described by the entry "ari_hash_m [i_min]" of the table) the value of the mapping rule index described by the lowest 8 bits of the entry "ari_hash_m [i_min]" of the hash table is returned as the return value of the function "arith_get_pk () ".
[0211] In summary of the above, a particularly simple table search is performed in step 508b, in which table search provides the value of the variable, variable "i_min" without distinguishing whether the context value described by the input variable c is equal to a significant state value defined by one of the state entries table "ari_hash_m []" or not. In step 508c, which is performed after searching the table 508b, the module relationship between the context value described by the input variable c and the significant state value described by the entry "ari_hash_m [i_min]" of the hash table is evaluated and then the return value of the function "arith_get_pk ()" is selected depending on the result of the said assessment, where the value of the variable "i_min", which is determined in the 508b assessment of the table, is taken into account in order to select the index value of the mapping rule, even if the context value described by the input variable c is different from the significant state value described by the "ari_hash_m [i_min]" entry of the hash table.
[0212] Furthermore, it should be noted that the comparison in the algorithm should preferably (or alternatively) be made between the index c (numeric context value) of the context ij = ari_hash_m [i] >> 8. In fact, each table entry "ari_hash_m []" represents a context index, coded beyond the 8th bit, and its corresponding probability model, coded in the first 8 bits (least significant bits). In the current implementation, we are mainly interested in answering the question whether the current context c is greater than ari_hash_m [i] >> 8, which is equivalent to detection, or s = c << 8 is also greater than ari_hash_m [i].
[0213] To summarize the above, once the context state is calculated (which, for example, can be achieved using the "arith_get_context (c, i, N)" algorithm according to Fig. 5c, or the "arith_get_context (c, i)" algorithm according to "arith_get_context (c, i, N) "according to Fig. 5d, the most significant 2-bit flap is decoded using the "arith_decode" algorithm (which will be described below) referenced with the appropriate cumulative frequency table corresponding to the probability model corresponding to the context. The correspondence is ensured by the function "arith_get_pk ()", for example the function "arith_get_pk ()", which has been discussed with reference to Fig. 5f.
11.6 Arithmetic decoding
11.6.1 Arithmetic decoding using the algorithm according to Fig. 5g [0214] Below, the functionality of the "arith_decode ()" function will be discussed in detail with reference to Fig. 5g.
[0215] The functionality of the "arith_decode ()" function will be discussed in detail below with reference to Fig. 5g. Note that the "arith_decode ()" function uses the helper "arith_first_symbol (void)" function, which returns TRUE (true) if it is the first symbol in the sequence and FALSE (not true) otherwise. The "arith_decode ()" function also uses the helper function "arith_get_next_bit (void)", which acquires and delivers the next bit of the bit stream.
[0216] In addition, the function "arith_decode ()" uses the global variables "low" "high" and "value". In addition, the function "arith_decode ()" receives, as an input variable, the variable "cum_freq []", which points towards the first entry or element (having element index or input index 0) of the selected cumulative frequency table or cumulative frequency sub-table. Also, the function "arith_decode ()" uses the input variable "cfl", which indicates the length of the selected cumulative frequency table or cumulative frequency sub-table labeled with the variable "cum_freq []".
[0217] The "arith_decode ()" function includes, in a first step, variable initialization 570a, which is performed if the auxiliary function "arith_first_symbol ()" indicates that the first symbol sequence symbol is decoded. Initializing value 550a initializes the variable "value" depending on many of the 16 bits, for example, which are obtained from the bit stream using the auxiliary function "arith_get_next_bit" in such a way that the variable "value" takes the value represented by the mentioned bits. Also, the variable "low" is initialized to take the value 0, and the variable "high" is initialized to take the value 65535.
[0218] In the second step 570b, the "range" variable is set to a value that is 1 greater than the difference between the "high" and "low" variable values. The variable "cum" is set to a value that represents the relative position of the value of the variable "value" between the value of the variable "low" and the value of the variable "high". Accordingly, the variable "cum" takes for example a value between 0 and 216 depending on the value of the variable "value".
[0219] The pointer p is initialized to a value that is less than 1 from the start address of the selected cumulative frequency table.
[0220] The "arith_decode ()" algorithm further includes iterative search 570c of the cumulative frequency table. The iterative search of the cumulative frequency table is repeated until the cfl variable is less than or equal to 1. In iterative 570c search of the cumulative frequency table, the indicator variable q is set to a value that is equal to the sum of the current value of the indicator variable p and half of the value of the variable cfl ". If the value of the entry * q of the selected cumulative frequency table whose entry is addressed by the variable q of the indicator is greater than the value of the variable "cum", the variable p of the indicator is set to the value of the variable q of the indicator and the variable "cfl" is increased. And finally, the variable "cfl" is shifted to the right by one bit, thus actually dividing the value of the variable "cfl" by 2 and bypassing the modulo part.
[0221] Thus, iterative search 570c of the cumulative frequency table compares the value of the "cum" variable with multiple entries of the selected cumulative frequency table to identify a range in the selected cumulative frequency table that is limited by the cumulative frequency table entries so that the cum value is in the identified range. Thus, the entries of the selected cumulative frequency table define the intervals in which the corresponding symbol value is associated with each of the intervals of the selected cumulative frequency table. Also, the widths of the intervals between two adjacent cumulative frequency table values define the probabilities of the symbols associated with said intervals, so that the selected cumulative frequency table in its entirety defines the probability distribution of different symbols (or symbol values). Details of the available cumulative frequency tables will be discussed below with reference to Fig. 23.
[0222] Referring again to Fig. 5g, the symbol value is obtained from the value of the indicator variable p, wherein the value of the symbol is obtained as indicated by reference numeral 570d. Thus, the difference between the value of the pointer variable p and the starting address "cum_freq" is evaluated to obtain the symbol value that is represented by the "symbol" variable.
[0223] The "arith_decode" algorithm also includes matching 570e of "high" and "low" variables. If the symbol value represented by the "symbol" variable is different from 0, the "high" variable is updated as indicated by reference numeral 570e. Also, the value of the variable "low" is updated as indicated by reference numeral 570e. The variable "high" is set to a value that is determined by the value of the variable "low", the variable "range" and the entry having the index "symbol-1" of the selected cumulative frequency table. The "low" variable is increased, with the increase module being determined by the "range" variable and the entry of the selected cumulative frequency table having the index "symbol".
[0224] Accordingly, the difference between the values of the variable "low" and "high" is adjusted depending on the numerical difference between two adjacent entries of the selected cumulative frequency table.
[0225] Accordingly, if a symbol value having a low probability is detected, the interval between the "low" and "high" variable values is reduced to a small width. In contrast, if the detected symbol value is relatively unlikely, the width of the interval between the values of the "low" and "high" variables is set to a relatively large value. Again, the width of the interval between the values of the variables "low" and "high" depends on the detected symbol and the corresponding entries of the cumulative frequency table. [0226] The "arith_decode ()" algorithm further includes a re-normalization of the 570f interval, during which the interval determined in step 570e is iteratively shifted and scaled to achieve "break" conditions. In the re-normalization of the 570f interval, selective downward 570fa operation is performed. If the variable "high" is less than 32768, nothing happens, and the re-normalization of the interval continues with the operation of 570fb increasing the size of the interval. However, if the variable "high" is not less than 32768 and the variable "low" is greater than or equal to 32768, the variables "values", "low" and "high" are all reduced by 32768, so that the range defined by the variables "low" and "high" is shifted down and in such a way that the value of the variable "value" is also shifted down. However, if it is determined that the value of the variable "high" is not less than 32768 and the variable "low" is not greater than or equal to 32768, and the variable "low" is greater than or equal to 16384, and the variable "high" is less than 49152, the variables 'value', 'low' and 'high' are all reduced by 16384, thus shifting down the range between the values of the variables 'high' and 'low' as well as the value of the variable 'value'. However, if none of the above conditions are met, the re-normalization of the interval is aborted.
[0227] However, if any of the above conditions that are evaluated in step 570fa are met, the interval 570fb increase operation is performed. In the 570fb operation of increasing the interval, the value of the variable "low" is doubled. Also, the value of the variable "high" is doubled and the doubling result is increased by 1. Also, the value of the variable "value" is doubled (shifted to the left by one bit), and the bit stream bit that is obtained by the auxiliary function "arith_get_next_bit" is used as the most significant bit. Accordingly, the size of the interval between the values of the "low" and "high" variables is approximately doubled, and the accuracy 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, ie until the interval between the "low" and "high" values is large enough.
[0228] As to the functionality of the "arith_decode ()" algorithm, it should be noted that the interval between the "low" and "high" variable values is reduced in step 570e depending on two adjacent cumulative frequency table entries to which the "cum_freq" variable refers . If the interval between two adjacent values of the selected cumulative frequency table is small, i.e. if the adjacent values are relatively close together, the interval between the values of the "low" and "high" variables that is obtained in step 570e will be relatively small. In contrast, if the adjacent cumulative frequency table entries are spaced apart, the interval between the "low" and "high" variable values that is obtained in step 570e will be relatively large.
[0229] As a result, if the interval between the "low" and "high" variable values obtained in step 570e is relatively small, a large number of steps to re-normalize the interval will be performed to scale the interval to "sufficient" (such way that none of the 570fa assessment conditions are met). Accordingly, a relatively large number of bits from the bit stream will be used to increase the accuracy of the "value" variable. If, by contrast, the size of the interval obtained in step 570e is relatively large, only a small number of repetitions of steps 570fa and 570fb of normalizing the interval will be required to re-normalize the interval between the values of the "low" and "high" variables to a "sufficient" size. Accordingly, only a relatively small number of bits from the bit stream will be used to increase the accuracy of the "value" variable and to prepare decoding of the next symbol.
[0230] To summarize the above, if a symbol is decoded that has a relatively high probability, and with which a large range is associated via the selected cumulative frequency table entries, only a relatively small number of bits will be read from the bit stream to allow the next symbol to be decoded. In contrast, if a decoded symbol that has a relatively low probability and with which a small range is associated via entries of the selected cumulative frequency table, a relatively large number of bits will be taken from the bit stream to prepare decoding of the next symbol. [0231] Accordingly, the cumulative frequency table entries reflect the probabilities of different symbols as well as reflect the number of bits required for decoding the symbol sequence. By changing the cumulative frequency table depending on the context, i.e. Depending on previously decoded symbols (or spectral values), for example, by choosing different cumulative frequency tables depending on the context, random relationships between different symbols can be used, which enables particularly efficient bit-coding of subsequent (or adjacent) symbols.
[0232] To summarize the above, the function "arith_decode ()", which has been described with reference to Fig. 5g, is referenced with the cumulative frequency table "arith_cf_m [pki] []" corresponding to the index "pki" returned by the function "arith_get_pk ()" to determine the m-value of the most significant bitplan (which can be set to the symbol value represented by the return variable 'symbol'.
[0233] In summary of the above, the arithmetic decoder is an integer implementation using the scaling compatibility bit generation method. For details, refer to the book "Introduction to Data Compression" by K. Sayood, Third Edition, 2006, Elsevier Inc.
[0234] The computer program code according to Fig. 5g describes the algorithm used according to an embodiment of the invention.
11.6.2 Arithmetic decoding using the algorithm according to Figs. 5h and 5i [0235] Figs. 5h and 5i show a representation of the pseudo-program code of another embodiment of the "arith_decode () algorithm, which can be used alternatively to the" arith_decode "algorithm described with reference to Fig. 5g.
[0236] It should be noted that both the algorithms of Fig. 5g and Figs. 5h and 5i can be used in the "values_decode ()" algorithm of Fig. 3.
[0237] In summary, the value of m is decoded using the function "arith_decode ()" referenced with the cumulative table "arith_cf_m [pki] []", where "pki" corresponds to the index returned by the function "arith_get_pk ()". The arithmetic encoder (or decoder) is an integer implementation using the scaling compliance bit method. For details, refer to the book "Introduction to Data Compression" by K. Sayood, Third Edition, 2006, Elsevier Inc. The computer program code according to Figs. 5h and 5i describes the algorithm used.
11.7 Escape mechanism.
[0238] Hereinafter, the escape mechanism that is used in the "arith_decode ()" decoding algorithm according to Fig. 3 will be briefly described.
[0239] When the decoded value of m (which is provided as the return value of the function "arith_decode ()" is the escape symbol "ARITH_ESCAPE", the variables "lev" and "esc_nb" are increased by 1 and another variable m is decoded. In this case, "arith_get_pk ()" is called again with "c + esc_nb << 17" as the input argument, where "esc_nb" describes the number of escape symbols previously decoded for the same 2 times, limited to 7.
[0240] In summary, if an escape symbol is identified, it is assumed that the m-value of the most significant bitplan contains increased numerical weight. In addition, the current numerical decoding is repeated, where the modified numeric current context value "c + esc_nb << 17" is used as the input variable of the function "arith_get_pk ()". Accordingly, a different "pki" value of the mapping rule index is typically obtained in different iterations of the 312ba subalgorithm.
11.8 Arithmetic stop mechanism [0241] The arithmetic stop mechanism will be described below. The arithmetic stop mechanism makes it possible to reduce the number of bits required when some of the upper frequencies are completely quantized to 0 in the audio encoder.
[0242] In an embodiment, the arithmetic stop mechanism can be implemented as follows: When the value m is not an escape symbol "ARITH_ESCAPE", the decoder checks if the next value m creates the symbol "ARITH_ESCAPE". If the condition "esc_nb> 0 && m == 0" is true, the symbol "ARITH_ESCAPE" is detected and the decoding operation is completed. In this case, the decoder jumps to the function "arith_finish ()", which will be described below. This condition means that the rest of the frame consists of zero values.
11.9 Decoding a less-significant bitplan [0243] In the following, decoding of one or more less-significant bitplans will be described. Decoding of the less significant bitplan is carried out, for example, in step 312d, shown in Fig. 3. Alternatively, however, the signals shown in Figs. 5j and 5n may be used.
11.9.1 Decoding a less significant bitplan according to Fig. 5i [0244] Referring to Fig. 5j, it can be seen that the values of the variables a and b are derived from the value of m. For example, the numerical representation of the value of m is shifted to the right by 2 bits for representation numeric variable b. In addition, the value of variable a is obtained by subtracting the bit-shifted version of the value of variable b, shifted to the left by 2 bits from the value of variable m.
[0245] Then, the arithmetic decoding of the r-least-significant bitplan value r is repeated, the number of repetitions being determined by the value of the variable "lev". The least significant bitplan r value is obtained using the "arith_decode" function, using a cumulative frequency table matched to decode the least significant bitplan ("arith_cf_r" table). The least significant bit (having the numerical weight of 1) of the variable r describes the less significant bitplan of the spectral value represented by the variable a, and the bit having the numerical weight of 2 of the variable r describes the less significant bit of the spectral value represented by the variable b. Accordingly, the variable a is updated by shifting the variable to the left by 1 bit and adding a bit having the numerical weight of 1 variable r as the least significant bit. Similarly, 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 the 2 variable r.
[0246] By this, the two most significant bits containing the information of variables a, b are determined by the m value of the most significant bitplan and one or more least significant bits (if any) of the value a and b are determined by one or more r values of the less significant bitplans .
[0247] In summary of the above, if no "ARITH_STOP" symbol is encountered, the remaining bitplans are decoded, if any, for the current 2-fold. The remaining bitplans are decoded, from the most significant to the least significant level, by calling the "arith_decode ()" function lev the number of times with the cumulative frequency table "arith_cf_r []". The decoded bitplans r allow the purification of the previously decoded value of m according to the algorithm whose pseudo-program code is shown in Fig. 5j.
11.9.2 Decoding the low-order bit band according to Fig. 5n [0248] Alternatively, however, the algorithm whose representation of the pseudo-program code is shown in Fig. 5n can also be used to decode the less-significant bitplan. In this case, if the "ARITH_STOP" symbol is not encountered, the remaining bitplans are then decoded, if any, for the current 2-fold. The remaining bitplans are decoded from the most significant to the least significant level by calling "lev" times "arith_decode ()" with the cumulative frequency table "arith_cf_r ()". The decoded bitplans r allow purification of the previously decoded m value according to the algorithm shown in Fig. 5n.
11.10 Context update
11.10.1 Context update according to Figs. 5k, 5l and 5m [0249] The operations used to decode the short spectral values with reference to Figs. 5k and 5l will be described below. In addition, an operation that is used to complete the decoding of a set of spectral value tuples associated with the current portion (e.g., the current frame) of audio content will be described.
[0250] Referring to Fig. 5k, it can be seen that the entry having the index 2 * and the matrix "x_ac_dec []" is set to be equal to and that the entry having the index "2 * and + 1" of the matrix "x_ac_dec []" is set to be equal to b after decoding the 312d minor bit. In other words, the moment after decoding the 312d minor bit, the unsigned 2-fold (a, b) value is completely decoded. It is written in an element (for example, the "x_ac_dec []" matrix) having spectral coefficients according to the algorithm shown in Fig. 5k.
[0251] Next, the context "q" is also updated for the next 2-fold. Note that this context update must be done for the last 2 times. This context update is accomplished by the "arith_update_context ()" function, whose pseudo program code representation is shown in Fig. 5l.
[0252] Referring now to Fig. 5l, it can be seen that the function "arith_update_context (i, a, b)" receives, as input variables, the decoded quantized unsigned quantized spectral coefficients (or spectral values) a, b 2-fold. In addition, the "arith_update_context" function also receives, as an input variable, the index and (for example, the frequency index) the quantized spectral coefficient to be decoded. In other words, the input variable i can, for example, be an index of short spectral values whose absolute values 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 value that is equal to a + b + 1. In addition, the value of the entry "q [1] [i]" of the matrix "q [] []" may be limited to the hexadecimal value of "0xF". Thanks to this, the entry "q [1] [i]" of the matrix "q [] []" is obtained by calculating the sum of the absolute values of the currently decoded tuple {a, b} of the spectral values having the frequency index i, and adding 1 to the result of said summation.
[0253] It should be noted here that the entry "q [1] [i]" of the matrix "q [] []" can be considered the value of the context sub-area because it describes the context sub-area that is used for the next decoding of additional spectral values (or tuples spectral values).
[0254] It should be noted here that the summation of absolute values a and b of two currently decoded spectral values (whose versions with sign are stored in the entries "x_ac_dec [2 * i]" and "x_ac_dec [2 * and + 1]" of the matrix "x_ac_dec [] ", It can be considered as calculating a standard (e.g. L1 standard) for decoded spectral values.
[0255] It has been found that the context sub-area values (eg, "q [] []" matrix entries) that describe the norm of a vector formed by previously decoded spectral values are particularly significant and memory efficient. It has been found that such a standard, which is calculated based on many previously decoded spectral values, contains significant context information in a compact form. It has been found that the sign of spectral values is typically not particularly important for the context selection. It has also been found that creating a standard for many previously decoded spectral values typically retains the most important information, even if some details are removed. Furthermore, it has been found that limiting the numerical current context value to the maximum value typically does not lead to severe information loss. Rather, it has been found that it is more efficient to use the same context state for significant spectral values that are greater than a predetermined threshold. Thus, limiting the value of the context subarea will further improve memory performance. Furthermore, it has been found that limiting the value of the context subarea to a certain maximum value allows a particularly simple and computationally efficient updating of the numerical current context value which has been described, for example, with reference to Figs. 5c and 5d. By limiting the value of the context subarea to a relatively small value (e.g. to value 15) a context state that is based on many values of context sub-areas can be represented in an efficient form, as discussed with reference to Figs. 5c and 5d.
[0256] Furthermore, it has been found that limiting the value of the context subarea to a value between 1 and 15 entails a particularly favorable trade-off between accuracy and memory performance, since 4 bits are sufficient to store such context subarea.
[0257] However, it should be noted that in some other embodiments, the value of the context sub-area may be based on a single decoded value. In this case, the standard creation can optionally be skipped.
[0258] The next 2-frame frame is decoded after the "arith_update_context" function is completed by zooming in and by 1, and by performing the same operation again as described above, starting with the "arith_get_context ()" function.
[0259] When 1g / 2 2-fold is decoded in a frame, or when the "ARITH_ESCAPE" stop symbol appears, the spectral amplitude decoding operation ends and character decoding begins.
[0260] Details on the decoding of characters are discussed with reference to Fig. 3, in which the decoding of characters is shown at reference numeral 314.
[0261] Once all quantized unsigned spectral coefficients have been decoded, a corresponding character is added. A bit is read for each non-zero quantized value "x_ac_dec". If the bit value is 0, the quantized value is positive, no operation is performed, 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 complement of two is subtracted from the unsigned value. The sign bits are read from low to higher frequencies. For details, refer to Fig. 3 and explanations regarding 314 decoding.
[0262] Decoding is completed by calling the function "arith_finish ()". The remaining spectral coefficients are set to 0. The appropriate context states are updated accordingly.
[0263] For details, refer to Fig. 5m, which shows a code representation of the pseudo-program of the function "arith_finish ()". As you can see, the "arith_finish ()" function receives an input variable of 1g, which describes the decoded quantized spectral values. Preferably, the input variable 1g of the function "arith_finish" describes the number of actually decoded spectral coefficients, leaving no spectral coefficients to which 0 has been allocated in response to the detection of the "ARITH_STOP" symbol. The input N value of the "arith_finish" function describes the length of the window, current window (ie the window associated with the current part of the audio content). Typically, the number of values associated with a window length N is equal to N / 2 and the number of 2-fold spectral values associated with a window length N is equal to N / 4.
[0264] The "arith_finish" function also receives, as input, the "x_ac_dec" vector of decoded spectral values or at least a reference to such a vector of decoded spectral values.
[0265] The "arith_finish" function is configured to set "x_ac_dec" matrix (or vector) entries for which no spectral values have been decoded due to the presence of the stop arithmetic state, to 0. In addition, the "arith_finish" function sets the values of the " q [1] [i] ', which are associated with spectral values for which no values have been decoded due to the presence of the stop arithmetic, to a pre-set value of 1. The pre-set value of 1 corresponds to the tuple of spectral values, in which both spectral values are equal to 0. [0266] Accordingly, the function "arith_finish ()" allows the update of the entire matrix (or vector) "x_ac_dec []" of spectral values as well as the entire value matrix of the sub-area of the context "q [1] [i]", even in the presence of the arithmetic state of stop.
11.10.2 Context update according to Figs. 5o and 5p [0267] In the following, another embodiment of the context update will be described with reference to Figs. 5o and 5p. When the unsigned 2-fold value (a, b) is completely decoded, the context q is then updated for the next 2-fold. An update is also made if the current 2-fold is at least 2-fold. Both updates are made by the "arith_update_context ()" function, whose pseudo program code representation is shown in Fig. 5o.
[0268] The next 2-fold frame is then decoded by zooming in and by 1 and calling the function "arith_decode ()". If 1g / 2 2-fold has already been decoded with a frame, or if the symbol "ARITH_STOP" appears, the function "arith_finish ()" is called. The context is saved and stored in the "qs" matrix (or vector) for the next frame. The code for the pseudo program of the "arith_save_context ()" function is shown in Fig. 5p.
[0269] Once all quantized unsigned spectral coefficients have been decoded, then a sign is added. A bit is read for each non-quantized "qdec" value. If the value of the read bit is 0, the quantized value is positive, no operation is performed and the signed value is equal to the previously decoded unsigned value. Otherwise, the decoded coefficient is negative and the complement of two is subtracted from the unsigned value. Signed bits are read from low to high frequencies.
11.11 Summary of decoding operations [0270] The decoding process will be briefly summarized below. For details, please refer to the above discussion as well as to Figs. 3, 4, 5a, 5c, 5e, 5g, 5j, 5k, 5l, and 5m. The quantized spectral coefficients "x_ac_dec []" are noiselessly decoded from the lowest frequency factor to the highest frequency factor. They are decoded by groups of two consecutive a, b coefficients collected in the so-called 2-fold (a, b).
[0271] The decoded "x_ac_dec []" coefficients for the frequency domain (i.e., for the frequency domain mode) are then stored in the "x_ac_quant [g] [win] [sfb] [bin]" matrix. The order of transmission of the words of the noiseless coder code is such that when they are decoded in the received order and stored in the matrix, "bin" is the fastest growing index, and "g" is the slowest increasing index. In the code word, the order of decoding is a, then b. The decoded "x_ac_dec []" coefficients for "TCX" (i.e. for audio decoding using transform coded excitation) are stored (e.g. directly) in the "x_tcx_invquant [win] [bin]" matrix, and the order of transmission of the words of the noiseless coding code is such that when they are decoded in the received order and stored in the matrix, "bin" is the fastest-growing index and "win" is the slowest-growing index. In the code word, the decoding order is a, then b.
[0272] First, the "arith_reset_flag" flag determines whether the context must be reset. If the flag is TRUE, this is included in the "arith_map_context" function. [0273] The decoding operation begins with an initialization phase in which the "q" vector of the context element is updated by copying and mapping the context elements of the previous frame stored in "q [1] []" to "q [0] []". Context elements in "q" are stored in 4 bits per 2 times. For details, please refer to the pseudo program code in Fig. 5a.
[0274] The noiseless decoder outputs 2 times quantized unsigned spectral coefficients. First, the context status c is calculated based on the previously decoded spectral values surrounding the 2-fold to be decoded. Therefore, the status is incrementally updated using the context status of the last decoded 2-fold, taking into account only two new 2-folds. The state is decoded in 17 bits and is returned by the "arith_get_context" function. A representation of the code of the pseudo-program of the setting function "arith_get_context" is shown in Fig. 5c.
[0275] The context c of the context designates the cumulative frequency table used to decode the most significant 2 bit plane m. The mapping from c to the corresponding pki index of the cumulative frequency table is performed by the "arith_get_pk ()" function. The code representation of the pseudo-program of the function "arith_get_pk ()" is shown in Fig. 5e.
[0276] The value of m is decoded using the function "arith_decode ()" referenced 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 the scaling compliance bit method. The pseudo program code according to Fig. 5g describes the algorithm used.
[0277] When the decoded m value is the escape symbol "ARITH_ESCAPE", the variables "lev" and "esc_nb" are increased by 1 and another m value is decoded. In this case, the "get_pk ()" function is recalled with the value "c + esc_nb << 17 "as an input argument, where" esc_nb "is the number of escape symbols previously decoded for the same 2-fold, limited to 7.
[0278] When the value of m is not the symbol "ARITH_ESCAPE", the decoder checks if the next m creates the symbol "ARITH_STOP". If the condition (esc_nb> 0 && m == 0) is true, the symbol "ARITH_STOP" is detected and the decoding operation is completed. The decoder jumps directly to decode the character described later. This condition means that the rest of the frame consists of 0.
[0279] If the "ARITH_STOP" symbol is not encountered, the remaining bitplans are then decoded, if any, for the current 2-fold. The remaining bitplans are decoded from the most significant to the least significant level by calling "arith_decode ()" lev times with the cumulative frequency table "arith_cf_r []". The decoded bitplans r allow the purification of the previously decoded value of m according to the algorithm whose pseudo-program code is shown in Fig. 5j. At this point, the unsigned 2-fold value (a, b) is completely decoded. It is saved to the element storing the spectral coefficients according to the algorithm whose representation of the pseudo-program code is shown in Fig. 5k.
[0280] The "q" context is also updated for the next 2 times. Note that the context update must also be done for the last 2 times. This context update is carried out by the "arith_update_context ()" function, whose pseudo program code representation is shown in Fig. 5l.
[0281] The next 2-frame frame is then decoded by zooming in and by 1 and performing the same operation again as described above, starting with the function "arith_get_context ()". When 1g / 2 2-fold is decoded in the frame, or when the symbol "ARITH_STOP" appears, the decoding operation of the spectral amplitude is completed and the decoding of characters begins.
[0282] Decoding is completed by calling the function "arith_finish ()". The remaining spectral coefficients are set to 0. The appropriate context states are updated accordingly. The code representation of the pseudo-program of the function "arith_finish" is shown in Fig. 5m.
[0283] Once all quantized unsigned spectral coefficients have been decoded, a corresponding character is added. A bit is read for each non-zero quantized value "x_ac_dec". If the value of the read bit is 0, the quantized value is positive and no operation is performed, and the signed value is equal to the previously decoded unsigned value. Otherwise, the decoded coefficient is negative and the complement of two is subtracted from the unsigned value. Signed bits are read from low to high frequencies.
11.12 Legends [0284] Fig. 5q shows the legend of definitions that relate to the algorithms of Figs. 5a, 5c, 5e, 5f, 5g, 5j, 5k, 5l and 5m.
[0285] Fig. 5r shows a legend of definitions that relate to the algorithms of Figs. 5b, 5d, 5f, 5h, 5i, 5n, 5o and 5p.
12. Mapping tables [0286] In an embodiment of the invention, particularly preferred tables "ari_lookup_m", "ari_hash_m" and "ari_cf_m" are used to perform the functions "arith_get_pk ()" according to Fig. 5e or 5f and to perform the functions "arith_decode ()" , which has been discussed with reference to Figs. 5g, 5h and 5i. However, it should be noted that other tables may be used in some embodiments of the invention.
12.1 Table "ari hash m [600]" according to Fig. 22 [0287] The content of a particularly advantageous implementation of the table "ari_hash_m", which is used by the function "arith_get_pk", whose first embodiment was described with reference to Fig. 5e, and which the second embodiment was described with reference to
Fig. 5d, is shown in the table in Fig. 22. It should be noted that the table in Fig. 22 lists 600 table (or matrix) entries "ari_hash_m [600]". It should also be noted that the tabular representation of Fig. 22 presents the elements in the order of element indexes, so that the first value "0x000000100UL" corresponds to the table entry "ari_hash_m [0]" having the element index (or table index) 0, and so that the last value "0x7ffffffff4fUL" corresponds to the entry "ari_hash_m [599] "Having element index or table index 599. In addition, it should be noted here that" 0x "indicates that the table entries of the table" ari_hash_m [] "are represented in hexadecimal format. In addition, it should be noted here that the suffix "UL" indicates that the entries of the table, table "ari_hash_m []" are represented with "long" unsigned integers (with an accuracy of 32 bits).
[0288] In addition, it should be noted that the table entries of the "ari_hash_m []" table according to Fig. 22 are arranged in numerical order to allow performing searches 506b, 508b, 510b of the function table "arith_get_pk ()".
[0289] Furthermore, it should be noted that the most significant 24 bits of the table entries, table "ari_hash_m" represent some significant state values, and the least significant 8 bits represent the "pki" values of the mapping rule index. Thanks to this, the "ari_hash_m []" table entries describe the mapping of the "direct hit" of the context value to the "pki" value of the mapping rule index.
[0290] However, the highest 24 bits of the "ari_hash_m []" table entries simultaneously represent the boundaries of the ranges, the numerical ranges of context values to which the same mapping rule index value is associated. Details about this concept have already been discussed above.
12.2 "ari lookup m" table according to Fig. 21 [0291] The content of a particularly preferred embodiment of the "ari_lookup_m" table is shown in the table in Fig. 21. It should be noted that in this case Fig. 21 table lists the entries "ari_lookup_m". These entries refer to a one-dimensional integer input index (also referred to as "element index" or "matrix index" or "table index"), which is, for example, labeled "i_max" or "i_min". It should be noted that the "ari_lookup_m" table, which has a total of 600 entries, is suitable for use by the "arith_get_pk" function according to Fig. 5e or Fig. 5f. It should also be noted that the "ari_lookup_m" table according to Fig. 21 is adapted to interact with the "ari_hash_m" table according to Fig. 22.
[0292] It should be noted that the entries of the "ari_lookup_m [600]" table are listed in ascending order of the "i" table index (e.g., "i_min" or "i_max"), between 0 and 599. The "0x" indicates that the entries tables are described in hexadecimal format. Accordingly, the first entry "0x02" of the table corresponds to the entry "ari_lookup_m [0]" of the table with table index 0, and the last entry "0x5E" of the table corresponds to the entry "ari_lookup_m [599]" of table with table index 599.
[0293] It should also be noted that the entries of the "ari_lookup_m []" table are associated with the ranges defined by the adjacent entries of the "arith_hash_m []" table. Thanks to this, the "ari_lookup_m" table entries describe the mapping policy index values associated with the ranges of the numeric context value, with the ranges defined by the "arith_hash_m" table entries.
12.3 Table "ari cf m [96] [17]" according to Fig. 23 [0294] Fig. 23 shows a set of 96 tables (or sub-tables) of cumulative frequencies "ari_cf_m [pki] [17]", one of which is selected through the audio encoder 100, 700, or through the audio decoder 200, 800, for example to perform the function "arith_decode ()", i.e. to decode the value of the most significant bitplan. One of the 96 cumulative frequency tables (or sub-tables) selected is shown in Fig. 23 takes over the role of the table function "cum_freq []" while executing the function "arith_decode ()".
[0295] As can be seen in Fig. 23, each sub-block represents a cumulative frequency table having 17 entries. For example, the first sub-block 2310 represents 17 entries of the cumulative frequency table for "pki = 0". Second sub-block 2312 represents 17 entries of the cumulative frequency table for "pki = 1". Finally, the 96th sub-block 2396 representations of 17 cumulative frequency table entries for "pki = 95". So Fig. 23 it actually represents 96 different tables (or sub-tables) of cumulative frequencies from "pki = 0" to "pki = 95", where each of the 96 cumulative frequency tables is represented by a sub-block (closed with curly brackets) and each of the cumulative frequency tables listed, it contains 17 entries.
[0296] In a sub-block (e.g., sub-block 2310 or 2312 or sub-block 2396), the first value describes the first cumulative frequency table entry (having matrix index or table index 0), and the last value describes the last cumulative frequency table entry (having matrix index or table index 16).
[0297] Accordingly, each sub-block 2310, 2312, 2396 of the tabular representation of Fig. 23 represents the cumulative frequency table entries for use by the "arith_decode" function of Fig. 5g or Figs. 5h and 5i. The input variable "cum_freq []" of the function "arith_decode" describes which of the 96 cumulative frequency tables (represented by individual sub-blocks of 17 entries of the table "arith_cf_m") should be used to decode current spectral coefficients.
12.4. "Ari cf rfi" table according to Fig. 24 [0298] Fig. 24 shows the contents of the "ari_cf_r []" table.
[0299i Four entries of said table are shown in Fig. 24. However, it should be noted that the "ari_cf_r" table may actually be different in other embodiments.
13. Performance and Benefit Evaluation [0300i Embodiments of the invention use updated functions (or algorithms) and an updated set of tables, as discussed above, to achieve a better balance between computational complexity, memory demand, and coding efficiency.
[0301i In general, the embodiments of the invention create improved noise-free spectral coding. Embodiments of the present invention describe the improvement of noiseless spectral coding using USAC (unified speech and audio encoding).
[0302i Embodiments of the invention form an updated proposal for CE to improve the spectral noise-free coded spectral coefficients based on the methods presented in the MPEG papers m16912 and m17002. Both proposals were evaluated, potential problems eliminated and advantages combined. [0303i As in m16912 and m17002, the resulting proposal is based on the original arithmetic coding method, based on the original USAC draft 5 (draft standard for unified speech and audio coding) based on context, but can significantly reduce the need for memory (random access memory) RAM and permanent ROM) without increasing computational complexity while maintaining coding efficiency. In addition, the possibility of lossless transcoding of bit streams according to draft version 3 of the USAC standard and according to draft version 5 of the USAC standard has been proven. Embodiments of the invention are intended to replace the noiseless spectral coding method used in draft version 5 of the USAC standard.
[0304] The arithmetic coding method described herein is based on a method such as in reference model 0 (RM0) or working version 5 (WD, working draft) of the USAC standard proposal. Spectral coefficients in frequency or time model the context. This context is used to select cumulative frequency tables for the arithmetic encoder. Compared with the WD5 embodiment, context modeling is further improved, and tables containing symbol probabilities have been preserved. The number of different probability models has been increased from 32 to 96.
[0305] Embodiments of the invention reduce the table size (data ROM demand) to 1518 words with a length of 32 bits or 6072 bytes (WD 5: 16894.5 words or 67578 bytes). The need for permanent RAM is reduced in some embodiments of the invention from 666 words (2664 bytes) to 72 (288 bytes) per core encoder channel. At the same time, it fully preserves coding efficiency and can even achieve a profit of around 1.29% to 1.95% compared to the total data flow at all 9 operating points. All bit streams of draft 3 (WD3) and draft 5 can be transcoded in a lossless manner without affecting bit resource restrictions.
[0306] A brief discussion of the coding concept according to draft USAC version 5 proposals will be provided below to facilitate understanding of the advantages of the concept described herein. Next, some preferred embodiments of the invention will be described.
[0307] In USAC draft 5, the context-based arithmetic coding method is used to noiseless coding of quantized spectral coefficients. As context, decoded spectral coefficients are used, preceding in frequency and time. In draft version 5, the maximum number of 16 spectral coefficients is used as the context, and 12 of them prevail over time. Also, the spectral coefficients used as context as well as those to be decoded are grouped as 4-fold (i.e. 4 spectral coefficients adjacent to the frequency, see Fig. 14a). The context is reduced and mapped to a cumulative frequency table, which is then used to decode the next 4-fold spectral coefficients.
[0308] In complete noise-free coding according to draft 5, memory (ROM constant memory) of 16894.5 words (67578 bytes) is required. In addition, 666 words (2664 bytes) of static RAM per core coder channel are required to store states for the next frame. [0309] The table representation in Fig. 14a describes the tables used in the USAC WD4 arithmetic coding method.
[0310] It should be noted here that, in the noise-free coded range, the working versions 4 and 5 of the draft USAC standard are the same. Both use the same noiseless encoder. [0311] The total memory requirement of the complete USAC WD5 decoder is estimated at 37,000 words (148,000 bytes) for data ROM without program code and 10,000 to 17,000 words for static RAM. It can be clearly seen that the noiseless encoder tables use about 45% of the total ROM demand. The largest individual table already consumes 4096 words (16384 bytes).
[0312] It has been found that both the connection size of all tables and large individual tables exceed the typical cache sizes provided by fixed-point processors used in consumer portable devices that are typically in the range of 8-32 kilobytes (e.g., ARM9e, TI C64XX, etc. .). This means that the set of tables probably cannot be stored in fast RAM data memory, which provides quick direct access to the data. This slows down the entire decoding process.
[0313] In addition, it has been found that current successful encoded audio technologies such as HEACC have proved to be feasible on most portable devices. HE-ACC uses the Huffman entropy coding method with a table of 995 words. For details, refer to ISO / IEC JTC1 / SC29 / WG11 N2005, MPEG98, February 1998, San Jose, "Revised Report on Complexity of MPEG-2 AAC2".
[0314] At the 90th MPEG meeting, two proposals were presented in m16912 and m17002 to reduce memory demand and improve coded performance of the noiseless coding method. The following conclusions can be drawn from the analysis of both proposals.
• A significant reduction in memory requirements is possible by reducing the size of the code word. As demonstrated in MPEG m17002, by reducing the size of 4-fold to 1-fold, the memory requirement can be reduced from 16984.5 to 900 words without compromising coded performance; and • Additional redundancy can be removed by using a code book with non-uniform probability distribution in LSB coding instead of using a uniform probability distribution.
[0315] During this evaluation, it was found that the transition from the 4-fold coding method to the 1-fold coded method was significant impact on computational complexity: a reduction in the coding dimension increases the number of symbols to be coded by the same factor. This means for a reduction from 4 times to 1 times, which is a necessary operation to define the context, gain access to the hash table and decode the symbol must be done four times more often than before. Together with the more sophisticated algorithm for determining the context, this increased the computational complexity by a factor of 2.5 or x.xxPCU.
[0316] The proposed new coding method according to an embodiment of the present invention will be described below.
[0317] To overcome the problem of software demand for memory and the problem of computational complexity, an improved noiseless coding method is proposed to replace the method from draft 5 (WD5). The main attention in development was focused on reducing the need for memory, while maintaining compression performance and not increasing computational complexity. In particular, the goal was to achieve a good (or even best) balance in the space of the multidimensional complexity of compression efficiency, complexity and memory demand.
[0318] The proposed new coding method takes over the main feature of the WD5 noiseless encoder, namely context matching. The context is obtained using previously decoded spectral coefficients, which come, as in WD5, both from the previous and current frame (where the frame can be considered as part of the audio content). However, the spectral coefficients are now coded by combining the two coefficients together to form a 2-fold. Another difference is that the spectral coefficients are now divided into three parts, sign, more-significant bits or most-significant bits (MSB) and less-significant bits or least-significant bits (LSB). The character is coded regardless of the module, which is further divided into two parts, the most significant bits (or more significant bits) and the remaining bits (or less significant), if any. 2-fold, for which the module of two elements is less than or equal to 3, are coded directly using MSB coding. Otherwise, the escape code word is sent first to signal any additional bitplan. In the base version, the missing information, LSB bits and the sign are encoded using a uniform probability distribution. Alternatively, a different probability distribution may be used.
[0319] It is still possible to reduce the size of the table because:
• only probabilities for 17 symbols must be stored: {[0; +3], [0; +3]} + ESC escape symbol;
• there is no need to store the grouping table (egroups, dgroups, dgvectors; groups e, groups d, vectors dg);
• the size of the shortcut table can be reduced with appropriate training.
[0320] Some details of the MSB encoded will be described below. As already mentioned, one of the main differences between the WD5 USAC draft project, the proposal submitted at the 90th MPEG meeting and the current proposal is the size of the symbols. In WD5 USAC standard proposals, 4-fold were included in context generation and noiseless coding. In the proposal submitted at the 90th MPEG meeting, 1 times were used instead to reduce the ROM requirements. During development, it was found that 2-folds provide the best compromise for reducing ROM requirements without increasing computational complexity. Instead of including 4 times for context innovation, now 2 times are included. As shown in Fig. 15a, three 2-folds are from the past frame (also designated as the previous portion of audio content) and one comes from the current frame (also designated as the current portion of audio content).
[0321] The reduction in table size results from three main factors. First, only the probabilities for 17 symbols must be stored (e.g. (i.e. {{0; +3], [0; +3]} + ESC symbol)). Grouping tables (i.e., egroups, dgroups and dgvectors) are no longer required. Finally, the size of the shortcut table has been reduced by performing the appropriate training.
[0322] Although the dimension has been reduced from four to two, the complexity has been maintained within the WD5 scope of the USAC draft standard. This has been achieved by simplifying both the context generation and access to the hash table.
[0323] Various simplifications and optimizations have been made in such a way as to ensure that the coding performance has not been compromised or even slightly improved. This was mainly achieved by increasing the number of probability models from 32 to 96.
[0324] In the following, some details of the LSB encoded will be described. LSBs are coded with a homogeneous probability distribution in certain embodiments. Compared with WD5 of the USAC draft standard, LSBs are now included in 2-fold instead of 4-fold.
[0325] Certain character coding details will be explained below. The sign is encoded without using an arithmetic core encoder to reduce complexity. A character is sent only in 1 bit when the corresponding module is not zero. 0 means positive and 1 means negative.
[0326] In the following, some details of the memory requirement will be explained. The proposed new method has a total ROM demand of up to 1522.5 new words (6090 bytes). For details, refer to the table in Fig. 15b, which describes the tables used in the proposed new method. Compared with the table with the ROM demand of the noiseless coding method in WD5 of the USAC draft, the ROM demand is reduced by at least 15,462 words (61848 bytes). It is now of the same order as the memory requirement of the Huffman AAC decoder in HE-AAC (995 words or 3980 bytes). For details, refer to ISO / IEC JTC1 / SC29 / WG11 N2005, MPEG98, February 1998, San Jose, "Revised Report on Complexity of MPEG-2 AAC2", as well as to Fig. 16a. This reduces the total ROM demand of the noiseless encoder by more than 92%, and the USAC decoder from about 37,000 words to about 21,500 words, or by more than 41%. For details, we again refer to Figs. 16a and 16b, with Fig. 16a showing the need for ROM of the noiseless coding method proposed and the noiseless coding method according to WD4 of the USAC draft standard, and Fig. 16b shows the total memory demand of the USAC decoder according to the proposed method and according to WD4 of the USAC draft standard.
[0327] Next, the amount of desired information for acquiring context in the next frame (static ROM) is also reduced. In WD5 of the USAC standard project, a complete set of coefficients (up to 1152) with a typically 10-bit resolution in addition to the group index for a 4-fold with a 10-bit resolution had to be stored, which gives a total of 666 words (2664 bytes) per core encoder channel (WD4 USAC complete decoder: approximately 10,000 to 17,000 words). The new method reduces constant information to only 2 bits per spectral coefficient, which gives a total of up to 72 words (288 bytes) per core coder channel. The demand for static memory can be reduced by 594 words (2376 bytes).
[0328] In the following, some details will be described regarding a possible increase in coding efficiency. The decoding performance of the embodiments according to the new proposal has been compared with the reference quality bit streams according to draft version 3 (WD3) and WD5 of the USAC standard proposal. The comparison was carried out using a transcoder based on a reference program decoder. For details of the mentioned comparison of noiseless coding according to WD3 or WD5, the USAC standard proposal and the proposed coding method, we refer to Fig. 17, which shows a schematic representation of the test system for the comparison of WD3 / 5 noiseless coding with the proposed coding method.
[0329] Also, the memory requirement in the embodiments of the invention has been compared with the embodiments of the standard design WD3 (or WD5)
USAC.
[0330] Coding performance is not only maintained, but slightly increased. For details, refer to the table in Fig. 18, which shows a representation of the average bit rate table produced by the WD3 arithmetic encoder (or USAC audio encoder using the WD3 arithmetic encoder) and the audio encoder (e.g., USAC audio encoder) according to an embodiment of the invention.
[0331] Details of the average rate per operation can be found in the table of Fig. 18.
[0332] Furthermore, Fig. 19 shows a tabular representation of the minimum and maximum bit resource levels for an WD3 arithmetic encoder (or audio encoder using the WD3 arithmetic encoder) and an audio encoder according to an embodiment of the present invention.
[0333] Some details of computational complexity will be described below. Reducing the dimensionality of arithmetic coding leads to an increase in computational complexity. In fact, reducing the dimension by a factor of two will cause the arithmetic coder to call the procedure twice.
[0334] However, it has been found that this increase in complexity can be limited by several optimizations introduced in the proposed new coding method according to embodiments of the present invention. Context generation has been greatly simplified in some embodiments of the invention. For each 2-fold, the context can be updated incrementally from the last generated context. Probabilities are now stored in 14 bits instead of 16 bits, which avoids 64 bit operations during decoding operations. In addition, the probability model mapping has been significantly optimized in some embodiments of the invention. The worst case has been drastically reduced and is limited to 10 iterations instead of 95.
[0335] As a result, the computational complexity of the proposed noiseless coding was maintained in the same range as in WD5. Written estimation on paper was carried out by different versions of noiseless coding and is registered in the table of Fig. 20. It shows that the new coding method is only about 13% less complex than the WD5 arithmetic encoder.
[0336] In summary of the above, it can be seen that the embodiments of the present invention provide a particularly good balance between computational complexity, memory requirement, and coding efficiency.
14. Bit stream syntax
14.1 Charges of the noiseless spectral encoder [0337] Some details of the noiseless charge of the spectral encoder will be described below. In some embodiments, there are many different coding modes, such as coding mode in the field of linear prediction and coding mode in the frequency domain. In coding mode in the field of linear prediction, noise shaping is performed based on the analysis of linear prediction of the audio signal, and the signal with the shaped noise is encoded in the frequency domain. In coding mode in the frequency domain, noise shaping is implemented on the basis of psychoacoustic analysis and the version of the audio content with the shaped noise is coded in the frequency domain.
[0338] Spectral coefficients, both from the coded signal in the linear prediction domain and coded in the frequency domain, are scalar quantized and then noiseless coded using context-adaptive arithmetic coding. The quantized coefficients are collected together in 2-fold before they are transmitted from the lowest frequency to the highest frequency. Each 2-fold is divided into the most significant 2-bit flaps and one or more less significant bitplans r (if any) left. The value of m is coded according to the context defined by adjacent spectral coefficients. In other words, m is coded according to the environment of the coefficients. The other, less significant, bitplans r are entropy coded without context. With the help of mir, the amplitude of these spectral coefficients can be reconstructed on the decoder side. For all non-zero symbols, s is encoded outside the arithmetic encoder using 1 bit. In other words, the mir values form the symbols of the arithmetic encoder. Finally, the characters s are encoded outside the arithmetic encoder using 1 bit to a non-zero quantized factor.
[0339] The detailed arithmetic decoding procedure is described here.
14.2 Elements of Syntax [0340] The following will describe the bit stream syntax for a bit stream carrying arithmetically coded spectral information with reference to Figs. 6a to 6j.
[0341] Fig. 6a shows a representation of the syntax of so-called the raw USAC data block ("USAC_raw_data_block ()").
[0342] The raw USAC data block contains one or more elements ("single_channel_element ()") of individual channels and / or one or more elements ("channel_pair_element ()") of channel pairs.
[0343] Referring now to Fig. 6b, the syntax of a single channel element is described. A single channel element contains the stream ("lpd_channel_stream ()") of the channel in the field of linear prediction or the stream ("fd_channel_stream ()") of the channel in the frequency domain depending on the core mode.
[0344] Fig. 6c shows a syntax representation of a channel pair element. The channel pair element contains core mode information ("core_mode0", "core_mode1"). In addition, the channel pair element may contain "ics_info ()" configuration information. In addition, depending on the core mode information, the channel pair element comprises a channel stream in the linear prediction domain or frequency channel channel associated with the first of the channels, and the channel pair element also includes a channel stream in the linear prediction domain or a channel in the frequency domain associated with with the second of the channels.
[0345] Configuration information, whose syntax representation is shown in Fig. 6d, contains a variety of different configuration information items that are not particularly relevant to the present invention.
[0346] The stream ("fd_channel_stream ()") of the frequency domain channel, whose syntax representation is shown in Fig. 6e, includes gain information ("global_gain") and configuration information ("ics_info ()"). In addition, the frequency domain channel stream includes coefficient data ("scale_factor_data ()") that describe the scaling factors used to scale the spectral values of the different scaling factor bands, and which are used, for example, by scaling module 150 and re-scaling module 240. The frequency domain channel stream also contains arithmetically encoded spectral data ("ac_spectral_data ()") which represent arithmetically encoded spectral values.
[0347] Arithmetically coded spectral data ("ac_spectral_data ()"), whose syntax representation is shown in Fig. 6f, includes the optional flag ("arith_reset_flag") of the arithmetic restore to the initial state, which is used to selectively restore the initial state of the context, as described above. In addition, arithmetically coded spectral data contain a plurality of arithmetically coded blocks ("arith_data") that contain arithmetically coded spectral values. The structure of the arithmetically coded data blocks depends on the number of frequency bands (represented by the "num_bands" variable) as well as the state of the arithmetic recovery flag, as will be discussed below.
[0348] In the following, the structure of arithmetically coded data blocks will be described with reference to Fig. 6g, which shows a representation of the syntax of said arithmetically coded data blocks. The representation of data within an arithmetically coded data block depends on the number of 1g spectral values to be encoded, the state of the arithmetic flag restoring to the initial state as well as the context, i.e. from previously coded spectral values.
[0349] The coding context of the current set (e.g., 2-fold) of spectral values is determined according to a context determination algorithm, designated by reference numeral 660. Details of the context determination algorithm have been explained above with reference to Figs. 5a and 5b. The arithmetically coded block of data contains 1g / 2 sets of code words, with each set of code words representing multiple (e.g., 2) spectral values. The code word set contains the arithmetic code word "acod_m [pki] [m]" representing the m-value of the most-significant bitplan of the short spectral values using 1 to 20 bits. In addition, the code word set contains one or more code words "acod_r [r]" if the short spectral values require more bitplans for the correct representation than the most significant bitplan. The code word "acod_r [r]" represents a less significant bitplan using from 1 to 14 bits.
[0350] However, if one or more less significant bitplans are required for the correct representation of spectral values (in addition to the most significant bitplan), this is indicated by the use of one or more escape code words ("ARITH_ESCAPE"). Thus, it can generally be said that for the spectral value, how many bitplans (the most significant bitplan and potentially one or more less significant bitplans) are required. If one or more minor bitplans are required, this is indicated by one or more escape code words "acod_m [pki] [ARITH_ESCAPE]" which are coded according to the currently selected cumulative frequency table whose cumulative frequency table index is given by the variable "tufts". In addition, the context is adapted, as can be seen from reference numerals 664, 662, if one or more escape code words are included in the bit stream. After one or more escape code words, the arithmetic code word "acod_m [pki] [m]" is contained in the bit stream, as indicated by reference number 663, where "pki" is the currently valid index of the probability model (including context matching caused by arithmetic content escape code words), and where m is the value of the most-significant bitplan of the spectral value, to be encoded or decoded (where m is different from the code word 'ARITH_ESCAPE') ..
[0351] As discussed above, the presence of any less significant bitplan leads to the presence of one or more code words of the "acod_r [r]" code, each representing 1 bit of the least significant bitplan of the first spectral value and each also representing 1 bit least significant bitplan of the second spectral value. One or more words of the code "acod_r [r]" are coded according to the corresponding cumulative frequency table, which may for example be constant and context-independent. However, different mechanisms are available for selecting a cumulative frequency table to decode one or more words of the code "acod_r [r]".
[0352i In addition, it should be noted that the context is updated after encoding of each spectral value, as indicated by reference numeral 668, so that the context is typically different for encoding two consecutive spectral values.
[0353i Fig. 6j shows the definition legend and auxiliary elements defining the syntax of an arithmetically coded data block.
[0354i Furthermore, the alternative arithmetic syntax for "arith_data ()" is shown in Fig. 6h with the corresponding definition legend and auxiliary elements shown in Fig. 6j.
[0355i] In summary of the above, the bit stream format that can be provided by the audio encoder 100 and which can be evaluated by the audio decoder 200 has been described. The bit stream of the arithmetically coded spectral values is encoded in such a way that it matches the decoding algorithm discussed above.
[0356i In addition, it should be generally noted that the coding is an inverse decoding operation, so that the encoder can generally be assumed to perform a table review using the tables discussed above, which is approximately a reverse of the table review performed by the decoder. Generally, it can be said that one of skill in the art who knows the decoding algorithm and / or the desired bit stream syntax can easily design an arithmetic encoder that provides data defined by the bit stream syntax and required by the arithmetic decoder.
[0357i Furthermore, it should be noted that the mechanisms for determining the numerical current value of the context and for obtaining the index value of the mapping rule can be identical in the audio encoder and in the audio decoder, since it is typically desirable for the audio decoder to use the same context as the audio encoder, so that the decoding it was coded.
15. Alternative implementations [0358i Although some aspects have been described in the context of the device, it is obvious that these aspects also represent a description of the corresponding method, where the block or device corresponds to the method step or feature of the method step. Similarly, aspects described in the context of the method also represent a description of the corresponding block or position or feature of the corresponding device. Some or all of the method steps may be carried out by a hardware device or by using a hardware device, such as a microprocessor, programmable computer or electronic circuit. In some embodiments, some or all of the most important steps of the method may be performed by such a device.
[0359] The encoded audio signal may be stored on a digital storage medium or may be transmitted using transmission means such as wireless transmission means or wired transmission means such as the Internet.
[0360] Depending on some implementation requirements, embodiments of the invention can be implemented in hardware or in software. The implementation can be implemented using digital storage media, e.g. floppy disks, DVDs, Blue-Ray discs, CDs, ROMs, PROMs, EPROMs, EEPROMs or FLASHs containing electronically readable control signals that cooperate with them (or are capable of such interaction with the programmed computer system so that the appropriate method is implemented. Thus, the digital storage medium can be computer readable.
[0361] Some implementations may include a data carrier containing electronically readable control signals that are capable of interacting with a programmable computer system such that one of the methods described herein is implemented. [0362] In general, embodiments of the present invention may be implemented as a computer program product with a program code, which program code may operate to implement one method of the invention when the computer program product is running on a computer. For example, the program code can be saved on a machine-readable medium.
[0363] Other implementations include a computer program for performing one of the methods described herein, stored on a machine readable carrier.
[0364] In other words, an embodiment of the method of the invention is thus a computer program containing program code for implementing one of the methods described herein when the computer program product is running on a computer.
[0365] The further implementation is thus a data carrier (or digital storage medium, or a computer readable medium) comprising the computer program stored therein for carrying out one of the methods described herein. The storage medium, digital storage medium, or storage medium typically is real and not transient.
[0366] A further implementation is thus a data stream or a sequence of signals representing a computer program for performing one of the methods described herein. The data stream or signal sequence may, for example, be configured to be sent over a data link, e.g., via the Internet.
[0367] A further implementation comprises processing means, e.g. a computer, or a programmable logic device configured or adapted to implement one of the methods described herein.
[0368] Another implementation comprises a computer in which a computer program is installed to perform one of the methods described herein.
[0369] A further implementation comprises a device or system configured to transmit (e.g. electronically or optically) a computer program for implementing one of the methods described herein to a receiver. For example, the receiver may be a computer, mobile device, memory device, etc. The device or system may, for example, include a file server for sending a computer program to the receiver. [0370] In some implementations, the programmable logic device (e.g., a user programmable logic table) may be used to perform some or all of the functions of the methods described herein. In some implementations, the user programmable logic table may interact with a microprocessor to implement one of the methods described herein. Generally, the methods are preferably carried out by any hardware device.
[0371] The above described embodiments are merely illustrative for the principles of the present invention. It should be understood that modifications and variants of the systems and details described herein are obvious to those skilled in the art. It is therefore intended that the restrictions arise only from the scope of the following claims, and not from the specific details provided for the purposes of describing and explaining the present variants of the invention.
16. Conclusions [0372] In summary, the described embodiments include one or more of the following aspects, wherein the aspects can be used individually or in combination.
a) Context shortening mechanism [0373] States in the hash table are considered as significant group states and boundaries. This allows you to significantly reduce the size of the required tables.
b) Incremental context update [0374] Some implementations include a computationally efficient method of updating the context. Some implementations use an incremental context update in which the numeric current context value is derived from the previous numeric context value.
c) Acquiring context [0375] Utilizing the sum of two absolute spectral values is a clipping association. This is a kind of quantization of the spectral coefficient gain vector (as opposed to conventional quantization of the shape gain vector). It aims to limit the order of context, while providing the most significant information from the environment.
[0376] Some other techniques are described in unpublished applications PCT EP2101 / 065725, PCT EP2010 / 065726 and PCT EP 2010/065727. In addition, the stop symbol is used in some implementations. In addition, in some implementations only unsigned values are taken into account for the context.
[0377] However, the above-mentioned unpublished international patent applications disclose aspects that are still in use in some embodiments.
[0378] For example, zero area identification is used in some implementations. Accordingly, the so-called "small-value-flag" is set (e.g. bit 16 of the numeric current c value of the context).
[0379] In some implementations, area dependent context calculation may be used. However, in other implementations, area-dependent context calculation may be omitted to maintain relatively small complexity and small table sizes. [0380] Furthermore, shortening the context using the hash function is an important aspect. Context abbreviation can be based on the concept of two tables, which is described in the above-unpublished international patent applications. However, specific context shortening adaptations can be used in some implementations to increase computing performance. However, in some other implementations, context shortening may be used, which is described in the above-unpublished international patent applications.
[0381] Furthermore, it should be noted that incremental context shortening is quite simple and computationally efficient. Also, the independence of the context from the sign of the value that is
100 used in some implementations, helps simplify the context, thus maintaining a relatively low memory demand.
[0382] In some embodiments, context extraction using the sum of two spectral values and context limitation is used. These two aspects can be combined. Both are aimed at limiting the order of the context by passing on the most relevant information from the environment.
[0383] In some embodiments, a low value flag is used, which may be similar to identifying a group of multiple zero values.
[0384] In some embodiments, an arithmetic stop mechanism is used. The concept is similar to the use of the "end-of-block" symbol in JPEG, which has a similar function. However, in some implementations, the symbol ("ARITH_ESCAPE") is not explicitly contained in the entropy encoder. Instead, a combination of already existing symbols is used that could not have appeared before, e.g. "ESC + 0". In other words, the audio decoder is configured to detect combinations of existing symbols that are not normally used to represent a numerical value and to interpret the appearance of such a combination of existing symbols as an arithmetic stop condition.
[0385] The implementation uses a context shortening mechanism with two tables.
[0386] To summarize further, some embodiments may include one or more of the following four main aspects.
• extended context for detecting either zero areas or areas of low amplitude in the environment;
• shortening the context;
• context status generation: incremental context status update; and • context acquisition: specific quantization of context values, including amplitude summation and limitation.
[0387] To summarize further, one aspect of implementation lies in the incremental context update. Implementations may include an efficient context update concept that avoids extensive calculations in the draft (e.g. draft 5). Instead, some implementations use simple offset operations. A simple context update makes the context calculation much easier.
[0388] In some embodiments, the context is independent of the sign of the values (e.g., decoded spectral values). Context independence from the value sign
101 provides reduced complexity of the context variable. This concept is based on the statement that omitting a character in context does not lead to significant degradation of coding performance.
[0389] According to an embodiment, the context is obtained using the sum of two spectral values. Accordingly, the need for memory for context storage is significantly reduced. Accordingly, the use of a context value that represents the sum of two spectral values may be considered favorable in some cases.
[0390] Also, context limitation in some cases provides significant improvement. In addition to acquiring context using the sum of two spectral values, the entries of the context 'q' matrix are limited to a maximum of '0xF' in some implementations, which in turn leads to a reduction in memory requirements. This limiting the value of the context "q" matrix provides some benefits.
[0391] In some implementations, the so-called low value flag is used. When getting the context variable c (which is also marked as the numeric current context value) the flag is set if the values of certain entries "q [1] [i-3]" to "q [1] [i-1]" are always very small. Accordingly, context calculation can be performed with high efficiency. A particularly significant context value (e.g. numeric current context value) can be obtained. [0392] In some embodiments, an arithmetic stop mechanism is used. The "ARITH_STOP" mechanism efficiently stops arithmetic coding if only zero values remain. Accordingly, coding performance can be improved at a low cost of complexity.
[0393] According to an embodiment, a context shortening mechanism with two tables is used. Context mapping is performed using the interval split algorithm that evaluates the "ari_hash_m" table in combination with the next review of the "ari_lookup_m" table review. This algorithm is more efficient than the WD3 algorithm.
[0394] Some additional details will be discussed below.
[0395] It should be noted here that the tables "arith_hash_m [600]" and "ari_lookup_m [600]" are two separate 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
102 mapping a group of consecutive contexts, limited by context indexes in "arith_hash_m []", to a single probability model.
[0396] In addition, it should be noted that the "arith_cf_msb [96] [16]" table can be used as an alternative to the "ari_cf_m [96] [17]" table, even if the dimensions are slightly different.
"Ari_cf_m [] []" and "ari_cf_msb [] []" can refer to the same table because the 17th coefficients of the probability models are always zero. Sometimes this is not taken into account when calculating the required space for storing tables.
[0397] In summary of the above, some implementations provide the proposed new noise-free coding (coding and decoding) that causes modifications in the working version of MPEG USAC (for example in MPEG USAC, working version 5). These modifications can be seen in the attached figures as well as in the relevant description. [0398] In the final note, it should be noted that the prefix "ari" and the prefix "arith" in variable names, matrices, functions etc. are used interchangeably.
Fraunhofer-Gesellschaft zur Forderung der angewandten Forschung eV, Germany Representative:
103
EP 2 524 372 B1 Z-12989
90 members in 20 offices
Priority claims8
| Document | Office | Kind | Date |
|---|---|---|---|
| 29435710 | United States of America | P | |
| 29435710 | United States of America | P | |
| 11700402 | European Patent Office (EPO) | A | |
| 2011050275 | European Patent Office (EPO) | W | |
| 2011050275 | European Patent Office (EPO) | W | |
| EP20110700402 | – | – | – |
| US20100294357P | – | – | – |
| WO2011EP50275 | – | – | – |
Members90
| Document | Office | Kind | |
|---|---|---|---|
| CA2786944A1 | Canada | A1 | |
| CA2786945A1 | Canada | A1 | |
| CA2786946A1 | Canada | A1 | |
| WO2011086065A1 | World Intellectual Property Organization (WIPO) | A1 | |
| WO2011086066A1 | World Intellectual Property Organization (WIPO) | A1 | |
| WO2011086067A1 | World Intellectual Property Organization (WIPO) | A1 | |
| TW201145260A | Taiwan Province of China | A | |
| TW201145261A | Taiwan Province of China | A | |
| TW201145262A | Taiwan Province of China | A | |
| AR079886A1 | Argentina | A1 | |
| AR079887A1 | Argentina | A1 | |
| AR079888A1 | Argentina | A1 | |
| AU2011206675A1 | Australia | A1 | |
| AU2011206676A1 | Australia | A1 | |
| AU2011206677A1 | Australia | A1 | |
| SG182464A1 | Singapore | A1 | |
| SG182466A1 | Singapore | A1 | |
| SG182467A1 | Singapore | A1 | |
| KR20120109616A | Republic of Korea | A | |
| KR20120109621A | Republic of Korea | A | |
| EP2517200A1 | European Patent Office (EPO) | A1 | |
| CN102792370A | China | A | |
| EP2524371A1 | European Patent Office (EPO) | A1 | |
| EP2524372A1 | European Patent Office (EPO) | A1 | |
| KR20120128127A | Republic of Korea | A | |
| MX2012008077A | Mexico | A | |
| CN102844809A | China | A | |
| CN102859583A | China | A | |
| US2013013301A1 | United States of America | A1 | |
| US2013013322A1 | United States of America | A1 | |
| US2013013323A1 | United States of America | A1 | |
| MX2012008076A | Mexico | A | |
| JP2013517519A | Japan | A | |
| JP2013517520A | Japan | A | |
| JP2013517521A | Japan | A | |
| ZA201205936B | South Africa | B | |
| ZA201205938B | South Africa | B | |
| ZA201205939B | South Africa | B | |
| HK1177649A1 | Hong Kong, China | A1 | |
| HK1178306A1 | Hong Kong, China | A1 | |
| KR101336051B1 | Republic of Korea | B1 | |
| KR101339057B1 | Republic of Korea | B1 | |
| KR101339058B1 | Republic of Korea | B1 | |
| MX2012008075A | Mexico | A | |
| US8645145B2 | United States of America | B2 | |
| US8682681B2 | United States of America | B2 | |
| RU2012141242A | Russian Federation | A | |
| AU2011206675B2 | Australia | B2 | |
| AU2011206677B2 | Australia | B2 | |
| AU2011206676B2 | Australia | B2 | |
| CN102792370B | China | B | |
| CN102859583B | China | B | |
| JP5622865B2 | Japan | B2 | |
| JP5624159B2 | Japan | B2 | |
| US8898068B2 | United States of America | B2 | |
| AU2011206677B8 | Australia | B8 | |
| AU2011206677B9 | Australia | B9 | |
| TWI466103B | Taiwan Province of China | B | |
| TWI466104B | Taiwan Province of China | B | |
| EP2524372B1 | European Patent Office (EPO) | B1 | |
| CN102844809B | China | B | |
| TWI476757B | Taiwan Province of China | B | |
| US2015081312A1 | United States of America | A1 | |
| ES2532203T3 | Spain | T3 | |
| RU2012141241A | Russian Federation | A | |
| MY153845A | Malaysia | A | |
| EP2517200B1 | European Patent Office (EPO) | B1 | |
| ES2536957T3 | Spain | T3 | |
| RU2012141243A | Russian Federation | A | |
| PL2524372T3This record | Poland | T3 | |
| JP5773502B2 | Japan | B2 | |
| PL2517200T3 | Poland | T3 | |
| CA2786944C | Canada | C | |
| CA2786946C | Canada | C | |
| CA2786945C | Canada | C | |
| AU2011206675C1 | Australia | C1 | |
| EP2524371B1 | European Patent Office (EPO) | B1 | |
| MY159982A | Malaysia | A | |
| MY160067A | Malaysia | A | |
| PT2524371T | Portugal | T | |
| US9633664B2 | United States of America | B2 | |
| ES2615891T3 | Spain | T3 | |
| PL2524371T3 | Poland | T3 | |
| RU2628162C2 | Russian Federation | C2 | |
| RU2644141C2 | Russian Federation | C2 | |
| BR112012017256A2 | Brazil | A2 | |
| BR112012017258B1 | Brazil | B1 | |
| BR112012017256B1 | Brazil | B1 | |
| BR122021008583B1 | Brazil | B1 | |
| BR122021008576B1 | Brazil | B1 |
Numbers
- Publication, DOCDB
- 2524372
- Publication, EPODOC
- PL2524372T
- Application
- 700402
- Application, DOCDB
- 11700402
- Application, EPODOC
- PL20110700402T
Titles2
- English
- AUDIO ENCODER, AUDIO DECODER, METHOD FOR ENCODING AND DECODING AN AUDIO INFORMATION, AND COMPUTER PROGRAM OBTAINING A CONTEXT SUB-REGION VALUE ON THE BASIS OF A NORM OF PREVIOUSLY DECODED SPECTRAL VALUES
- Polish
- Koder audio. dekoder audio, sposób kodowania i dekodowania informacji audio i program komputerowy uzyskujący wartość podobszaru kontekstu w oparciu o normę uprzednio zdekodowanych wartości widmowych
Classification
- CPC, 7
- G10L19/02
- G10L19/00
- G10L19/0017
- G10L19/002
- G10L19/0208
- G10L19/032
- G10L19/06
- IPC, 2
- G10L19 00
- G10L19 02