CA2267764A1 - Variable length audio coding using a plurality of subband bit allocation patterns - Google Patents

Variable length audio coding using a plurality of subband bit allocation patterns Download PDF

Info

Publication number
CA2267764A1
CA2267764A1 CA002267764A CA2267764A CA2267764A1 CA 2267764 A1 CA2267764 A1 CA 2267764A1 CA 002267764 A CA002267764 A CA 002267764A CA 2267764 A CA2267764 A CA 2267764A CA 2267764 A1 CA2267764 A1 CA 2267764A1
Authority
CA
Canada
Prior art keywords
region
transform coefficients
quantized
bits
encoding
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
CA002267764A
Other languages
French (fr)
Inventor
Brant Helf
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Polycom Inc
Original Assignee
Individual
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Individual filed Critical Individual
Publication of CA2267764A1 publication Critical patent/CA2267764A1/en
Abandoned legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04BTRANSMISSION
    • H04B1/00Details of transmission systems, not covered by a single one of groups H04B3/00 - H04B13/00; Details of transmission systems not characterised by the medium used for transmission
    • H04B1/66Details of transmission systems, not covered by a single one of groups H04B3/00 - H04B13/00; Details of transmission systems not characterised by the medium used for transmission for reducing bandwidth of signals; for improving efficiency of transmission
    • H04B1/667Details of transmission systems, not covered by a single one of groups H04B3/00 - H04B13/00; Details of transmission systems not characterised by the medium used for transmission for reducing bandwidth of signals; for improving efficiency of transmission using a division in frequency subbands

Abstract

Transform coefficients of audio signal samples are grouped into subbands. A predetermined number of subband bit allocation patterns (encoding categorizations), specifying parameters including quantization step size, dead zone, maximum bits, vector dimension, and a variable length code for each vector, are available. Subband bits are assigned in accordance with the quantized power distribution over the subbands, and the bit allocation patterns selectively chosen in accordance with a fidelity criterion and a maximum bit rate. The quantized power, transform coefficients and the selected bit allocation pattern (encoding categorization) identity are transmitted to a decoder, where, using the known encoding categorization, the coded data are inverse-transformed and dequantized into a reconstructed audio signal.

Description

Variable Laigth Audio Coding Using a Plurality of Subband Bit Allo~atioit Patterns Backcrround of the Invention This invention relates generally to audio signal ' S encoding and decoding methods and apparatus and more particularly to encoding and decoding methods and apparatus for reducing the number of bits required to transmit digitized audio signals and enable reproduction of the audio signal at a remotely located decoder.
As is known in the art, audio signals are sometimes transmitted to a receiver by first converting the audio signals into corresponding digitized samples.
Each digitized sample is made up of a number of bits, for example 8 or 16 bits. In order to reduce the reduce the number of bits transmitted, i.e., the bit rate, various encoding methods and apparatus have been suggested. The encoding method attempts to reduce the bit rate, while enabling reproduction of the audio signals at a remotely located decoder.
~.mmary of the Invention In accordance with one feature of the invention, an audio signal encoding method and apparatus are provided wherein overlapping groups of the digitized samples of an audio signal are converted into frames of transform coefficients. Each frame of transform coefficients is grouped into regions. The power in each region is determined, quantized, indexed, and variable bit-length encoded. A categorization procedure determines a predetermined number categorizations using the quantized region power indices and the number of bits remaining after region power encoding. Each categorization specifies a quantization and encoding category assignment for each region, where each category defines a quantization step size, dead zone, vector dimension, and variable bit-length coding table and associated decoding tables. For each categorization, the quantization and encoding category for each region is selected in accordance with the quantized power indices in the region, the quantized power indices in a11 the regions, and the number of available bits. The number of bits required to transmit the encoded transform coefficients using each categorization is determined.
The transform coefficients are encoded using one of the categorizations selected in accordance with a maximum bit rate criteria. The encoded quantized region power indices, an identification of the selected categorization, and the encoded transform coefficients are transmitted to a decoder.
In accordance with another feature of the invention, the quantized power in each of the regions is decoded and reconstructed from the transmitted quantized power indices. The same set of categorizations that the encoder determined are determined using the quantized power indices and the number of bits remaining after region power decoding. The selected one of the categorizations is determined from the identification thereof transmitted to the decoder by the encoder and the quantization and encoding category assignment is determined for each of the regions from the determined categorization. For each region, from the determined category for the region and the reconstructed quantized power in the region, a transform coefficient reconstruction level table, the vector dimension, and a variable bit-length decoding table are determined. The quantized transform coefficients are reconstructed for each region from the transform coefficient reconstruction level table, the vector dimension, and the variable bit-length decoding table. The transform coefficients are transformed into a time domain audio signal.
With such method and apparatus, high quality reproduction of the audio signal is achieved for a broad range of signals including music, speech and speech degraded by background noise and reverberance.
Brief Description of the Drawincrs~
These and other features of the invention will become more readily apparent from the following detailed description, taken together with the accompanying drawings, in which:
FIG. 1 is a flow diagram of a method for encoding an audio signal in accordance with the invention;
FIG. 2 is a flow diagram of a method for decoding an audio signal encoded by the method of FIG. 1 in accordance with the invention;
FIG. 3 is a block diagram of an encoder adapted to encode an audio signal in accordance with the invention;
and FIG. 4 is a block diagram of a MLT transform coefficient quantization and encoding module of the encoder in FIG. 3 using a representative one of predetermined number of categorizations;
FIG. 5 is decoder adapted to decode an audio signal encoded by the encoder of FIG. 3 in accordance with the invention;
FIG. 6 is a block diagram a variable bit-length decoding and MLT reconstruction module used in the decoder of FIG. 5; and FIGS. 7A through 7C is a flow diagram of the categorization procedure used by the encoder of FIG. 3 and the decoder of FIG. 5.
Description of the Preferred Embodiments ENCODING AND DECODING-GENERAL OVERVIEW
. Referring now to FIG. 1, the steps used in encoding an audio signal are shown. Thus, in accordance with step l00, overlapping groups of the digitized samples of an audio signal are converted into frames of transform coefficients and each frame of transform coefficients is grouped into regions. In accordance with step 102, the power in each region is determined, quantized and variable bit-length encoded. In accordance with step 104, using the quantized power indices and the number of remaining bits, a set of categorizations is determined. Each categorization has quantization and encoding category assignment for each region. Each category defines a quantization step size, dead zone, vector dimension, variable bit-length coding table and associated decoding tables. In accordance with step 106, The quantization encoding category for each region is selected in accordance with the quantized power in the region, the quantized powers in a11 the regions, and the number of available bits. In accordance with step 106, quantization and variable bit-length encodings are applied to the transform coefficients using each categorization. Also, the number of bits required to transmit the encoded transform coefficients using each categorization is determined. In accordance with step 108, one of the categorizations is selected in accordance with a maximum bit count criteria and the transform coefficients are encoded accordingly. In accordance with step 110, the encoded power, an identification of the selected categorization, and the encoded transform coefficients are transmitted to a decoder.
Referring now to FIG. 2, the steps used in decoding the encoded audio signal are shown. Thus, in step 200 the quantized power in each of the regions is decoded and reconstructed from the transmitted quantized power indices. In accordance with step 202, the same set of categorizations that the encoder determined are determined using the quantized power indices and the number of bits remaining after region power decoding. In 5 PCTlUS97/17770 accordance with step 204, the selected one of the categorizations is determined from the identification thereof transmitted to the decoder by the encoder and the quantization and encoding category assignment is determined for each of the regions from the determined categorization. In accordance with step 206, for each region, from the determined category for the region and the reconstructed quantized power in the region, a variable bit-length decoding table, the vector dimension, and a transform coefficient reconstruction level table are determined. In accordance with step 208, the quantized transform coefficients are reconstructed for each region from the variable bit-length decoding table, the vector dimension, and the transform coefficient reconstruction level table. In accordance with step 210, the transform coefficients are transformed into a time domain audio signal.

More particularly, referring now to FIG. 3, an 2o encoder 9 is shown fed by an incoming audio signal that is fed to line 10. The audio signal on line 10 is converted into digitized samples, here into a stream of 16 bit linear PCM samples at a sampling rate of 16000 samples per second, by an analog to digital (A/D) converter 14. The digitized samples are fed to a frequency spectrum analyzer, here a Modulated Lapped Transform (MLT) 16. The MLT 16 provides a projection from the time domain onto a set of orthogonal basis functions. Here, each group of 640 digitized audio signal samples are used by the MLT 16 to compute a frame of 320 MLT transform coefficients. Every 20 milliseconds (ms) the most recent 640 digitized samples are used to w compute one frame of 320 transform coefficients centered at 25 Hz intervals. To put it still another way, a first group of 640 samples are fed to the MLT 16, and 20 milliseconds later a second group of 640 samples are fed to the MLT 16, it being noted that the 640 of the second group include 320 of the samples of the first group.
Thus, the samples of the incoming audio signal fed to the MLT 16 are thus windowed into a series of overlapped windows, each window having digitized samples of two time-domain frames, each time-domain frame having 320 samples. It is noted that for 16000, 24000 and 32000 bit/second operation, the allotment of bits per frame is 320, 480 and 640, respectively. Further, the encoder 9 is adapted to operate with the same sample conditions as the G.722 ITU (International Telecommunications Union) audio transmission standard.
The MLT 16, as noted above performs a frequency spectrum analysis on the samples and thereby converts the 640 samples from the time domain into the into a frequency domain representation. Here, the MLT 16 transforms the 640 samples into 320 frequency components, or transform coefficients. It is noted that each frame of 640 samples is processed independently and therefore each frame of MLT transform coefficients is coded independently. Further, the MLT transform coefficients are here at 25 Hz intervals and are divided, or grouped, into here 14 regions Ro-R13, each having 20 transform coefficients, respectively. Thus, each region spans 500 Hz. It is noted that here only the 14 lowest frequency regions, or 280 transform coefficients, are used.
Next, the spectral energy, or power, is determined for each of the regions 0-13 by region power quantization and encoding module 22. More particularly, the square root of the average power in each of the regions is computed and quantized in module 22. The lowest frequency region is coded with here 5 bits and the others are differentially coded (with respect to each other-not the previous framej. More particularly, the quantized power for each of the regions is encoded in module 22, using a variable bit-length code (i.e., entropy code), here a Huffman code. The code bits which represent the quantized power in the regions are produced by module 22 on line 26 (i.e., code bits), for transmission on transmission channel 27 via a multiplexes 28 to a decoder 30 (FIG. 4). Typically, 45 to 65 code bits are used to represent the spectral energy, or power (i.e., amplitude) envelope of the power over the regions. Thus, the quantized spectral energy, or power, for each region is transmitted in an encoded format to a transmission channel 27. The region power quantization and encoding module 22 also produces the corresponding bit count on line 29. Module 22 also produces the corresponding power quantization level indices Pp-P13 for each of the fourteen regions on line 31. These indices Pp-P13 are referred to herein as rms_index[r], where r is the region index from 0 to 13. In this illustrated embodiment, each MLT
transform coefficient in a region is first normalized by the corresponding square root of the quantized average power for the region, and then scalar quantized. (This is operationally equivalent to quantizing the un-normalized MLT transform coefficients with a step size that is the product of the region's quantized root mean square (rms) power and the step size associated with a selected quantization category (i.e., here eight categories, category 0 through category 7) for the region, to be described). It is noted here, however, that a separate quantization category, or quantization step size, (i.e, category 0 through category 7) is assigned to each of regions 0-13, the collection of categories for each region defining one of a predetermined number of, here 16, categorizations (i.e., Categorization 0 - Categorization 15). As noted above, there are 8 quantization categories; i.e., category 0 _ g through category 7. Category 0 has the smallest quantizer step size and uses the most bits. Category 7 has only one quantization output value, set to "0". For each category, there are the following quantization parameters: quantization step size (i.e., stepsize), dead zone expansion parameter (i.e., deadzone rounding), maximum scalar quantization index (i.e., kmax), decoder reconstruction levels, vector dimension for combining scalar quantization indices (i.e., vd), and a variable bit-length code for each vector (i.e., u). For each category there also is an expected bit consumption.
Thus, for a categorization, one of the eight quantization categories is assigned to each region and then each of the normalized MLT transform coefficients in the region is scalar quantized using the step size (i.e., stepsize) that corresponds to that category. The resulting quantization indices are combined into vectors and the resulting vectors are Huffman coded.
To put it another way, the quantization category is determined using the spectral energies, or powers, determined above for a11 the regions. For each categorization, the transform coefficients are quantized based on the quantization step sizes associated with the quantization category assigned to each region by the categorization. That is, each of the normalized MLT
transform coefficients in a region is scalar quantized using the step size that corresponds to that category for that region. The resulting quantization indices are combined into vectors and the resulting vectors are encoded, here using a Huffman code, and the total number of bits required to transmit the quantized information, in accordance with that categorization encoding method, is determined.
Since this process produces an a priori unknown number of bits, it may be necessary to adjust the category assignment for some regions so that the total number of bits in the frame comes close as possible to meeting, but does not exceed the allotment. Therefore, a plurality of perturbed category assignments (i.e., S categorizations), here 16, is determined for the regions based upon a predetermined set of rules, to be described.
For each categorization, the total number of bits required to transmit said quantized information in accordance with quantization step sizes resulting from the perturbed category assignments is determined. Based upon a fidelity criteria (i.e., smallest possible quantization step sizes) and a maximum channel bit rate, one of the categorizations and its quantization step sizes is selected for transmission through the channel 37. The transform coefficients are quantized in accordance with the selected quantization steps by modules 420-4213~
More particularly, for each frame 4 bits are used to select one of the 16 possible categorizations. Here, a categorization specifies a category assignment for each of the 14 regions. In the illustrated embodiment, the categorizations are indexed inversely in terms of total expected bit consumption. Categorizations are determined by a preset rule, or principles, to be described, and index order neighbors will differ only in one region and in that region the category indices will differ by only 1.
The quantized transform coefficient indices are grouped together into vectors and then encoded for transmission to the channel 27 in the selected one of the quantization and encoding modules 40~-40l5. Then the resulting code bits are applied to multiplexes 28 along with the quantized powers on line 26 and an identification of the selected categorization on line 66.

The decoder 30 (FIG. 5) can reconstruct an audio signal from the information received over the channel 27.
A categorization procedure module 32 is provided.
A categorization consists of one category assignment for each of the 14 regions. The categorization procedure module 32 computes 16 possible categorizations for the regions according to a predetermined rule, or principles described below.
The first principle is that if the power in a region A is 2X db greater than the power in a region B, then the quantization step-size applied to unnormalized MLT transform coefficients in region A should be greater by X dB than the step size applied to unnormalized MLT
transform coefficients in region B. Equivalently, the quantization step-size for the normalized MLT transform coefficients in region A should be X db smaller than the quantization step-size for the normalized MLT transform coefficients in region B. In this categorization procedure 32, if region A comprises lower spectral frequencies than region B, then for some categorizations its quantizer step size may be X+3 db smaller than region A's.
The second principle is that the ratio of signal power in a region to quantization noise in that region should not exceed some threshold beyond which the quantization noise is fully perceptually masked by the signal power. This principle is implicit in the fact that the smallest step size (0.3536 for category O) is not very small.
Thus, the categorization module 32 produced 16 categorizations (Categorization 0 through Categorization 15) on lines 340-3415, respectively, as indicated.
The categorizations (Categorization 0 through Categorization 15) are fed to quantization and encoding modules 400-4015. An exemplary one of the modules, here module 40o is shown in FIG. 4. The module 40o in response to: the categorization, here Categorization 0 (i.e, the category assignment for each region); the MLT transform coefficients in the regions Ro-R13; and the set of region power quantization levels, Po-P13, performs a sequence of operations. This sequence is: combined normalization and quantization of the MLT coefficients (module 500-5013), grouping of the scalar quantization indices into vector indices (module 510-5113), and variable bit-length encoding of the vector indices (module 5205213). For each region, each of these three operations is performed in accordance with the category assignment for that region, here determined by Categorization 0. Code bits which represent the quantized MLT transform coefficients are produced by module 52 on lines 530-5313 (i.e., code bits).
The code bits on lines 530-5313 are fed to a bit stream assembling module 54 which orders, or arranges the variable bit-length codes on line 59o for a switch 60 (FIG. 3). Modules 401-4015 operate in a similar manner to produce code bits on lines 591-591s~
The modules 520-5213 each also produce the corresponding bit count on lines 540-5413. These bit counts are summed in module 55 which produces a total MLT
coefficient coding bit count for Categorization 0 on line 580. Modules 401-4015 operate in a similar manner to total bit counts for Categorizations 1 through 15 on line 58l-5815, respectively. Module 62 determines the number of bits available for MLT transform coefficient transmission. This module 62 starts with the predetermined number of bits per frame on line 64 (here 320 bits per frame for 16000 bits per second operation) and subtracts from it the region power bit count on line 29. The result is reduced by a bit count of four, which is the number of bits which will be used to the categorization selection. The result is the number of bits available for MLT transform coefficient transmission. Module 62 examines the bit counts on lines 580-5815. The module 62 then identifies categorizations with bit counts not in excess of the number of available bits for MLT coefficient transmission. From the identified categorization, module 62 selects the categorization with the lowest indexed categorization, e.g. it prefers Categorization N to Categorization N+1.
Module 62 provides the four bit representation of this categorization index N, on line 66 for switch 60 and multiplexer 28.
Switch 60 couples selected MLT transform coefficients code bits on one of the lines 590-5915 to multiplexer 28 via line 61. The multiplexer 28 couples the bits on lines 26, 66, and 66, sequentially to channel 27. Multiplexer produces fill-bits as needed to fill up the frame.
THE MODULATED LAPPED TRANSFORM (MLT) 16 The Modulated Lapped Transform or MLT 16 is a critically sampled, perfect reconstruction linear transform with basis functions that overlap between frames.
The inputs to each MLT are the newest 640 time domain samples, x[n], n=[0,639], where x[0] is the oldest sample.
The outputs are 320 transform domain values mlt[m], m=[0,319].
mlt[m] - SUM n=[0,639]sqrt(2/320) sin((n+0.5)*PI/640) cos((n-159.5)*(m+0.5)*PI/320) * x[n]
This can be decomposed into a window, overlap and add operation followed by a type IV Discrete Cosine Transform (DCT) .

WO 98I15945 PCT/US97l17770 WINDOWING
The window, overlap and add operation is:
v[n] - w[n]*x[n] + w[319-n]*x[319-n], n=[0,159]
v[n+160] - w[319-n]*x[320+n] - w[ri]*x[639-n], n=[0,159]
where w[n] - sin((n+0.5)*PI/640), n=[0,319]
The type IV DCT is:
mlt[m] - SUM n=[0,319]sqrt(2/320) cos((n+0.5)*(m+0.5)*PI/320) * v[n]
(It should be noted that a fast transform techniques may be used to reduce the computation time required for the DCT.) POWER AMPLITUDE ENVELOPE COMPUTATION AND ENCODING (Module 22) As noted above, the MLT transform coefficients are divided into 14 regions of 20 transform coefficients.
Region r includes MLT transform coefficients 20r through 20r+19, where r ranges from 0 to 13. The 40 highest frequency MLT transform coefficients represent frequencies above 7000 hz. These are discarded. The square root of the mean power in each region is determined, as follows:
rms[r] - square root of ((SUM [n=o,19]
mlt[20*r+n]*mlt[20*r+n])/20.0) A quantization index rms-index[r] is then determined for each region r. The possible quantization values are the set 2~((i+2)/2), where i is an integer in the range [-8,31]. The rms-index[O] is further constrained to the range [1-31]. A log domain metric is used so that the values which get quantized to 2~(i/2) range from 2~((i-0.5)/2) to 2~((i+0.5)/2).
The rms_index[0] is the first data transmitted for each frame. The most significant bit (msb) of this index is transmitted first. The value of 0 for rms index[0] is reserved as an escape code. The other 13 indices are differentially coded and then Huffman coded for transmission. The largest differences which can be coded are +il and -12. When necessary, valleys are adjusted upwards to allow the peaks which follow them to be accurately represented, as follows:
for (r = 12; r >= o; r--) ~if (rms_index[r] <
rms_index[r+1] - 11) rms-index[r] - rms-index[r+1] - 11;}
for (r = 1; r < 14; r++) {j = rms-index[r] -rms_index[r-1];if (j < -12) {j = -12;

WO 98I15945 PCT/US97l17770 rms-index[r] - rms_index[r-1] + j;}
differential rms_index[r] - j;}
The differences, are transmitted in order of region. They are coded in accordance with the variable bit-length codes defined below.
The leftmost bit is transmitted first.
iat ditteraatial region~over_bits(141(2a) .
{99.99.99.99,99,99,99,99,D9,99.99.99,99.99.99,99,99.99.99.99,99,99.99,99y, { 4, 6. 5. 5) 4) 4, 4, 4. 4, 1) 3, 3, 3, 4, 5, 7, B, 9.11.11.12,12.12.11(.
{10, 8, 6, 5, 5, 4, 3. 3. 3. 3. 3. 3, 4, 5, 7, 9.11.1Z,13,15. I5.15,16.16(, {1Z.10, 8, 6, 5, a, 4, 4, 4, a, 4, 3, 3) 3. 4, 4) 5. 5) 7, 9,11.13,14,l4}, (13,10) 9. 9) 7, 7) S. 5. 4) 3, 3, 3, 3. 3, 1, 4) 4, 5. 7, 9.11.13.13,13), (15,13.10, 8, 6, 6, 5, 5, 4, 4, 3) 3, 3, 3, 3. 4, 5) 5, 6, 7, 9,11,14,11E, (11.11, 9) 8, A. 7, 5, 4, 4, 3) 3, 3, 3, 3, 4, 4, 5, 5) 7) 8.10.13.14,14 k (15,16,15.I2.10. 8, 6, 5, 4, 3) 3, 3, 1, 3, 4, 5, 5, 7, 9.1I.13,16,16,16(, {14,14.11,10. 9. 7. 7, 5. 5) 4. 3, 3, 3, 3, 3, 1, 5) 7, 9, 9,12,14.15,15f, { 9, 9, 9, 8, 7, 6, 5. 4, 3, 3, 3, 3. 3, 7, 1, 5, 6, 7, 8,10,11,13,13.13 0 {14.12,l0, 8, 6, 6, 5, 4, 7, 3, J, 3, 3. 7. 4. 5. 6, 8, 8, 9,ll.la,14,11~) (l3.10, 9, 8, 6, 6, 5, 4. 4, 4, 3. 3. 2, 3, 4, 5, 6. 8, 9, 9.11.13,14,14), {16,13,11.11) 9, 6, 5, 5, a, 4, 4, 3, 2, 3) 3, 4, 5, 7, 8,10,14.16,16,16), {13.14,14,14,10, 8, 7) 7, 5. 1. 3. 3. Z. 3, 3, 4. 5, 5, 7, 9,11.11.i4,14~~;
int ditterential rngion_power_eodso(i4~(141 .
( 0, 0, 0, 0, 0, 0, 0, 0. 0) 0, 0, 0. 0. 0. 0, 0. 0, 0) 0, 0, 0, 0, 0. 0}, ( 8,38,i8,10. 7. 6. 3, Z, 0, 1, 7. 6) 5, 4,11,78,l58.318.1178,1379.2552.2553.3554,3555}, (36) A, 3, 5, 0) 1, 7, 6, 4, 3, 2, 5. J) 4) 5.19.74,15D.J01,1313,1Z14.1Z15,Z414.24Z5() (1582.644,160.41. 5.l1. 7. 5. 4, 1) 0. 6, 4, 7, 3, 6.
1.Z1,81.323.1190.5167,10332.10333f) {7940.366,181.180,47,46,27,10, 8, 5, l) 0, J, 7, 4, 9,11.36,44,18Z.734,2941,2912,2943', {39A2,7967,994,249,63,26.19,18,l4, 8. 6. 1) 0) 2, 5, 7,12,30,=7,1Z5.196.1990.15932.15933}, {3Z54.1626.407,206,10Z,100,30.14, 3. S. 3, 0, Z, 4, Z,13,34,31.101,107,812.6511,13020,130Z1', {1110,2Z16.1111.139,35, 9) 3,20,1l. 4, 2, 1, 7, 7, 1) 0,Z1.
5,16,68.376,2217.2218.Z219}, {1013.1014,127,6Z.19. 6) 4,i6, 0, 1) 3, Z. 3) 1. 5, 9,17) 5.Z8,30,Z5Z,lOlS,ZOZ4,ZOZ5', {381,380,77Z,191.94,44,ifi,10, 7, 3, 1, 0, Z, 6, 9,17,45,9Z,187,746.1494.2991.5980,5981), {3076.758,188.45,43,10, 4, 3, 6. 4. Z. 0, 3, 7.,11,20,41,14,16,95,378.3037,3038.3039f, {751.93.45,10 g 6) t,12) 7, 4, 0) 4, I, 3, 5) 5, 3.27,21.44,47,186,374,1500,1501), (45572.5697,Z849.1425.357,45,23, 6,10. 7, Z) Z. 3, 0, 4, 6, 7.88,l79,713,1139Z,15573,45574.45575, {1511.50l6,5D18.5017,312,79,38,36,30,14, 6) 0, Z) 1, 3, 5, A,31.37.157,6Z6.5019,50Z0,5031)~;

The quantized indices for the quantized and encoded power amplitude envelope are fed to line 46.
CATEGORIZATION PROCEDURE (Module 32) A categorization consists of one assignment for each of the 14 regions. That is, for each of the 14 regions, a categorization assigns one of the eight categories. The categorization procedure module 32 computes 16 possible categorizations for the regions according to preset rules, or principles. More particularly, the categorization procedure determines quantizer step-sizes or associated categories in accordance with the following two principles:
1. The first principle is that if the power in a region A is 2X db greater than the power in a region B, then the quantization step-size applied to unnormalized MLT transform coefficients in region A should be greater by X dB than the step size applied to unnormalized MLT
transform coefficients in region B. Equivalently, the quantization step-size for the normalized MLT transform coefficients in region A should be X db smaller than the quantization step-size for the normalized MLT transform coefficients in region B. (In this coder, if region A
comprises lower spectral frequencies than region B, then for some categorizations its quantizer step size may be X+3 db smaller than region Ass.) 2. The second principle is that the ratio of signal power in a region to quantization noise in that region should not exceed some threshold beyond which the quantization noise is fully perceptually masked by the signal power. This principle is implicit in the fact that the smallest step size (0.3536 for category 0) is not very small.
It is vital for interoperability that given the same inputs different implementations of this procedure produce identical categorizations. The inputs to this procedure are:
number of available bits = the number of bits remaining after power amplitude envelope coding and rate control (i.e., categorization) rms_index[] - the array of 14 integers which specify the region power quantization levels in 3.01 db steps.
The category assigned to a region determines the quantization and coding parameters for that region and also an expected total number of bits for representing the quantized MLT levels in the region. Because a statistically-based variable bit-length coding method is used, here the Huffman code, the actual number of bits will vary depending on the MLT transform coefficients in the region. That is why it is necessary to compute multiple possible categorizations.
It is noted that in this illustrated embodiment, there are 8 quantization categories. The expected bit totals are given in an expected bits table, as follows:
expected bits table category expected number of code bits per region) The procedure first computes raw category[region]
- -rms_index[region] for each region. For any integer offset in [-64,63] the equation j[region] -Max{O,MIN{7,(raw category[region]+offset)/2}}
assigns categories to regions in accordance with perceptual masking principles. The total expected number of MLT code bits is expected number of code bits = SUM region=[0,13]
expected bits table[j[region]]
The value of offset is then adjusted until the smallest offset is found such that expected number_of code bits < number of available bits.
(A binary search can be used for this purpose.) The initial power categories[region] is then set to Max{O,MIN{7,(raw category[region]+offset)/2}}.
Once this categorization is found, 15 other categorizations are derived by adjusting the category in one region per categorization. First max rate categories[region] and min rate categories[region]
to initial-power categories[region] are initialized.
Also initialized are:
max bits and min bits =
expected number of code bits max rate categories[region] -initial_power categories[region], region = [0,13]
min rate categories[region] -initial~power categories[region], region = [o,13]
max bits = expected number~of code bits min bits = expected number of code bits Then 15 times max bits+min bits is compared to 2*number of available bits. If max bits+min bits <_ 2*number of available bits then a new categorization with a larger expected number of bits is needed. Otherwise a categorization with a smaller expected number of bits is needed.
If a categorization with a larger expected number of bits is needed, the lowest frequency region for which the category is not already 0 and raw category[region] +
offset - 2*max rate categories[region] is at least as small as for any other region is found. The category for this region is reduced by one in max rate categories[].
Then the expected number of bits for this new categorization is computed and max bits is set equal to it.
If a categorization with a smaller expected number of bits is needed, the highest frequency region for which the category is not already category 7 and raw category[region] + offset -2*max_rate categories[region] is at least as large as for any other region is found. The category for this region is increased by one in min rate categories[]. Then the expected number of bits for this new categorization is computed and min bits is set equal to it.
In this way produce 16 categorizations are produced that can be ordered in terms of expected number of bits are produced. Categorization 0 has the largest expected number of bits and Categorization 15 the smallest. Each categorization is the same as its neighbors in the ordering except in a single region where the categories differ by one.
It should be noted that the categorization procedure described above, may be modified to include a third principle. The third principle for the categorization procedure is that signal power in one region can mask quantization noise in another region and that this masking effect is greatest when the regions are spectrally near. Using only the first two principles the category assignment for a region is not influenced by the spectral nearness of the power in other regions. Adding the third principle makes spectral distance matter. It would change the equation above raw category[region] --rms index[region] to:
2~rms index[region] raw category[region] - -log of SUM r - [o,13] (weight[region,r] * 2~rms_index[r]);
where weight[region, r] is some fixed function that declines as spectral distance (;region - r;) increases.
Notice that if weight[region, r] were a constant then this expression would reduce to raw category[region] --rms index[region] + some constant.]
FIGS. 7A-7C are a flow diagram showing steps 300-324 used in the categorization procedure in accordance with the first two principles.

SCALAR QUANTIZED VECTOR HUFFMAN CODING (SQVH) (Module 40p-4015) MLT transform coefficients in categories 0 through 6 are normalized, quantized, combined into vectors, and then Huffman coded. The MLT transform coefficients are first normalized and scalar quantized with dead zone expansion. The resulting quantization indices are then combined into vector indices. Finally, the vector indices are variable bit-length encoded.
For regions assigned to category 7, no bits are transmitted.
For regions for which the category is not category 7, the encoder normalizes and quantizes in modules 420-4213 and 44 the absolute value of each MLT transform coefficient, mlt[i], to produce quantization index k[i]:
k[i] - max~whole number part of (x*absolute value of mlt[20*region + i] + deadzone rounding), kmax};
where x = 1.0/(stepsize * (quantized rms value for the region)) and stepsize, deadzone rounding, and kmax are given in the following TABLE:
TABLE
category stepsize deadzone rounding kmax 0 2.0~-1.5 0.3 13 1 2.0~-1.0 0.33 9 2 2.0~-0.5 0.36 6 3 2.0~0.0 0.39 4 4 2.0~0.5 0.42 3 5 2.0~1.0 0.45 2 6 2.0~1.5 0.5 1 These indices are combined into vector indices.
( The properties of the vectors are given in the following table:
vd . vector dimension vpr . number of vectors per region a . (kmax+1)~vd which is the number of distinct vectors category vd vpr a o z l0 196 In general, index[n] is calculated according to the following:
vector index[n] - SUM over i=[O,vd-1] (k[(n*vpr)+i]
(kmax+1)~(vd-(i+1))) The number of bits required to represent a vector with index vector index for category x is in the mlt sqvh bitcount category_x table, below. The corresponding code bits are in the mlt sqvh code category_x table, below. These numbers are then summed together with the numbers sign bits to determine the total number of bits required to represent this region with this category:
number of region bits[region] - SUM n=[O,vpr-1]
mlt vector_quant bits[category][vector_index[n]].
The mlt sqvh bitcount category x and mlt sqvh code-category_x tables are below:
iat mlt,sqvti bitcouat category 0(l961 .
1. 1. 6. 6, 7. 7, A, A. 8, 9. 9.10,11.11, t, 5) 6, 7) 7, 8. A. 9) 9, 9, 9,10.I1,11. 5) 6, 7) S, 8, 9, 9, 9. 9.10,10,10,11.13, 6. 7) 8, 9, 9) 9, 9.10,10,10.10.11,12,13. 7. 7, 8, 9. 9, 9,10,I0, WO 98/15945 PCT/US97/1?770 10,10.11.i1,12,13, 8, 8. 9. 9. 9.10,10,l0,10,11.
11.l2.13.14, 8, 8, 9. 9.10.10,1i.11,11.12,12,13.
13.15, 8, 8) 9, 9,10,10.11.11,11.13.12,13.1i,18, 9, 9, 9.10,10,10,11,11.12.13,12,I4,15.16. 9, 9, 10,10,10,10.11,12,12.14,14,16.16.16, 9. 9.l0,10.
11.1L 12.13.13.14,14,15.15.16.10,10,10,11.11.12.
12,13.15.15.16.14.15.15,11,11,11.12,13.13.13,15, 16,16,16,16,14.15,11.11,12,I3.13,14.15.16,16,16, 16.16.18.14 g int mlt,sqvh~codc_categosy_0(196! - {
1, 2. i, 24, I4, 51, 9, 68, 110) 26, 2l8. 54, l54, 761. 3, 10, 32. 8) 58. 22. 71, 16, 30, 50, 213. 75. 94, 632) 15. 18, 52, 23, 10T, 5. 54, 63, 239, 46, 276, 27l. 85l. 252. 28. 10, 12, 1, 22, l33) 191, 95. 105. 278, 317, S54, 3l0, 2T6, 32, 50. 94, 30, l87. 219, i3. 268.
Q73. l45, 14S. 849, 1377, 6Z3, 1, 14, 0, 55. 238. Z21, 120. 269, 318, S30.
639. 11l7) 509. 556, 24. 78. 51, 153, 61, 308. 16, 25. 68, l058, 42B) 277.
1233, 11l1. 93, l08) 14l, 223, 270, 381, 34, 2l2, 760. 35. l063, Z79, l717.
349) T) 31. 152. 73, 309. 310, 95) 944, 1890, 2232. 1891. 5107.10213. 4981. 61, 62, 9, 79. 474, 475, 8a8, i059, 1056, 1716. 139, 4978, 49A3. 4983, 140, 196. 76, 444.
144. 633. 1057, 83B, 2237, 4471, 44?3.10212,10212, 49A3. 74, 78, 311, 2i3.
850, 1061.
1119, 50A, 276. 2'17, 498Z, 4473,102l2,10212. Z08. 70. 555) 418. 68, 5I0) 2553. l115.
19A0, 4979, 49B2. 49B2. 4473.10212. 215. 71, 3S3. 511. 839. 17l8, 24B8, 6B76, 6877, 49'l9, 4979. 49B2. 498Z, 4473t1 int m11 aqvh bitcouat_category 1(100I . {
1) 4. 5, 6, 7. 8, 8, 9.10,l0, 4) 5) 6, 7) 7, 8, 8) 9, 9,l1, S) 5, 6, 7) 8, 8) 9. 9,10.1l. 6, 6.
7. 8, 8, 9. 9.10.11,12) T, 7) 8) 8) 9, 9.10.1l, 11.l3, 8, 8, 8, 9) 9,10,10.11.12.14. 8, 8, 8, 9, 10,11,11,12,13.15, 9, 9. 9,10.11.12.12,14,14,14, 9, 9, 9,10,11,12,14,16,14,14,10,10,i1,12,13,14, 16,16,16,14 a !nt mlt ~qvh coda cstegory 1f1001 - {
1, 2, Il" 27, 31, 9. 120, 31. 275. 310, 1, 0. 12, S. 33. 54, 10S, 111. 246, 441, 10. 14, 31, 39, 59, l00) 1l4. 202, 48S, 969. 24. 26) 76, 52, 103, 30, 1Z0, 342, 69, 1244, 35. 32, 14. 61. I13. 117, 233, 486, 487. 2491, 13, 12. 69, 110, l49, 35, 495, 449, 1978, 77S1. 76, 75, 121. I36, Z13. 6B, 6Z3. 930, 3959, 996l. 1l5. 16, 107, 235. 424, 850. 1936. 7916. 4981.
498l.
14B, 1S4, Z43, 407, 988, 851, 7750,19920. 7916, 4981, 406. 274, 464, 93l.
3871. 791T, 19921.19920,19920, 7916Er int mlt sqvh bitcouat_catsgory~,2I49) . {
l, 4, 5, 7, 8, 9,l0, 3, 4, 5, 7, 8, 9,l0, 5. 5, 6. T, 8,10,10, 7, 6, 7) 8, 9,10.12, 8, 8, 8. 9.
10,12.l4, 8) 9) 9,10,11,15.i6) 9.10,11.i2,13,16.
15t int mlt aqvh coda category 2(t91 1, 0, 10, 11, 28, 62. 363, 3, 2, 9, 8, 24, 53. 353, 7, 1, 13, 25) 89, 74, 355. 10, 23, 24, 29, 55. 354, 1449, 25, 19. 30, 5Z, 108, 438, S793, 91, 36, 63, 353, 715,11584,23170, 1A0, 75, 218, a39, 2B97.23171.
11584y int m11 aqvts bitcount eategosy_3(6Z5! . {
2, 1, fi) 8,10, 5, 5.'6, 8,10. ?, 8, 8,10,12. 9.
9.10.12.15.10,11.13.16,16. 5. 6, 8,10,11. 5. 6, A,10,12. ~. 7, A,10,13, 9, 9,10.12.15.12.11,13, 16.16) ?, 9,10,12.l5. 7, 8.10,12,13, 9, 9,11,Z3) 16,11,11.12.14.16,1Z,12,14,16,14. 9,11,13.16.l6.
9.10.13.15,16,10,11.11.16,16,13,13,16,16,16.16.
16,13.16,16,11.13,16,16,15,11.13.I5.16,16,13.13, 16,16,16,1a.16.16.16,16,16.16.16,16,16, ~) 6. 8, 10,l3, 6. 6, 8.10.i3. 9. 8,10.13.i6.10,10,11.15, 16,13. R .14.16.16, 5, 6. 8.11,i3, 6, 6, 8,1D.13.
B. 8, 9,11,14,10,10.i1, R,16,13,12,13.15.16. 7) 8, 9,12.l6, 7. 8.10,l2,14, 9. 9.10.13,16,11.10, 12.15.I6.13.13,16,16,15. 9,11.13,16,16, 9.10.l2) 15.16,10.11,13,16,16,13.12.16.16,16.I6,16,16.16, 16,11,13.16.16.16,11.13.16.16,16,12.13.15.16.16.
16,16.16.I6,16.16,16,16,16,16, 6, 8,1l,13.16) 8, 8.10,12.I6.11.10,11.13,16.12.13.11.i5.16,16,16, 14.16,1S. 6. 8.10,l3.16, 8. B.10,12,16.10.10.11.
13,16,13.13.13,16,16,14,14,14,16,16, 8, 9.I1.13, 16, 8, 9.1L 16.14,10,10, R.15,i6,1Z.12.13,i6,16, 15,16,16,16.16.10,12,15.16,16,10,12,12,14,16,12.
13.I3.16.16.I4.I5,16,16,16.16.16,16,16,16.13.15) 15,16,16,13,13,16,16.14.14.16.16,16.16.16,1B,16, 16,16,I4.15.16,16.16) 8,10,11,I5,16,10.11.13.16, 16,13.13.14,16.16.16,16,16,16.16,16,16,16,16.16, 8,10,1i.15,16. 9.10,12.16,16,13.13.I5.16.16.16, 14,16.16,16.16.I6.16,16,16, 9.11,11,16.16,10.11, 13,16,16.14,13.14.16,16.16.15.15,16,16.i6.16.16, 16,16,i1.13.16.16.16,11,13,1S.16.16,13,16.16.16, 16,16.16,16,16,16,16,16.16,16,16,15,16,16,16.16, 14.16.16,16.16,16.16.16,16.16,16,16,16.16,16,16, 16,16,16.l6. 9.13,16,16,16,11.13,16,16.16,11,15, 16,16,16.15.16.16,16.16.16,16.16,16,16, 9.l3,15, 15,16.12.13,14,16,16,16,15.16,16,16,16,16.16,16.
16,16.16.16,16,I6,11,13.15.16,16,1Z,14,16,16,16) 16,16,16.16,16.16,16.16.16.16,16,15.15,16,i6,16, 16,16,16.16,16.16,16,16,16,16,16,16,16,16,16,I6, ls,is.ls.is.IS,IS,IS.ls.is.ls.is,is,is,ls,ls,ls, 16,16,13.16,16.16.16,16,16.16.16,16.16,16.16.16, lift int e~lt aqvh cods catagosy 7I6251 3. A, 46, 145, 29B. 4, 8, 4T, 28, 455, 89, Z, l80, 5, 1315, 250.
12. 64t, l311, l39. 7Z9. Z51. 87O, 3I73, 2311, 5, Z3, 1l2, 334. 1469, 21, 3, 5, 1l1. Z014, 88, 79, ISZ, l24, 36A5, 29?. 48. 110, Z310, 149. 501, 1Z71, I53, 2Z67, Z569. 57, 13. 651, ZSAT, 1i3) 75, 1Z4. 1Z8, Z611, 5Z42, 6I, 50, 253.
3633.
22l6, 476, 39. 57. 19Z6. 2Z36, 25B6) 13Z9) 1920. 2566. 19Z6. 39i, 233, 2590, 2240, 2ZlT, Z53, 613, A67, 144, 3l8. 614, 25Z, 25A9) 334Z, Z218, 87Z. 866, 2l87, 3Z96.
2I55, Z568, Z337, 150, 256T, 2Z96. 199, 2686, Z160, 2390,19145, 232, 1680, 118, 219Z, 22I2, Z684, 793, 228l. 2Z23. 224Z, 1934, 3l65) 2146) 229i. 2Z96. 2222. 2I89. 21A7, 2I96, 2296, 6. 4, 1=, 72S. 363I. 15. 31, 56, S99. 148, 3. 167, 4Z, 41l. 230l, 735, 65t, 930. 13T, 23B6, 869, 1334, l931. Z300. Z213. 9) 22, 146, 1290, 5Z40. 5, 13) 53, 63O, 8T1, 80. 9, 8. Ai, 200Z, 21O, 117. 56) 3019. Z162. 146. 397, 86B, 13l. 215l, 77, l60, 365, 36I0, 2Z5Z. 59. 54, 41, 359:, 19ZA. 336, 14, Rl, 579Z, Z295, 119T, 7Z1.
408. 130. Z15?, 3675, l55. 3573, Z517) l30, 3i4, 64) 144, 2Z73. 2i76, I15. 30, 40l, l53, 2590, 61i, Zi. 471?, 21Z1. 21T1, 2613, 1863. 23T3, 3l9, Z150, Z17?) 2l94.
2S71. 235T, 3l9, 65, l45, 2251. 2l56. Z161, 909) A64, Z191, 3197, 2246. 358A, 579T, l56, 2258, 2Z11, 215A, 3l99. ZZ14. 2152. 3l9. 3188, 2264. 257Z, 3l9, 3i9. 30, 117, 2I9) 865.
3Z63, 147, 1Z7) 239, i10. 2Z4'7. Z7, 33i, l461, 36H1, 3l80. 13Z8. 5Z41. 147) 14Z, 2237, 2Z41) ZZ45, 19Z1. 2Z61, 143) 41, ll. 505, 368Z, 259I, 0, Z6, 239, 2015, 2577, 46~. 91, 87, 5147, 21i6, i49. Z016, 5344, ZilO. 218, 9373,12598,11599. 2I35. 2l90, 141, 29A, l004, 5Z45, 2T77. l56. 104, Z54, Z560, 19ZZ, 6R, 3Z5, 201T, 1Z9, 25ea. I608, 1330, 87i, Z144) 3145, 112) Z147, Z148, 3149, 2l44, 1l9) i331) l33) 2l53) 115t, 211) 58, 26O9, 1923.
2159. 5I0, 163, 5Z46, 2i61, Z164, 19Z4, 134, 216?. 2l61, 1l61, 2169, 21T0, Z1?1. 3I61, 2l61, 133Z, 13S, 1l6. 2I75. Z153. 150) 873. 21T8, Z179, 1931, 19Z5. Z181, 31AZ, 2183, Z163, 2184, 31A5, 2116, WO 98l15945 PCT/US97/17770 2l68, 2l68, 19Z4. 134. 2l67. 2l68, I168, 58, 326, 268T, l38. 2l91, 31, 66, 874) 1195, 2l96, 151. 152) 195T) 2200. 220l, 2201) 1203. 2204, 2305) 2206. 2207, 2208, 2T09. 22l0, 220S.
55. 103. 1230. 1d0, 22l5, 1l8. 15, l333, 23l9. 2330, 301B. 511, 141. 2224.
2335. 2226.
1929. 222B. 3Z39, 2330. 223l, 2232. 3133) 2234. 22Z9, 366. 100S, 1930, 2238.
2139. 12, l006, 52t7, 2243. 2Z14. 193Z. 3634, l933, 2348, 2149. 2150. 145. 146. 2Z53, 2Z53, 2354, 2355, 1156.
2253. 2253, 129l. 5793, 2259. 2T60) 2Z61, 4T7, 3794, 1a7. 2365, 2366. 5T95, Z268, 2269, ZZTO, Z270. 11T1. 227Z, 2273, 2Z74. 2374. 3Z75. 3276. 2I93. 2l74. 227i. 118. Z278.
1379. 2380. 2Z60.
l935. 2282) 2283. 21B4, Z265, 228S. 2Z86. 228T. Z270, Z270, 228A, Z389, Z273) 2374, 2Z74, Z371, 2Z72, 2Z73. 2274. 2271, 233. 5796. 239Z) 2293, 2294. 129Z. 3714, 3Z97, 229A.
2=99. 2000, 15l.
230Z. 2303. 22D0. 153. 2561. 256Z. 2S63, 220b, 2S64, 2565. 2304. 2Z05. 2Z05.
363, l54. 154, i55. 2S70, 54, 37Z5. 2001, 2574. 25T5) 2576, 15?, 2578, 2579) 2234) 2580, 258i, 2581, 2S83, 2329. 25A4) 2585. 22Z8. 22Z9. 32Z9. 6S4, S798, 15B, 2589, 2238, 239Z, 2003.
159Z, 2593, 2Z43, 2594. 2595. 2S96. 2S97, 234A, 2S98. Z599. 2600, 2253, 2253. 2Z50, l45, 146.
2Z53, 2Z53) 2601.
260Z, 2603) 2604. 2260, 2605. I606. 260T, 6336, 2265, 6337, 6338, 6339. T370, 2270, 6340. 634i.
2Z73, 2274, 2274. 337I, 2Z72, 2273, 2Z74, 2Z74, 63i2. 6343. 22S9, 21b0, 2260,38388,382B9, I47.
23i5. 3Z65, 5795. 2268. 2269. Z270. 2Z70. Z271. 2272, 2Z73, 2Z74, 2I74. 32T1, 2Z7=. 23T3. 13T4, int mlt sqvh bltcount_category 4(3561 2, 4. 7,l0. 4, 5. 7,10. 7. 8,10,14.11.11,15,15, 4, 5. 9.1Z) 5, 5. A.12. 8, T,10.15.11.11.15,15, 7) 9,11,15. 8, 8,12.15.10.10.13,15,14.14,15.13) 11,13,15,15,11.13.15.15,14.15.15.13.15.15.13,13.
4, 5) 9,l3) 5) 6, 9,l3, 9) 9.11,15.14.13.15.15.
t, 6, 9, u, 5, 6) 9.l3. 9, 8,11.15.13,12,15.15, 7, 9,1I,15; T, 8.11.15.10,10,14.15,14.15,15.11.
I0.11.iS.15.11.13.15,15.15.i5.15.14.15.15,11,14, 6, 9.13.14, 8) 9,13,15,13,12.15.15,15.15.15.15, 7) 9,13,l5. 8) 9,12,15,11.32.15.15,15.15.I5,15.
9,11.15,1S. 9,11.15,15.14.14.15,15.15.15,15,15, 14,15,15.15.14.15.15,15,15,15,15,15,14.14.15,15, 9,12,15.15,12,13.15.15.15,15.15,15,15.15.15.I5, 10.12.15.15.12.1i,15.15,15,15.15.15.I5.15.15,15, 14,15,15,15,15.15.15.15,15.15,15,15,14,14,15,15) 15,15.15,15.15.15.15.15,14,14.15.I5.14.I4,15.15Ef int mltyqvh code category 1t156) .
l, Z) 4. 5T1. 10. 0. 69, 71Z. 91, 10. 46, 9181, 14Z6, 1430,3017Z.30194.
9, 28. 22. 335A, 16, 25, 141) 2l79) 15. 111. T19, 1531. 1I31, 143T, 1510.30l96) 88, 383, 3A03.30193. 13) 236. I856,30166, S45. 95i) 5T09, 15Z2, 3Z41.
91A0,30179, 5709) 10B8. 4356.30410.30175, 1146, 377,3016Z.30163. A715,30176.30165.
5709,30197.30184, 57d9. 5709, 1) 23) 28. 57i0, 2b, 14, 29, T538. 10Z, l03. 14Z9) 1534, 3Z37.
T060.30401,30201.
15. 13, 470. 3768. 24) 15, 281, 574T, 24, 181, 1128.30Z06. 57I1, 353l.30156.30158.
116, 100, 2Z50.30187) 119. 234, 1764,3017l, 7i6, 8B3. 91A3,30161. 3236, 15Z8,30180, 9l83.
A85. 287C. 1S33.30160, 143l. S708.30193.30105,30402,30168,30I73, 9183,30157.30161. 91B3. 9i83, 54. ZS. 16Z1.15211. 1S0, I87, 2361.3919A, 80A, 81l.304i1.30413,30414.21986.2198T.30411.
34, 273, 376,30l59. l37, Z80, 1A71, l523, I768. 2Z59. 1515,30I67, 15I6.30169,30170, 1523.
443. 1t34, 15Z7.30174) 474, 1769,301T7.30178, 3I38, 3I39.301B1,30181.30183,301H3,30181.301~1.
3240,30185.30186. 1517, 91A1.3018A,30189,30I77,30190,30191.30181,30181, 3338, 3Z39.30181,30111, 440, Z857, 1519.30i95, 2194, 70i1, 1530.30199,30100.
153l,30Z02.30411.30203,30Z04,30411,30411.
103, 28T2.30207.30400, 1S9.11492.30403,30404,30405.30406,30407, i575.30408.70409. 15Z5, l525.
89l4, 1533,301l3. 15Z7, 1534. 1535.304l5.30177,304I6,30417,30181.30181. 3138.
3239.30181,30181, 30418,30419. 15Z7. 1537.30420,30411,30177,3017T, 3Z38, 3239.30181,30181, 3238, 3239,30181,301Bi~i int mlt sqvts bitCOaat_categosy 5IZ43~ -I, 4, 8, 4, 5. 9. 9.l0,14, 4, 6,I1. 5. 6,13,I0, 11.l5. 9,11,15,10.13.15,14.15, 6, 4, 6,I3, 6, 7, 13.12.1Z,15. 5. 7.13, 6, 7.13,1Z.13,15.10,12,15.
11.13.15.15.15, 7. 8.13,15.11.12,15.15.15. 7.10) 13.15.12,15.15,15.15, 7,i5,15. 7.l5,15. 7. 6, 7, 7, 4, S.11. 5. 7,11.11.12,15. 6. 7.13. T, 8.l4) 12,14.15.11.13.15.12.13.15.15.15, 8, 5, 6,Z3. 7, 8,15,12,i1./5, s. 9,14) 7, 8,i5.14.15.15,12,12.
15,i2,13,15,15.3.5, 8, 9,13.15.12.13.15.15,15, A, 11.13,15.13.i3,15,15.15, 8,14,l5. 8.15.l5, 8, 7, 8. A, 8,10,15,11,12,15,15,l5, 9,10,12,15,12,13.
15.1S.15, 8.l4,15, 7,l5.15) 8, 7, 8, 8, 8.12.l5.
13,13,15,15.I5, 8,11.13.13.13.15,15,15.15, 8,l5.
15) 8,15,1S, 8. 7, 8, B,14,15, 6,15.1S, 8, 7, A.
8,15.15, 8,15,l5. 8. 7. 8, 8. 6, 8, 8, 7, 8. 8, 7, 8, B~J
iat mlt aqvh code category 5(213l 0, 5. 2Z0, 10, I6, 443, 390, 39I,10333) 11, 26, l566, 26, 54, 3135. 50A.
1558.285A1, 255, l782,28599, 885. 6208,28578,l4335.28579, 54, 9, 35, 3l29, 27.
6A.
3537, l562. 356A,28610, 2S. 62, 4078, 58, 118, 7763, 3l07, 7758,28563, 778, 3131.2859A, 7A0, 7123,2A630,2A593.2A586, 118, 243) 6210.2A614, 10l8, 3567,28601,28611,28S70, 68) 3AA, 6256.3A619, 1559,2A562.38606,28565.38591, 118,28594,2A571. 62.986l8.28590, 11A, 5A. 118, 11d. 1, 28) i781, 71. 60, 3l34. 193A. 3881.28574, 25, 96, 77S7, 49, l26,14244, 3AA3.14334,286I3, Z769, 4077,386O2. 3106. 7756,28582.2862l.28566, l26, I1, 61) 4079. 6I, 138.2A491. 3536. 8153.28573, 49. 96,12412, 119, 210,18490,12443,28560,2856i.
3i11, 75A0.
28564, 3130. 7759.28567,2856A,2A569, 240, 144, 6209,28571, 35i9, 6211.28575,285?6,2A577, 138.
77A. 7760.28580, 7761, 7762.28583,28584,285A5. 210,14319.28S87.
96.285A8.28589, 310, 119, 210, 240, l39, 961,28593, l554. 3511,2A595,2AS96,38597, 60, 971, 3560,28600) 3581, 7l39, 21103,18604,2860b, 126,11332.I8607, 96,28608,18609, 126, 49, l26, 1Z6) 241, l558,28612.
I563. 6257.28615.18616.28617. 138. 1559, 7133,2869O, 6220,28631.18623,28634,2A625, 240,2A636, 2862T, 96,28628.28629, 240, 119, 140, 240, 81S2,28631, 61.38632.Z8633, 138.
61, 138, 138,28634.2A635. 96.28636,28637, 240, 119) 240, 240, 49. 96, 96, 1I9) 240, 2i0, l19, 240, 240 M
iat mlt sqvh bitcouat_catagory 6(32l ~ {
1, 4, 4, 6, 4, 6, 6, 8, 4) 6. 6) 8, 6, 9, 8,l0, 4, 6, 7, 8, 6, 9, A,11. 6, 9, A.10, 8,l0, 9,11)J
let mlt aqvh cads_category s(321 ~ {
1, 2. 4) 2, 5, 29, 24. 101. 3) 31. 28. 105. 3, 5. 102, 124, 1, 30) 0, l07, 2T, 200) l03, A06, 1, 1, 104, 407, 3, 425, 2l3, A09~t Ji CODING THE MLT VECTOR INDICES (Module 520-5215) The vector indices are transmitted on line 49 in spectral frequency order. They are coded in accordance with the variable bit-length codes defined in the tables ' 5 above. The leftmost bits are transmitted first. Sign bits corresponding to non-zero scalar indices immediately follow each vector index code. The sign bits are also transmitted in spectral frequency order. (The encoding tables map some vector indices into codes which will be decoded as another vector index, when the first vector index has corresponding total power that exceeds the maximum possible for an entire region, that is, 20 times the square root of 2.) RATE CONTROL (Module 62) For each one of the 16 categorizations, the total number of bits actually required to represent the frame is computed. This includes the bits used to represent the power amplitude envelope, the 4 rate-control bits (i.e., an identification of the selected one of the 16 possible categorizations), and the bits needed for the SQVH coding of the MLT transform coefficients.
From the categorizations which yield bit totals that fit within the allotment, one is selected. (Some implementations may always select the lowest indexed categorization.) If none of the categorizations yields a bit total that fits within the allotment, the categorization that comes closest (normally 15) is selected. Then, code bits may be transmitted until the allotment for the frame is exhausted. Alternatively, some MLT transform coefficients may be requantized to indices that use fewer bits so that all code bits in the frame may be transmitted.

THE ENCODER BIT STREAM OUTPUT (Multiplexer 28) There are three main data types transmitted on channel 27: power amplitude envelope, rate control (i.e., selected categorization) and SQVH MLT transform coefficient indices. The power amplitude envelope is transmitted first. It is transmitted in order from the lowest frequency region to the highest. The first region is coded with 5 bits. Each of the remaining 13 regions is coded with a variable number of bits.
Rate control on line 45 is transmitted next. Rate control always uses 4 bits. The SQVH MLT transform coefficient indices on line 49 are transmitted last. The SQVH codes are transmitted in spectral frequency order from lowest to highest. The SQVH MLT transform coefficient indices are coded with a variable number of bits. Depending on the categorization, some regions get no bits. Generally, some trailing fill-bits are needed to fill out a frame's allotment. The default for these bits is a11 1's with a final zero.

BIT FIELD ORDERING
Amplitude ; region 0: 5 bits Envelope ; region 1: variable number of bits ; region 2: variable number of bits region 3: variable number of bits region 4: variable number of bits region 5: variable number of bits region 6: variable number of bits ; region 7: variable number of bits region 8: variable number of bits region 9: variable number of bits region 10: variable number of bits region 11: variable number of bits ; region 12: variable number of bits region 13: variable number of bits Rate Control ; 4 bits Scalar ; region 0: variablenumber of bits Quantized ; region 1: variablenumber of bits Vector ; region 2: variablenumber of bits Huffman ; region 3: variablenumber of bits MLT ; region 4: variablenumber of bits Frequency Coefficients ; region 5: variablenumber of bits region 6: variablenumber of bits region 7: variablenumber of bits region 8: variablenumber of bits ; region 9: variablenumber of bits region 10: variable bits number of region 11: variable bits number of region 12: variable bits number of region 13: variable bits number of Frame Fill ; variable number of bits SQVH MLT Transform Coefficient Coding for One Region with N vectors vector amplitude index 0 ; variable number ofbits sign bits for non-zero ; variable number ofbits MLT freq. coefficients in ;

vector amplitude index 0 ;

;

vector amplitude index 1 ; variable number ofbits i sign bits for non-zero ; variable number ofbits MLT freq. coefficients in ;

vector amplitude index 1 ;

i vector amplitude index N-1 ; variable number ofbits , sign bits for non-zero ; variable number ofbits MLT freq. coefficients in ;

vector amplitude index N-1 ;

WO 98I15945 PCT/US97l17770 THIS IS AN 87U1l1DLE 08 17C BOIDZTB IN fiNCODINO ON8 PRAM.
encoder mlt coefficients(]:
0- 9: 0.3 0.3 1.6 0.3 -0.5 I.1 -4.T 1.9 18.0 -A9.5 10- 19:, 1103.0 -67A.9 -5i.9 i9.7 2.5 -2.1 -5.6 5.0 1l.0 -11.0 20- 29: -i4.1 -20l.1 2T5.0 33.B -10.4 1.7 -3.7 -1.2 3.8 -4.0 30- 39: -s3.8 9i.4 -260.4 -159.6 -37.5 -16.7 4o.8 -11.9 a3.6 5.1 40- 49: -8.T -l00.6 27l.8 -420.8 -483.d -167.0 -4T.3 -32.6 2D.2 -3.8 50- 59: -1.0 0.8 18.1 14.7 137.3 -13I.7 -52.l -6.I 7.5 -0.5 60- 69: -6.0 -6.A 1.6 l0.3 -2l.1 -43.6 35.S I7.4 -1.4 -3.6 70- 79: -2.9 5.4 0.8 8.5 -20.1 6.9 -1.5 -5.5 -0.7 9.Z
80- 89: -4.0 0.5 -5.3 -2.8 8.0 -11.5 24.0 5.4 -I1.0 -1B.0 90- 99: -6.1 -0.1 1.8 -3.0 0.8 -6.4 8.0 -7.0 -4.4 1.0 l00-109: 1.1 -1.3 -0.0 -0.1 0.3 -0.5 5.1 -3.B 7.6 4.8 120-i19: -0.5 -0.5 0.7 1.8 1.7 -0.6 1.3 -1.4 3.6 -1.6 110-I19: -3.0 -2.1 -0.9 -2.3 -l.Z -1.8 2.1 -2.1 1.7 -1.0 13Q-l39: 1.7 -0.9 -14.i -7.5 4.3 -1.4 -1.0 I6.T -l6.1 10.5 140-1t9: -18.9 1B.8 16.3 -0.T -3.9 -6.0 0.5 0.6 -3.4 5.6 150-l59: -l3.0 20.3 -14.0 -9.1 1l.4 19.0 14.4 7.9 1l.9 -9.4 160-l69: 2Q.5 -17.1 4.3 9.2 -13.i -Z0.4 -16.5 -0.9 1.3 0.0 170-179: 1.0 -1.2 1Q.0 -13.6 I.3 9.1 7.0 -4.1 -1.8 -2.~
1A0-189: -4.6 1.1 -I5.9 6.0 -0.6 -0.5 2.1 4.9 -0.3 -0.7 190-199: 0.6 -1.1 -0.2 3.9 -2.6 0.5 1.9 -1.5 -5.1 -1.6 200-109: -3.4 -0.4 3.5 -4.4 2.7 6.3 -9.4 1.8 1.7 -6.3 I10-1i9: -B.3 -i3.7 -3.3 0.1 -0.3 -1.1 3.a -4.5 -0.6 1.4 230-229: -1.7 -0.3 -1.0 -0.4 -0.1 0.1 0.1 -0.0 0.1 0.1 230-339: -O.1 -0.0 -0.0 -0.1 -0.1 -0.1 0.0 0.0 -0.1 -0.1 140-Z49: O.i -0.0 0.1 0.0 0.0 0.1 0.1 -0.0 -0.0 -0.0 250-1S9: O.l 0.1 0.1 -0.0 -0.1 -0.0 -0.1 -0.1 0.3 -0.1 260-769s 0.~ -O.l -0.0 -0.7 0.3 0.3 0.1 0.1 -0.7 -O.Z
370-Z~9: -O.0 -0.6 0.1 0.7 -0.1 -0.3 -1.4 i.l -0.3 -0.7 encoder amplitude envelope:
region: 0 1 2 3 4 5 6 7 8 9 10 11 12 actual rms(]:106 168 15 9 2 7 13 11 4 5 0 0 I
3l0 qatsd s:ma 91 181 16 8 3 8 11 11 4 6 0 0 1 (] : 361 sms_index(]:11 13 6 4 1 4 5 5 1 3 -4 -9 bit count: 4 7 4 3 4 4 3 1 3 3 6 5 7 total rms bits index(] . 60 PROCBDCRH
aueber o! bits par !tease . 310 nusbar of rate control bits - 4 xa~r of available bits . 156 BIbDIRY S871RCA POR OFPBST TWIT YI8LD8 AN INITIAL CATSOORSZATION
WITH fiX?8C~8D BIT COONT CL088 TO T!~ ll0I~B8R OP 71VAILA8L8 SITS
0 1 2 3 4 5 6 7 8 9 10 il 11 13 0:0 0 0 0 0 0 0 0 0 0 0 I 3 0 16s0 1 0 4 5 6 5 4 4 6 5 7 7 7 52 47 52 29 23 16 22 39 29 i6 22 0 0 0 336 24: 3 5 4 7 7 7 7 7 7 7 7 7 7 7 20: 1 3 2 6 7 7 7 6 6 7 7 7 7 7 47 37 43 16 0 0 0 16 16 0 0 0 0 0 l75 18: 0 2 1 5 6 7 6 5 5 ~ 6 7 7 7 51 43 4'7 2Z 16 0 16 23 22 0 16 0 0 0 256 19: 1 3 2 5 6 7 6 6 6 7 7 7 7 7 47 37 43 22 I6 0 16 16 16 0 0 0 0 0 2i3 'r!~ WITfiOPPBBT 18 INITIAL
CATBGOI:IZATION
IS

0 2 1 5 b 7 6 5 5 7 6 7 7 7 TH8 CATEGIOttIZJITION CATBGORIZATION9 PROCSDDRB
N011 D8T87tMIDT88 T8$ rOLL~Oyttrtf'i Category For sash Cstegorizatioa Hy Regi~

0: 0 1 0 ~ 5 b 5 S 5 6 6 7 7 7 1: 0 1 0 4 5 '7 5 5 5 6 6 7 7 7 2: 0 1 1 4 5 7 5 S 5 6 6 7 7 7 3: 0 2 1 4 5 7 5 5 5 6 6 7 7 7 4: 0 2 1 4 5 7 5 S S ? 6 7 7 7 5: 0 3 1 4 5 7 6 5 5 7 6 7 7 7 6: 0 2 1 4 6 7 6 S 5 7 6 7 7 7 ?: 0 2 1 5 6 7 6 5 5 1 6 7 7 7 8: 0 2 1 5 6 7 6 5 5 7 7 9 7 7 9: 0 Z 1 5 6 7 6 5 6 7 7 7 7 7 10: 0 2 1 5 6 7 6 6 6 7 7 7 7 7 Il: 0 3 2 5 6 7 6 6 6 7 7 7 7 7 11: 0 3 2 5 6 7 6 6 6 7 7 7 7 7 13: 1 3 2 5 6 7 6 6 6 7 7 7 7 7 1: 1 3 2 5 6 7 7 6 6 7 7 7 7 7 15: 1 3 2 5 ~ 7 9 6 6 7 7 7 7 7 Tt~ POLLOitINCi TABLt 8IT
9H01P8 lbTRLB

81Cp8GTED R8f3I0N
POR
T!~

CATBGORIZ

ib~ected ion Number O!
Bits Por Each Catsgorizatioa 8y Reg 0 1 2 3 4 5 6 ~ 8 9 10 11 12 13 total 0: 52 47 52 29 22 16 11 23 22 16 16 0 0 0 3l6 1: 52 4T 52 29 21 0 22 23 Z2 16 16 0 0 0 30C

2: 53 47 49 29 23 0 22 22 22 16 16 0 0 0 29S

3s 52 43 47 29 13 0 21 22 22 16 16 0 0 0 991 4s 57 43 4? Z9 11 0 22 2Z 21 0 16 0 0 0 175 S: 53 43 47 29 23 0 16 22 22 0 16 0 0 0 369 6s 53 43 49 29 I6 0 16 32 23 0 16 0 0 0 263 7: 52 43 49 23 16 0 16 I3 22 0 i6 0 0 0 256 8: 52 43 47 2I 16 0 16 22 22 0 0 0 0 0 210 9: 52 43 47 23 16 0 16 2I 16 0 0 0 0 0 334 10: 52 43 47 33 16 0 16 16 16 0 0 0 0 0 13i 11s 51 43 43 2Z 16 0 16 16 16 0 0 0 0 0 314 1S: 52 39 43 2T 16 0 16 16 16 0 0 0 0 0 2l1 13: 47 39 43 2Z ifi 0 16 16 16 0 0 0 0 0 2l3 14s 47 37 43 23 16 0 0 16 16 0 0 0 0 0 l97 15: 47 37 43 33 0 0 0 iB 16 0 0 0 0 0 1d1 TH8 10LI~OWINO T718L5S BHON THE J1CTQAL 8IT TOTALS 8Y RSGION A1~ CATSQORY
region ~ 0 category - 0 mlt scalarvectoraqvh bit sign bit coe!licientiladiceaindexcormt count 0.3 0.3 0 0 0 1 0 1.6 0.3 0 0 0 1 0 -0.5 1.1 0 0 0 1 0 -a.7 1.9 0 0 0 i 0 Q8.0 -A9.50 0 0 1 0 1203.0 9 5 i31 10 2 -671.9 -51.9 19.70 0 0 1 0 2.5 Z.l 0 0 0 1 0 -5.6 5.0 0 0 0 1 0 11.0 -1l.00 0 0 1 0 region . 0 category mlt scalarvectoreqvh bit llga bit coe!licieataiadiceeindexcount crnmt 0.3 0.3 0 0 0 1 0 L 6 0.3 0 0 0 1 0 -o.s ..1 0 0 0 1 a -4.7 1.9 0 0 0 1 0 28.0 -89.50 0 0 1 0 1l03.0 6 4 64 10 2 -6T1.9 -51.9 l9.70 0 0 1 0 1.5 -2.1 0 0 0 1 0 -s.6 5.0 0 0 0 1 0 1l.0 -11.00 0 0 1 0 ragian . 1 category m1t scalarvectoraqvh bit liga bit coailicieatsiadicesindexcount eat -1t.1 -20Z.10 t 4 ? 1 27s.0 33.16 1 61 A 2 -l0.1 1.7 0 0 0 1 0 -3.7 -1.3 0 0 0 1 0 3.e -a.o 0 0 0 1 0 =3.e 91.1 o z s s 1 -~i0.a 6 3 63 9 3 -1S9.6 -37.5 -16.71 0 10 a 1 40.d -I1.91 0 10 a 1 i3.6 5.1 1 0 10 1 1 region . 1 category Z

mlt scalarvectorsavh bit sign bit coa!licientsindl.ceeindexcouat count -11.l -I01.10 3 3 7 1 Z75.0 33.14 0 11 8 1 -10.a 1.7 0 0 0 I 0 -3.7 -1.~ 0 O 0 1 0 3.1 -4.0 0 0 0 1 0 -Z3.8 91.a0 1 1 a 1 160.t -1S4.6a 1 30 1 2 -37.5 r 0 0 0 1 0 16.7 10.8 -31.90 0 0 1 0 t3.6 5.1 1 0 7 3 1 region . 1 category mlt scalar vector aqvh bit aiga bit eoaiti cients iadicee iadsx court cocas l4.1 -20L 275.0 3.A 0 Z 3 0 65 11 2 l0.4 I.7 -3.7 1.2 0 0 0 0 0 3 0 -WO 98/15945 PCT/US9'7/17770 3.1 -4.0 -33.A 91.4 0 0 0 1 1 4 1 -760.4 -159.s -37.S -16.7 3 3 0 0 415 9 1 Q0.8 ~1I.9 43.6 5.1 0 0 0 0 0 1 0 region ~ 1 category . 0 salt scalar vector aqvh bit sign bit coetticienes indices index count count -8.7 -100.6 0 1 1 4 1 37l.8 ~430.8 4 6 s3 10 -4A3.0 -Z67.0 7 2 100 9 Z
-47.3 -31.6 1 0 1~ 4 1 ZO.~ -3.8 0 0 0 1 0 -1.0 0.8 0 0 0 1 0 l8.1 l4.7 0 0 0 1 0 137.3 -13l.7 2 1 30 7 -53.l -s.1 1 0 14 1 I
7.5 -0.5 0 0 0 ' 1 0 region ~ Z eatagory . 1 alt aealar vector sqvh bit sign bit coeiticiones iadiees index count count ~8.7 -100.6 0 1 1 4 1 271.B -4I0.8 3 4 34 8 2 ~83.0 -167.0 5 1 53 8 3 -Q7.3 -31.6 0 0 0 1 0 Z0.3 -3.8 0 0 0 1 0 -1.0 0.1 0 0 0 1 0 18.1 l4.7 0 0 0 1 0 137.3 -131.7 1 1 11 S 2 -5I.1 -6.1 0 0 0 1 0 7.5 -0.5 0 0 0 1 0 region - z category alt scalar vector aQvh bit sign bit easttieiente indices index count count -a.7 -loa.s o 1 1 ~ 1 Z71.8 -120.B Z 3 17 7 1 -113.0 -IS7.0 t 1 39 8 I
-47.3 -31.6 0 0 0 1 0 10.i -3.8 0 0 0 1 0 -I.o o.a o 0 0 1 0 1s.1 1s.7 0 0 0 1 0 137.3 ~13l.7 1 1 8 1 1 -sa.l -s.a o 0 0 1 0 7.5 -0.5 0 0 O 1 0 region - ~ category . 4 mlt scalar vector eqvh bit sign bit coafticiesita indices i.ndax count cvusat -6.0 -6.8 1.6 l0.3 0 0 0 0 0 ~ 0 -=l.l -13.6 35.5 l7.4 I 3 I 1 101 d 4 -I.4 -3.6 -3.9 5.1 0 0 0 0 0 ~ 0 0.1 8.5 -10.1 6.9 0 0 1 0 t 1 1 -3.5 -5.5 -0.7 9.Z 0 0 0 0 0 1 O
region ~ 3 category - 5 mlt scalar vector ssqvb bit sign bit coatticients indieae index count coum -6.0 -6.1 1.6 l0.3 -21.l' 0 0 O 0 1 1 4 1 -43.s 35.5 17.4 -Z.4 -3.6 1 1 0 0 0 101 5 Z
-1.9 5.4 0.8 8.5 -3d.2 0 0 0 0 1 1 4 1 6.9 -1.5 -5.5 -0.7 9.~ 0 0 0 0 0 0 Z 0 region ~ ~ category . s salt ocular wacor aqvls bit sign bit coatficieate indices ladax eount count -4.0 0.5 -S.3 -2.8 8.0 0 0 0 0 0 0 1 0 S

WO 98/15945 PCTlUS97I17770 -is.s 2a.o 5.1 -li.o-le.o1 1 0 1 11a a 1 -s.l -0.2 i.e -3.0o.e o 0 0 0 o z o -6.4 8.0 -~.0 -4,41.0 0 0 0 0 0 Z 0 region4 Category aslt . scalar vectoreqvh bit sign bit coefficients indices index eouset taunt -4.0 0.5 -5.3 -2.88.0 0 0 0 0 0 1 0 -11.5 24.0 5.d -1l.0-18.01 1 0 1 25 9 3 -6.1 -0.1 1.8 -3.00.8 0 0 0 0 0 I 0 -6.1 8.0 -?.0 -4.11.0 0 0 0 0 0 1 0 region5 eatngory - . 6 mlt scalar vectoreqvb bit sign bit coe!licinats indices index scant count 1.1 -i.3 -0.0 0.3 0 0 0 0 0 1 0 -0.2 0 -0.5 5.2 -3.B 3.6 1.8 0 1 0 1 9 6 2 -0.5 -0.5 0.7 1.8 1.7 0 0 0 0 0 1 0 -0.6 1.3 -2.d 3.6 -3.6 0 0 0 0 0 ~1. 0 region6 category . 5 mlt sealer vectoreqvh bit sign bit coetticieate indices index count count -3.0 -2.1 -0.9 -1.1 0 0 0 0 0 I 0 -2.3 0 -2.8 2.2 -2.I 2.? -1.0 0 0 0 0 O I 0 1.7 -0.9 -14.l 4.3 0 0 1 0 9 1 1 -7.5 0 -2.1 -1.0 16.7 1D.5 0 0 1 I 13 6 3 -l6.1 I

region6 category . 6 relt scalar vectoreqvh b1t sign bit eostlicients ladiees index count coupe -3.0 -3.1 -0.9 -l.s 0 0 0 0 0 1 0 -2.3 0 -7.8 2.3 -1.i 2.7 -1.0 0 0 0 0 0 1 0 1.? -0.9 -14.l 4.3 0 0 1 0 1 4 1 -9.5 0 -1.4 -1.0 16.7 10.S 0 0 1. O 6 6 1 -16.l I

region7 category mlt scalsr vectoreqvti bit sign bit eostlicients indices ladsx count couai -iA.9 18.S 16.3 -3.9 1 1 1 0 11? 6 3 -0.? 0 -6.0 0.5 0.6 -3.a 5.6 0 0 0 0 0 1 O' -l3.0 10.3 -14.0 i3.4 1 1 1 1 Ili 8 1 -9.1 0 I9.0 14.4 7.9 1i.9-9.4 1 1 0 0 10A S 2 region7 category . 6 mlt scalar vectorsorts bit sign bit coatfiCleats indices index Count count -18.9 18.8 16.3 -3.9 1 1 1 0 38 8 3 -0.? 0 -6.0 0.5 0.6 -3.1 5.6 0 0 0 0 0 I 0 -13.0 20.3 -31.0 .3.4 0 1 1 0 11 6 1 -9.1 0 19.0 11.1 7.9 1l.9-9.1 1 0 0 0 16 1 1 region8 category . . 5 mlt sealer vectorsqvts bit sign bit eoslticients indices index Count count 20.5 -I?.i 4.3 -I3.11 1 0 1 l09 6 3 9.1 0 -10.4 -16.S -0.9 0.0 1 1 0 0 101 5 1 1.3 O

1.0 -1.2 i0.0 1.3 0 0 0 0 1 t 1 -13.4 1 9.1 7.0 -a.i -2.8-1.I 0 0 0 0 0 2 0 regiona category . 6 silt scalar vectoreqvlt bit sign bit eoe!l3cients indices lad~c count count 10.5 -17.1 4.3 -23.21 1 0 I 15 9 3 9.1 0 -20.4 -16.5 -0.9 0.0 1 1 0 0 24 6 2 1.3 0 1.0 -1.3 10.0 1.3 0 0 0 0 0 1 0 -13.4 0 9.1 7.0 -1.1 -2.8-2.3 0 0 0 0 0 1 0 region9 category = 6 slt scalar vectoreqvti bit sign bit coefficients indices iadas: cosmt count -4.6 1.1 -15.9 6.0 -0.6 0 1 1 0 6 6 -0.5 2.1 4.9 -0.3 -O..T 0 0 0 0 0 1 0.6 -i.i -0.1 3.9 -1.6 0 0 0 0 0 1 0.5 1.9 -1.5 '-5.1 -2.6 0 0 0 0 0 1 region ~ i0 category ~ 6 salt scalar vectoraqvb bit aiga bit coatlicieats indices iade~c co:ust count -3.1 -0. 2.5 -1. 2.7 0 0 0 0 0 1 6.3 -9. 1.8 1.7 -6.3 1 0 0 0 8 1 -A.1 -13.7 -3.3 -0.3 1 0 0 0 24 6 0.1 1 2 -1.1 3.1 -.5 -0.6 1. 0 0 0 0 0 0 1 Tfta lOLIAifLl70 71CT031L CATEG10RI231TIOH8 SY
RSOIOH
!OR
THE

Actual !lumbar o! Categorization Bita !or Back ey Region 0 1 3 3 4 5 6 7 0 9 10 11 i1 13 total 0: 21 53 51 13 18 11 18 30 23 11 15 0 0 0 294 l: 31 53 51 33 18 0 18 30 33 li 15 0 0 0 Z63 Z: 11 53 38 23 18 0 18 30 23 il 15 0 0 0 150 3: 31 41 38 23 18 0 18 30 I3 il 1S 0 0 0 238 4: 31 41 38 13 1B 0 18 30 Z3 0 15 0 0 0 2Z7 5s 11 a1 38 23 I8 0 15 30 23 0 15 0 0 0 21 6s 11 al 38 23 15 0 15 30 23 0 15 0 0 0 31i 7: 31 ai 38 19 15 0 1S 30 23 0 15 0 0 0 117 8: 31 41 38 19 15 0 1S 30 23 0 0 0 0 0 201 9: 21 11 38 19 15 0 15 30 21 0 0 0 0 0 101 10s 11 11 38 19 0 i5 35 21 0 0 0 0 0 196 11s 31 1 36 19 15 0 15 15 11 0 0 0 0 0 19 11e 21 33 36 19 0 15 25 23 0 0 0 0 0 l86 13: 21 33 36 19 0 15 15 21 o 0 0 0 o i86 its 31 33 36 19 0 0 15 11 0 0 0 0 0 l71 15s 11 33 36 i9 0 0 15 11 0 . 0 0 0 15i state Control (categorisationselection!~ Z

The catagozy auigamentsthe ions for salactnd area categorizat 0 1 i 5 7 5 5 5 6 6 7 7 7 The actual mlt coaflielaat t plus t SQVH cods bi sign bi totals arcs The total aumbsr s 250 o! m1t coefficient is SpVH code bits plus sign bit Tlsa bitatx~eam corssists o!

60 assplitvds esav~lope bits 4 rate control bits 150 mlt coa!lieiessC signs bits 9pVH code bit8 plus 6 lrasse-fill bits 310 Dita Referring now to FIG. 5, decoder 30 is shown to include a demultiplexer 60 for demultiplexing the data, i.e., bit stream, on channel 27 into power amplitude quantization indices on line 26', rate control on line 66', and quantized and encoded transform coefficients on line 61', as shown. The quantized power in each of the regions is decoded and reconstructed from the transmitted quantized power indices in module 22'. The region power quantization levels are produced on line 31' and the bit count thereof is produced on line 29'. The same set of categorizations that the encoder 9 (FIG. 4) determined are determined using the quantized power indices and the number of bits remaining after region power decoding in module 32'. More particularly, categorization module 32' produces the 16 categorizations Categorization0-Categorizationl5 on lines 34'0-34'15, respectively.
Module 62' is fed the categorizations on lines 34'0-34'l5 and uses the categorization selection on line 66' (provided by the encoder 9 on line 66) to selects one of the categorizations on line 34'0-34'l5 for coupling to line 34'. For each region, module 40' determines the transform coefficient reconstruction level table, the vector dimension, and a variable bit-length decoding table in accordance with the category assignments for each region on line 34'. Then, module 40' decodes the bits on line 61' using the variable bit-length decoding table and reconstructs the transform coefficients using the transform coefficient reconstruction table and the region power quantization levels on line 31'.
Referring to FIG. 6, module 40' takes the bit stream on line 61' and decodes the vector indices in regions 0-13 sequentially in modules 52'0-52'l3, respectively, in accordance with the category assignments on line 34'. Modules 51'0-51'l3 separate the vector WO 98I15945 PCTlUS97/17770 indices into scalar indices for each region in accordance with the category assignments on line 34'. Modules 50'0-50'13 reconstruct and denormalize the MLT transform coefficients for regions 0-13, respectively, in accordance with: the scalar indices produced by modules 51'0 -51'l3, respectively; the category assignments on line 34'; and, the region quantization power levels on line 31' to produce the reconstructed MLT transform coefficients for the frame on line 68.
Referring again to FIG. 5, the transform coefficients are transformed into a time domain audio signal in inverse MLT (IMLT) module 16' and digital to analog (D/A) converter 14'.
It should be noted that some regions may be assigned to category 7, which means that no specific MLT
information was transmitted for these regions. However, the average MLT magnitude for these regions is available (i.e., the square root of the quantized average power).
Instead of setting these transform coefficients to 0, the decoder will set them to a value proportional to the average MLT transform coefficient magnitude for each region (equal to the square root of the quantized mean power in the region) and the signs will be set randomly.
This is called noise fill. Noise fill also will be used for categories 6 and 5, because for these categories most of the MLT transform coefficients get quantized to 0.
The values which were transmitted as Os are set to small fractions of the average magnitude for the region.
Again, the signs are determined randomly.
For those transform coefficients which are coded, centroid reconstruction tables for each category are provided for decoding. The decoded values are then renormalized using the square root of the quantized mean power in the region.

The 40 MLT transform coefficients which represent frequencies above 7000 hz are set to 0. After the MLT
transform coefficients are reconstructed, an INVERSE
MODULATED LAPPED TRANSFORM (IMLT) 16' generates 320 new time domain samples on line 70. The samples on line 70 are converted into the audio signal on line 72 by a digital to analog (D/A) converter 14'. Decoder 30 operation for each frame of MLT information is independent of information in the previous frame except for the final overlap and add operation in the IMLT 16'.
More particularly:
DECODING THE POWER AMPLITUDE ENVELOPE (Module 22') The first 5 bits of the frame of data on line 46' are assembled into rms-index[0]. Then, for regions 1 through 13, the variable bit-length codes for differential rms-index[region] are decoded according to the table differential rms table which is defined in the encoder section.
For regions 1 through 13, rms-index[region] - rms-index[region-1] +
differential rms index[region];
CATEGORIZATION PROCEDURE (Module 32') For each frame, after the power amplitude envelope has been decoded, the decoder 30 module 64 computes the number of bits available for representing the MLT
transform coefficients.
bits available = bits per frame - amplitude envelope bits - 4 rate control bits;
Then module 64 uses the categorization procedure set forth in FIGS. 7A-7C) to reconstruct the same set of 16 possible categorizations that the encoder 9 (FIG. 3) had computed. Finally the 4 rate control bits (i.e., rate control) on line 45' determine the one of the 16 WO 98I15945 PCT/US97i17770 categorizations that was selected by the encoder 9 (FIG.
3) to encode the MLT transform coefficients.
DECODING MLT TRANSFORM COEFFICIENTS (Module 40~) For each region the decoder 30 module 66 decodes the variable bit-length codes for the MLT vectors on line 49' according to the category appropriate table defined in the encoder 30 module 64:
(mlt sqvh bitcount,-category_x and mlt sqvh code category x), where x=0 to 6 Then the individual MLT transform coefficient quantization indices, k[i], are recovered from the vector index:
k[i] - (vector index modulo (kmax+1)~(i+1))/(kmax+1)~i i=[o,vd-1]
where:
vd = vector dimension for category kmax = maximum scalar quantization index for category The default reconstruction for the MLT transform coefficients uses the centroid tables:
lloat mlt_quaat_ceatroldtA)I14! ~ {
( 0.0 ,0.39Z ,0.761 .1.l30 ,1.t77 (l.831 ,3.l83 (1.S41 ,1.893 ,3.345 ,3.59A
,3.941 ,4.788 ,4.731 ), ( 0.0 ,0.54i ,i.060 ,1.563 ,2.068 .2.$7l ,3.073 ,3.561 .4.070 ,4.670 , 0.0 , 0.0 , 0.0 , 0.0 '.
( 0.0 (0.746 ,l.464 ,3.1A0 ,2.882 ,3.S84 ,4.31fi , 0.0 ( 0.0 ( 0.0 , 0.0 , 0.0 , 0.0 , 0.0 ( 0.0 ,1.006 ,3.000 ,1.993 (3.985 ( 0.0 , 0.0 , 0.0 , 0.0 , 0.0 ( 0.0 , 0.0 , 0.0 ( 0.0 ).
( 0.0 ,l.331 .3.703 ,3.983 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 ( 0.0 , 0.0 , O.D , 0.0 ( 0.0 ,1.657 ,3.491 , 0.0 ( 0.0 , 0.0 , 0.0 , 0.0 , 0.0 ( 0.0 ( 0.0 , 0.0 , 0.0 , 0.0 ( 0.D ,1.964 ( 0.0 ( 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 ( 0.0 , 0.0 , 0.0 ( o.o ,l.9se , o.o , o.o , o.o ( o.o , o.o ( o.o ( o.o , o.D , o.o , o.o ( o.o ( o.o ?r The MLT transform coefficient amplitudes are reconstructed in module 66 by taking the product of the square root of the quantized average power in the region with the centroid specified by the decoded index.

Non-zero values are then negated if the corresponding sign bit is set to 1.
NOISE FILL
For category 7, no MLT transform coefficient amplitudes are encoded. For categories 5 and 6 the quantization step sizes are so large that most MLT
transform coefficients are coded as 0. The decoder replaces these 0's with values of random sign and amplitude proportional to the square root of the quantized average power for the region. The default proportionality constants are category default noise-fill proportionality constant 5 .176777 6 .25 7 .707107 INSUFFICIENT BITS
There may be frames for which the encoder runs out of bits before it finishes coding the last non-category 7 region. The default decoder action in these cases is to process that region and a11 remaining regions as category 7.
INVERSE MODULATED LAPPED TRANSFORM (IMLT) (Module 16') Each Inverse Modulated Lapped Transform (IMLT) 68 operation takes in 320 MLT transform coefficients and produces 320 time domain audio samples. The inverse MLT
68 can be decomposed into a type IV DCT followed by a window, overlap and add operation. The type IV DCT is:
a[n] - SUM m=[0,319]
sqrt(2/320) * cos((m+0.5)*(n+0.5)*PI/320) * mlt[m]
WINDOWING
The window, overlap and add operation uses half of the samples from the current frame's DCT output with half of those from the previous frame's DCT output:

y[n] - w[n]*u[159-n] + w[319-n]*u old[n], n=[0,159]
y[n+160] - w[160+n]*u[n] - w[159-n]*u old[159-n], n=[0,159]
For the next frame, the so far unused half of a[]
is stored in a old[]:
a old[n] - a[n+160], n=[0,159]
Attached hereto as an APPENDIX is a source code program in C Programming Language containing the encoder, decoder and initialization modules. A portion of the disclosure of this patent document contains material which is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the Patent and Trademark Office patent files or records, but otherwise reserves a11 copyright rights whatsoever.
Other embodiments are within the spirit and scope of the appended claims.

APPENatx oet 7 .5:54 1996 defs.h ?age i :define ?I 3.141S92653589793238462 ~defire BLOCK_SIZE 320 ddefine MAX DCT_SIZE 512 #define MAX(a,b) (a > b ? a : b) #defi:e MINIa,b) (a < b ? a : b) #define NUM ?.EGICNS 14 #defiae REGION_POWER TABLE SIZE 54 #define REGION_POWER_TAHLE 'ITJM NEGATI7ES 24 wdefine NUM_RATE CONTROL_BITS 4 :define NUM_RATE CONTROL_POSSIHILITIES 16 #define ENCODER 9CALE_FACTOR '_8318.0 ;' The MLT output is incorrectly sealed by tze factor product of ENCODER_SCALE_FACTOR and sqrt('_50.) mhis is now (9/30I96) 1.0/2~(4.5l or l/22.627.
~n the current implementation this produc~
must be an integer power o. sqrt(21. The integer power is ESF ADJUSTMENT TO_RMS_INDEX.
The -2 is to conform with the range defined iZ the spec. '/
#define ESF,~,DJLSTMENT_TO_RMS_INDE:C (9-2) #define MAX_BITS_PER FRAME 640 WO 98l15945 PCTIUS97/17770 Oct % 15:S3 1996 h~sf~_defs.h Page 1 *define REGiON_POWER_S':EPSIZE_DH 3.010299957 ~#define A3S REGION_POWER_L='VELS 32 *eefire DIFF REGION_POWER_LcVELS 24 *defi:e DRP_DIFF_MIN -i2 *define DRP_DIFF MAX 11 *define NUM_CATEGORIES B
*define MAX_NUM_HINS 16 ~decize MAX_VECTCR_INDICES 6Z5 ~dezir.e MAX_VECTOR DIMENSION 5 Oct 15:40 199fi comtnon.c Page i include <stdio.h>
:iaciude <math.h~
~inciude "defs.h"
~inciuce ":atops.h"
~inciude "huff defs_h"
~incl~:ce 'k:uf=_tables.h"
ir:C zegion_size;
float reqion_size_inverse;
float region_standard_deviacion_table(REGI~N_POWER_TABLE_SZZE];
..oat standard deviation_inverse table(REGION_POWER TAHLE_SIZE];
float step_size_inverse_table(NVM_CATEGORIESI;
rloac =agion~ower_table(REGION_POWER_TAHLE_SI2E1;
float region~ower_table boundary(REGION_POWER TA9LE_SIZE-1];
_.a vector dimension(NUM_CATEGORIESI = ( Z, 2. 2) 4, 4, 5, 5, 1);
ir_c nLmber_o= veccors(NUM_CATEGOAIES) _ (10.10,10. 5, 5, 4, 4,20);
/' Tha last category isn't really coded with scalar qunntixation. ~1 float step_size(NUM_CATEGORIES1 = (0.3S36. 0.5, 0.7071, 1.0, 1.4142, 2.0, 2.82B4, 2.8284);
int max bin(NUM CATEGORIES) _ (13, 9. 6, 4) 3, 2, 1, 1):
inc ia_dead_zone(NfJM CATEGORIES);
float cead_zone(NUM CATEGORIES) _ (0.3, 0.33, 0.36, 0.39, 0.42) 0.4S, 0.5, 0.5);
/r .rrrwrrrr*rrrrr*.*r.rr*rrr..arrrrrrr*rrr.rrr...r.rr*.r...rrrrrrrr*.r*..*rrrr.rr rrr** */
/r r.*r*r*rrrr.r*r*.rrr*rr*rrrrrrrrrrrr...rr******.rrrrr..rrrrr*rr*.rrrr*rrr*r**~r rrrra r~
static int max_bin~lus _one_inverse(NUM_CATEGORIESI;
inc iadex_co array(index.array,category) int index;
inc array(MAX VECTOR_DI!~lENSION);
int category;
int j,q,p;
int rwnbez_of_non_zezo;
int max_bin~lus_one;
int inverse of_max_bin~lus one;
number_of nan_zero = 0;
p = index;
max_bin~lus one = max_bin(categoryj - 1;
inverse of mnx_bin_plus_one = max_bin~lus one_inverse(category];
for !j=vector dimension[category)-1; j>=0; j--) /' q = plmax bin~lus one: '/
q = (p~inverse_of max bin_plus one) ~ 15;
array(j] = p - q'max bin,~lus_ona;
p = q:
if (array(jl !~ 0) number_of_non_zero++;
return(number_of_non_zero);
j /~
*rr.r*r.*r**rrrrr.rrrr**rrrrrr**r*rr*rrrrrrr..rrrrr.r*rrrr*r*rr*rrrr.rrrrrr~rr*
rrwra *l /~ - 3 Oct 7 1S:40 i996 common.c Page 2 /.
..................................r.............r......r.rr..r.................
..... ./
dde:i:e PRINT STUFF 1 void :nlt based_coder_init() int i,j;
int category;
int ~::mber o'_indices;
float =tempo:
regior._size = (HLOCK_SIZE " 0.875)/NUM REGIONS;
region_size_inverse = 1.0/((floatf region_sizel:
for (i=0: i<REGION_POWEA_TABLE_SIZE; i++) region~ower_table(i] _ pow(10.0, 0.10'REGION_POWER STEPSIZE DH' ((float) (i-REGION_POWER_TABLE NtJM_NEGATIVES)1);
region standard deviation_table(il = sqrtlregion~ower_table(ij):
standard deviation_invarse_table(il = 1.0/region_standard_deviation_table(iI:
) for (i=0; i<REGION POWER TAHLE_SIZE-1; i++) region~ower_table_boundary(il =
pow(10.0, O.lOrREGION_POWER_STEPSIZE_DH' (0.5+((float) (i-REGION_POWER TABLE NUM NEGATIVES))));
/' Initialize category related stuff. ~/
for !category=0; category<NUM CATEGORIES: category++) ( /~ Rounding up by 1.0 instead of 0.5 allows us to avoid rounding every time this is used. '/
max_bin~lus_one_inversefcategozy] _ (int) ((32768./(max_bin(categoryj+1.0)1 +
1.0);
/' Test division for a11 indices. '/
number of_indices = 1:
for (j=0; j<vector_dimension(categoryj; j++) .umber o~_indices ~_ (max bin(categoryj+L):
for (j=0; j<number of_indices; j++) if tj/Imax bin(cacegoryj+1) . ((j'max bin~lus one_inverse(categoryj) ~ 15)) printf;':nax bin~ius_one_irverse ERROR!! %ld: %Sd %3d\n",category,max bin~lus one _inverse(caCegoryj,j);

foz (category=0; category<NtJM CATEGORIES: category++) int dead zone(categoryj _ lint) (32768.0 ' dead_zone(categoryj + 0.5):
for (category=0: category<NUM_CATEGORIES; category++) step_size_inverse_table(categoryj = 1.0/step_size(categoryj;
/.
wrwrr..w...wrr......rrr....rrrw.wrwr.rrr....rarr.ra.r.r...wrrrr.rwr.r.r.a....w.
.rrwr r/
/r ..rr..rr.....r..ra.......r...r..rrrrr.r...,rrr.....r.w.rwr.....rrrr.r....r..r.a .rrrr. r/
void categorizelnumber_of available bits.
rms_index, power categories.
category_balancas) Occ 'r 15:40 1996 common.c Page 3 int number_of_available bits;
int rms_index(NUM_REGiO:lS);
inc power_categories(NUM_4EGIONSj;
int category_baiances(NUM_RATE CONTROL_POSSI3I~ITIES-lj;
int region;
int ;
int expected_namber_of_code_bits;
int delta;
int offset;
.at test offset:
/~ At higher bit rates, there is an increase for moat categories in average bit consumption per region. Plc compensate for this by pretending we have fewer available bits. '/
if (number_of available bits > 320) number of_availabie bits = 320 + (((number of available bits - 320)'5) ~ 3);
offset = -32;
delta = 32;
do test offset = offset + delta;
for (region=0; region<NUM REGIONS; region++) j = (tasc_offset-rms_i::dex(regionj) ~ l;
if (j < 0) j = 0;
if (j > NUM_CATEGORIES-1) j = NUM_C?TEGORIES-1;
power categories(regionj = j;

expected_number of_code_cits = 0:
for !region=0; region<NUM_REGIONS; region++) expected_rumber of_cade_bits += expected 6its_table(power_catagories(regicnllt 1' Adjust to compensate for different statistics at higher bit rates. '/
if (expected_rumber of_ccde_bics >= number of available bits - 32) offset = teat offset:
delta ~= 1;
) while (delta > 0I;
for (region=0; region<NUM REGIONS: region++1 ( j = (offset-rms_index(regionl) ~ 1:
if (j < 0I j = 0:
if (j > NUM CATEGORIES-1) j = NUM_CATEGORIES-1;
power_categories(regionj = j;

expected_number of code bits = 0;
for (region=0; region<NUM REGIONS: region++) expected number oz code bits +-_ expected_bits_table(power categories(region]J;
inc max_rate categories(NUM REGIONS);
int min_rate cateqories(NUM REGIONSj;
iat temp_category_balances(2'NUM RATE_CCNTROL ?OSSIBILITIESJ;
i Oct ' I5:40 I996 common.c Page 4 int raw_max. :aw_min;
int raw max_index) raw_min_index;
ant max_race pointer. :nin_rate pointer;
int max, min:
int itemp0;
~or (region=0; region<NUM AEGICNS; region++1 ~ax_rate cacegories(region] = power eacegories(region];
mia_race_categorias(region] = power_categories(region];
max = expected_number of code bits;
min = expected_number_of_code bits;
max_rate~ointez = NUM RATE CONTROL_POSSIBILITIES:
min_rate~ointer = NUM RATE CONTROL_POSSIBILITIES:
for (j=0; j<NUM_RAT~ CONTROL_POSSIBILITIES-1; j++) ( i= (max+min <. 2~numbez_of_available bitsl raw min = 99;
/' Search from lowest freq regions co highest for beet region to reassign to a higher bit rate category. '/
for (region=0; region<NUM REGIONS; region++) if tmax_rate_cacegories(region] > 0) ( itemp0 = offset - rms_index(region] - 2~max_rate_categorieslregion];
if (itemp0 < raw_min) raw_min = itemp0;
raw mia_i:dex = region;
]
]
max_rate~ointer--, temp category_balances(max_rate~ointer] = raw_min_index;
max -= expecced_bits_table(max_rate_categories(raw min_iadex]];
max_rate cacegories(raw_min_index~ -= 1:
max += expected ~its_table(max_rate_categoriesLraw_min_index]];
else ( raw_max = -99;
/' Search ~rom highest ~req regions to lowest for best region to reassign to a lower bit rate category. ~1 for (region=NUM_REGIONS-1; region >= 0: region--) if (min_rate categories[region] < NUM_CATEGORIES-1)( itemp0 = offset - rms_index[region] - 2~min_rate categories(region];
if litemp0 > raw_maxl ( raw_max = itemp0;
raw_max_index = region:
]
]
temp category_balanc~s(min_rate~ointer] = raw_max_index;
min_rate~ointer++;
min -= expected_bits_table(min_rate categories(raw_max_index]];
min_rate_categories(raw_max_index] += 1;
/~ -G

oc= ~ ?5:40 1996 common.c Page ~
min +a expected_bits_table(min_rate categories(raw max_i7dex]);
Lor l=egion=0; zegion<NUNL~EGIONS; :egion++i power categories(region) = max_race_categories(regionj;
~or lj=0; ;<NUM RATE_CONTROL_?OSSIBILITIES-1; j++) category_balances(j1 = cemp_category_balazcesimax_rate~ointer++);

Oct ~ 15:A9 1996 eneoder.c Page 1 #inciude <stdio.h>
include <math.h>
~_nclude "defs.h"
~~~cluce "_.ra ops.h"
xinelude "huff defs.h"

inc compuce_region~owers(floac (1, int (:. int (). int(1?:
void veccor_quancize_mltslint, float LJ, lnc(J, Eloac fJ) inc ()) int (J, int ' int (I, int ()):
int vector_huffman(int , floac.~int) =loaf ' int ' int r);
extern f'_oat region_scandard_deviation_table(REGION_~POWER_TABLE_SIZE):
extern =lose standard_deviation_inverse_table(REGZON_POWER_TABLE_SIZE1:
extern zloac step_size_inverse_table(NUM_CATEGORIESI:
extern ~loac dead_zone(NUM_CATEGOAIES):
inc index_to_array(int, int(i. intl:
exterZ .:C region_siZe:
exter.~. float region_size_inverse:
extern '.oat region~ower_table(REGION_POWER TAHLE SIZE);
extern float region~ower_table boundary(REGION_POWER TABLE_SIZS-17;
extern int differential_region_power bits(NUM_REGION51(DIFF
REGION_POWER_LLVELS);
extern int differential_region~ower codes(NUM_REGIONS1(DIFs REGION_POWER_LEVELSI:
extern int scalar_avg_category_bits_x10(NUM CATEGORIESI:
extern =nc table_of bitcount_tables(NUM CATEGORIES-11:
extern int cable_of code_tables(NUM CATEGORIES-11:
extern int vector 3imension(NUM_CATEGORIES1:
extern int number of_vectors(NUM CATEGORIES);
exter.~. =loot step_size(NUM CATEGORIES);
extern _ra max bin(NUM CATEGORIES1:
.
rrrrrrrrrwrrrrrrrrrrrrwrrrrrrrwrrrrrrrrwwrrwrwwwrrrrrrrrrrrrrrrrrwrrrrrrrrwwrrr rrrww w/
~w rrsrwrrrrrrrrrrwwwrwrrrrwrwrwrwrrwwrwrwrrrwrwrwrrwrrrrwrrrrwwwrrwwrrrrrwwrrrrrw wrrrw r/
void encoder(number_of available bits, mlt_coefs.
out words) fat number of_available_bics:
float mlt coefsIHLOCK_SIZEJ:
short int out words(MAX HITS PER_Fc~3E/16J;
( fat number of_bits_per_frame:
int number of_envelope bits:
int rate_control:
int region:
'-nc i.
int num_"bits;
int index:
inc bit mask;
int rcode bits~tr:
int code bits(MAX_9iTS PER_FRAME):
~' r/~

~cc 7 15:49 1996 encoder.c Page 2 int absolute_region~ower_index(NUM REGIONS):
in:. power_categories(NU!i REGIONS);
inc cacegory_,balances(LVUM_RATE CONTROL_POSSI32LITI?S-i):
_:~c d=p num_bits(NUM_REGIONS1:
irt drp code bics(NVM_REGIONS);
inc mlt_num_bitsfHLOCK_SIZE1:
inc m1C_code bits(HLOCK_SI2E);
float quantized_region_standard deviation(NtJM_REGIONS1:
..~.umber of bics~er_frame = number of available bits;
code_bits~tr = code bits:
i' Estimate power envelope. '~
cumber oz_envelope_bits = compute_region~owersfmlt coefs, drp num_bits, drp_code bits, absolute_region~ower_i__~.dex) :
i- write huffman code bits for differential region indexes. '/
:or (region=0: region<NUM QEGIONS: region++) ( num_bits = drp_num_bits(region);
index = cL~-p_code_bits ( region) ;
i' msb of codebits is transmitted first. '/
bit mask = 1 ~ (num_bits-1):
for (i=num_bits-1: i>=0; i--) ( ~eode_bits~cr~+ _ (index ~ bit mask) ~ i:
bit mask ~ = 1;
number_of available_bits -= number of_envelope bits:
number of available bits -= NUM_R.ATE CONTROL 3ITS:
categorize(number_of available_bits.
absoiute_region_power_index, power categories, category_balancesl;
for (region=0; region<NUM_REGIONS; region++) absolute_region~ower_index(regiaal ~= REGION_POWER TABLE_NUM_NEGATIVES;
for (region=0; region<NUM-REGIONS: region++) ( i = absolute_region_power_index(zegion);
quantized_region standard deviation(region) = region scandard_deviation_cable[i);
vector_quantize_mlts(number of_available_bits, mlt_coefs, absolute_region~ower_izdex, quantized_region_standard_deviation, power_categaries, category_balances, Berate control, mlt_num_bits, mlt_code_bitsl;

Oct '1 1S:49 l996 encoder.c Page 3 /~ 'rtrite rate control bits. '/
/~ msb of race_control is t=ansmitted first. '/
bit mask = 1 ~ (NUM_RaTE_CONTROL_~ITS-1);
or (i=NUM RATE_CONTROL_BITS-1; i>=0; = -) ( 'code_bits~tr++ = Irate control & bit maskl ~ i;
bit_mask ~ = 1:

/~ Write huffman code bits for mit indices. ~I
r int "r mlt code_bits;
int rp mlt_num_bits;
p_mlt_code_bits = mlt code_bits;
o mlt num_bits = mlt num_bits;
while ((number of_available_bits > Of && ('p mlt_::um_bits > 0)) num_bits = "p_mlt_nu~bits++;
index = ~p mlt_code_bits++;
/' msb of codebits is transmitted f'_rst. '/
bit_mask = 1 ~ (num_bits-1):
~or (i=num_bits-1: i>~0; : -) 'code bits~cr++ _ (index & bit mask) ~ i;
bit_mask >~ 1;
number of_available_bits -= num_bits;
/' ?ack code bits ineo 16-bit words. '/
r int i,j;
iat 'code bits~tr;
short int word:
code_bics~tr = code bits;
for (i=0; i<number of bits~er_frame/16; i++) word = 0;
for (j=0; jcl6; j~+) ( word ~= 1;
word +_ (1 & "code bits_ptz++);
out wozd~(i) = word;

/w r~rwr'ww~wwwwwwwwvwrrwwrwrerww wrrrrwwrwrwrrrwrwrwrrrrwrrwrwwrwrrwrwwrrrwwwrwrrrwrwr r/
/w wrwwwwwrrwwwwwwrwwwrwwwrrrwrrrwwrrwwrwwwrwrwrwwrwwrrwwrwrwwwrwwrrrrwrrwwwwwwwrw wwwrr w/
inc compute_region~owers(mlt_coefs, drp_num_bits.
drp aode_bits, absolute_region~ower_index) ?loat mit_eoefs(BLOCK_SI2E);
inc drp num_bits(NUM_REGIONS);
int drp_code bits(NCfM_REGIONSI;
~-r~G~

Oct 7 1S:49 1996 encoder.c Page 4 int absolute_region~ower_i.~.dex(NUM_R~GIONS1:

:lost ' _..~.put_ptr ;
int iterations;
float ~temp0, =temp(;
fat index) index min, index max;
inc region;
=Z= J:
_nc differential_reqion~ower_index(NUM_gEGIONS);
inc rumber_of bits;
inaut,~tr = mlt_coefs;
fox (region=0: region<NUM_REGIONS; region+.) ( ftemp0 = 0.0;
for (j=0; j<region_size; j+~) ( ftempl = ~input,.ptr+.;
ftemp0 ~= ftempl~ftempl:
ftemp0 '= region_size_inverse;
index min = 0;
index max = REGION_POWER TABLE_SIZF.:
for (iterations = 0; iterations a 6; iterations++) ( index = (index min ~ index max) ~ 1:
if (ftemp0 < region~ower_table boundary(index-li) index_max = index;
else index_min = index;
) absolute_region~ower_index(regionl = index_min-REGI0:1_?OwER
TAHLE_NUM_NEGATIVES;
/' Before we differentially encode the quantixed region powers) adjust upward the valleys to make sure a11 the penks can be accurately represented. '/
for (:egion = NUM_REGIONS-2; region >= 0; region--) if (ab,solute_region oower_index(region) <
absolute_region~ower_index(region~11 - DRP_ DIFF h3.A7C) absolute_region~ower_index(region) = absolute_region~ower_index(regiontll -DAP DI
FF_MAX;
]
/' The MLT is currently scaled too low by the factor E.YCODER_SCALE_FACTOR(=20853)/32768 ~ (1./sqrt(160).
This is the ninth power of 1 over the square root o~ 2.
So later we will add ESF_ADJUSTMENT TO_RMS_INDEX (now 9) to drp code bits[0). ~/
/~ drp code bits(0] can range from 1 to 31. 0 will be used only as an escape sequence. "/
if (absolute_region~ower_index(O1 < I-ESF_ADJUSTMENT_TO-RMS_INDEX) absolute_region.~ower_index(O) = 1-ESF_ADJUSTMENT TO AMS_I~IDEX;
if (absolute_region~ower_index(O1 > 31-ESF_ADJUSTMENT TO RMS_INDEX1 absoluta_region~ower_index(0] = 31-ESP_ADJUSTMENT= O_RMS_INDEX:
differential_region~ower_index(O1 = absolute_region; ower_index(O1:
number_of bits = 5;
drp_num_bits(0) = 5:
A- ,//

Oct 7 15:49 1996 encoder.c ?age S

drp_code_bits ( O 1 = absolute_region~ower_i:ldex(0 ) + ESF ADJUSTMt"...PIT_TO
R.'IS_I.1DEX:
/~ Lower limit the nbsolute region power indices co -8 and upper limit t::em co 31. Such ex =-emes .sy be mathematically impossible anyway.~/
~_or (region=1: region<NUM_AEGIONS; region++) ( ,f (absolute_region~ower_index(regionl < -8 -ESF_ADJUSTMENT= O_RM5_T_NDEX) absolute_region~ower_index(region) _ -8-~SF_ADJUSTMENT TO_RMS_I:IDEX;
if (absolute_region~ower_index(regionl ~ 31-ESF_ADJUSTMENT_~.'O_RMS_INDEX) absolute_region~ower_index(regionl = 31-ESF ADJLTSTMENT_TO RMS_I.1DEX;
for !region=1: =egion<NUM_REGIONS: region++) ( j = absolute_region~ower_izdex(regionl - absolute_region~ower_iadex(region-1);
i~ Ij < DRP_DIFF_MIN) ( = DRP_DIFF_MIN;
j -= DRP_DIFF tQIN:
differencial_region,~ower i.~.dex f region 1 = j ;
absolute_regionrpower_index(region) = absolute_region_power_index(region-11 +
differential zegion_power_index(rsgion) + DRP DZcF_MIN:
number_of bits += differential_region_power_bitsfregionl(jl;
drp num_bits(region) = differential_region~ower_bits(region)(j);
drp code bitstregionl = differential_region~ower_codes(regionl(jl;
return(number_of bits):

~r wrrrrrwrrrrrrrwrrrrrrwrwrrwrrwrrrrrrrrrwrrrrrrrwwrwrwwrrrrrrwrrarrrrrrrrrwrwrrr rwrrr y /w rrirrrwwrwrwrrrrrrrrwrrrrrrrwrr4irrrwrrrrrrrrrrrwrrrwwrrrrrrrrrrrrrrwrrrrrrrrrr rrrrr void vector_quantize mlts4number of available bits.
mlt coefs.
absoluce_region~ower_index) quancized_region_standard deviation.
power categories.
category_balances.
p_rate_control .
mlt num_bits.
mlt code bits) int number of available_bits:
Float mlt_coefs(HLOCK_SIZE);
int abaolute_region~ower_index(NUM_REGIONS1;
float quantized_region_standard_deviation(NUM_REGIONS):
int power_categories(NUM_REGIONS1:
int category_balances(NUM RAT~_CONTROL_POSSIHILITIES-11:
int rp_rate_control:
inc mlt num_bits(HLOCK_SIZ~1;
int mlt code_bits(HLOCK_SIZE1:
( float rraw_mlt_ptr:
irt region, j :
_nt category;
int number_of bits(NUM_REGIONS1;

Oct 7 15:49 1996 encoder.c ?age 6 int total ~~it bits;
int ~~santized_mlt_index~cr;
iZC num_indices(NUM REGIONS1;
_~t cemp_i..~.dex [HLOCK_SI2E) ;
cotal_rilt bits = 0;
_'or (;=0: j<9LOC:C_SI2E; j-~) temp_i..~.dex ( j ] = 0 ;
mlt num_bits(j) = 0;
c l- Start in the middle oc the rate control rnnge. '/
Eor ('p_race ccntrol = 0; 'p_race conCroi < (fNUM RATE_CONTROL_POSSIBILI:IES ~
1) - 1);
t'p_rate control)++1 ( region = category_balancesf'p_rate_controlJ;
power= ategor'_es(region[~+;
~or (region=0; _-egion<NUM_REGIONS; region++i category = oower_categories(regionl;
raw_mlC~tr = c~mlt_coefs(region'region size);
quantized_mlc_index_pcr = &temp_index(region'region_sizej;
if (category < NUM_CaTEGORIES-1?
number_of_bics(region) =
vector huffmantcategory. quantized_region_standard deviation(region], absolute_region~ower_:adex(region] raw_mlt~tr, quantized~nlt_?adex~tr) &num_indices(region));
) else number o~ bits[regioni = 0;
) cocal~nlt_bits += number of bics(region);
/' I~ too few bits... '/
while ((total mlt bits < number_of available bits) && ('g_rate_control > 0)) f~p_rate_controlf--region = category balances(~p_rate_control);
power_categories(region)--total mlt bits -= number o~ bits(regionl:
category = power categories(region);
raw_mlt_ptr = &mlt coefs(region~region_siz~1:
quantized mlt_index~tr = &temp_index(region~region_size);
if (category < NUM_CATEGORIES-1) number_of bits(region) _ veccor_huffmanfcategory, quantized_region_standard deviation(regioal.
absolute_region~ower_index(region) raw mlt-.ptr.
quancized_mlt_index~tr, ~num_indiees(region));

~lse ~- ~~ 3 Oc~ 7 15:49 1996 encoder.c Page 7 number of_bits(regionl = 0;
num_indicesiregion) = 0;
total mlt bits += number_of_bits(regionl:
/- If too many bits... '1 while (Itotnl mlt bits > number of available bits) &rt ('~_rate_control <
NCTM_RATE CONTRO
L_POSSIBILITIES-1)) ( region = category balances("p_rate controll:
power categories(regionj~+:
total mlt bits -= numbsr_of bits(regionl;
category = power_categories(region);
raw_mlt~tr = &mlt_coefs(region"region_sizel:
quantized mlt_index~tr = &temp_index(region~region_sizel:
if (category < NUM_CATEGORIES-1) ( number of bits(regionl =
vector_huffmanlcategory, quantized_region_scancard_deviatioz(:egionl.
absolute_region~ower_index(regionl,raw_mlt~tr, quantized_mlc_index otr, &num_i::dices(regionl):

else ( number_of bits(reqionl = 0;
num_indices(regionl = 0:
total m1t_bits ~~ number of bits(region);
("p_rate control)+~;
int '? mlt codn_bits:
int 'p_mlt num_bits:
int index:
int signs;
iac number of non_zero:
:,nt k(MAX_VECTOR_DIMENSION);
int num~its;
int total mlt bits:
int "code table~tr:
int 'bitcount table~cr;
total mlt bits = 0;
p mlt_code_bits = m1t code_bits:
p mlt_num_bits = mlt num bits:
for (region=0: region<NUM_REGIONS: region++) category = power categories[regionj;
i~ (category < NUM CATEGORIES-1) code_table,~tr = lint ") table of_code_tabies(categoryj;
bitcount_table~tr = lint ') table of bitcount_cablesicategoryj;
for (j=0; j<num_indices(ragionj; j++) index = temp_index(region"region_sizetj];
/~---/ ~/

Occ - '_5:49 1996 encoder.c Page 8 :ucnber_of zon_zero = index_co_a=say(index,k,categoryl;
aum_bics = '(bitcount_table~ cr+index);
total m1t bits += num_bics ~ number_of_non zero;
'p mlt ~um_bits++ = num_bits;
'p mlt_code bits++ _ ~(code_cable~tr+index);
if (number_of non_zero != 0) ~++.
signs = temp_index(region'region_size+jJ;
'p mlt_num_bits~~ = number_cF non_zero;
'p mlt_code hits++ = signs:
~? mlt_r_um_bits = 0; /' signifies no more bits to send. '/
PCTlUS97/17770 /r rrr.r.r.r.rrrrrrrrrrr.rr.rrrrrrr.rrr....rrrr.r...r.r..r..r.....rrrr.r...r.rrwrr rrrrr r/
/.
r..r..rr.r..rrrrrrrrrrrr.rrrrrrrrrrr.rwrrrarrr..rr.r..rrrr..rrrrrrr.....rwrrwrr rrr.r v/
irt vector huffman(category, quantized_standard deviation, power '_ndex, raw_mlt~tr .
quant i z ed_-~i t _'_.~.dex.~ t r , p num_indices!
int category;
float q~uancized_standard deviation;
int power_index;
float '-aw_mit~tr;
int 'quancized mlt_index~tr:
int 'p num_indices:
( Float inv_of_step_size_times_std dev:
int j,n:
int k;
int aumber_of_region_bits;
int rumber_of non_zero;
inL veC dlm;
lnt nllm_VACS:
inc kmax, kmnx~lus one;
int index,siQns_index;
inc rbitcount_iable~tz:
vec_dim = veetor_dimensionicategory];

~S9-oct ~ 15:49 1996 encoder.c ?age 9 .-.um vets = number_of veccors(categoryl;
%cmax = max_bin(cacegory];
kmax olus_one = kmax + 1;
number_c;_regior._bits = 0;
'p_num_indices = 0:
bitcou.~.t_table~cr = (inc ') table_of bitcount_tablesicstegory);
/' T_. step_size(] remain exactly square raoc of 2 steps, like the standard deviations, they we can replace this multiply with a simple additive adjustment to power_index. '/
inv_of_scep_size_ti:nes_st~ dev = 1.0/lstep_size(category] ' quantized_standard_deviation ;
_or (n=J; n<num_vecs; n++) index = 0;
signs_index = 0;
numoer_of_non zero = 0;
for (j=0; j<vec dim; j-~) ( k = (int) (fabsl~raw mlt~tr) ' inv oE_step_size_times_std_cev -dead_zone[category]
if (k != Ol ( number o~ non_zero++;
signs_index ~~ 1;
if ('raw mlt~cr > 01 sigas_indexr+;
if (k > kmax) k = kmax:
_ndex = index~tkmax~lus onel + x:
raw_mlt~cr+~ ;
f nuaber_of_region_bits +_ ~(biccount_table~tr+index);
n'.:mber_of_region_bits += number of non_zero;
~quancized mlt_index_,_ptr++ = index:
('p num_indice~)++;
if (number_of non_zero != 0) ~qvancized_mlt_index~tr++ = signs_index;
i'p num_indices)+~;
]
re~urnlnumber of_region bitsl;

Occ % I5:53 1996 decoder.c Page 1 include <scdio.h>
~irclude <math.h>
sinclude "dafs.h"
ainclude "intops.h"
!!include "huff defs.h"
ice=ine NOISE_FILL_FLAG 1 ins index_to arzay(int, int(I, int);
extern float mlt_quant_centroid[NUM CATEGORIES)[MAX_NUM BINS);
extern float region_scandard_deviation_table(REGION PON1ER_TAHLE SIZE];
void decode_envelope(int ~) int ' float(/, int(J, int ');
void decode vector_quantized mlt_indiceslint ', int, float (J) inc fl, M oat (]);
ex~ern inc r~gion_size;
~xcern B oat region_size_inverse:
extern inc differencial_region~ower decoder_tree[NUM_REGIONSI(DIFF_REGION
POWER_LEVELS-1) r21;
axcern inc vector_Cimension(NUM CATEGORIES);
extern inc number of_vectors(NUM CATEGORIES);
extern int table of decoder_tebles(NUM CATEGORIES-I);
void rate adjust categories(int, int (I, int (I);
/r wwwwwrwwrwrwwwrwwwwwrrwrrrwwrwrwwwwwrwwwwawrrwrraarrwwwwwrwwrrrrrwwrwwrwwwwwww*
wwwww e/
/r rrrw~wwww rrwwwwrwwrrarrwwrrrwwrrrrrwawraawwrrarwwwwwwwwwwrrwrwrrrwwwwrwwwwwrwwwwwww r/
void decoder(number of available bits, bitstream, deeoder_mlt coefs, P~ag_shi f t ) inc number of_available bits;
shazt int bitstream[1;
float decoder mlt_coefs(BLOCK_SIZEI;
int 'p mag_shift;
( int number_of bits~er_frame;
int 'code bits~cr:
inc code_bits(MAX_HITS_PER_FRAMEI;
int absolute_region~ower_index(NUM REGIONS);
_at decader~ower categories[NUM_REGIONSI;
int decoder category_balances(NUM RATE_CONTROL_POSSIHILITIES-1I;
int rate_control;
_nt number_of envelope bits;
float decoder_regioz_scandard deviation(NUM_REGIONSI;
number of bits_per_fzame = number_of_available bits:
/' Unpack bitstreamil into individual bits in code bits(). '/
[
int i,j;
int word;
int temp(16I;
code_bits~tr = code_bies:
Eor li=Q: i<neunber_of_bits~er_frame/16; i.r) [

Oct ~ 1S:53 1996 decoder.c ?age 2 word = bitstream(iJ;
LO_- (J=p; ;<16i J'*) ( temp(jl = word & 1;
word ~= 1;
for (j=15: j>=0; j--) 'code bits~tr~* = temp(jJ;
) code_bits~tr = code bits:
3ecode_envelope(code bits~tr.
number of envelope_biCS.
decoder_region_standard_deviation.
absolute_region~ower_i..~.dex.
p mag_shifC):
code Sits-pcz ~= number_of eavelope_bits:
r:umber of_availabie bits -= number or envelope bits:
( int i;
rate control = 0:
for (i=0; i<t~UM RAT~_CONTROL SITS: it*) race_contzol ~~ I:
-ate_cont=of *_ 'eode_bits~scr+*;
i ) number_of available bits -_ ~ RATE CONTROL_BZTS;
categorize(number of_available bits.
absolute_region~ower__ndex.
decodez~ower categories.
decoder_cacego~ balances);
rate adjust categories(race_control.
decoder~ower_categories.
deeoder category_balaaces):
decode vector_quantized ~nlt_indices(code bits~tr.
ncuaher_of_available_bits, decoder_region_standard_deviation.
dncoder~ower categories, decoder mlt_coefsl:
( int i;
for (i ~ BLOCK_SIZE'0.875: i < HLOCK_SI2E: i++i decoder mlt_caefs(ij = 0.0;

Oc= . 15:S3 1996 cecodez.c Page 3 ,_ ...............................................................................
..... ./
........................_.................................._...................
..... ./
void cecode envelopelcode bits~tr.
p numcer_of envelope_bits.
decoder region_standard deviation) absolute_region~ower_index, p_mag_shift) int 'code_bits~tr;
int 'p number_of envelope bits;
Gloat decoder_region_standard deviation(NUM_REGIONS];
_nt absolute_region~ower_index(NLJM_REGIONSI:
int W mag shift;
int region;
.at i:
int index:
ir_t differential_region~ower_index(NUM_REGIONS1;
/' Recover differential_region~ower_?ndex(] ~rom code bits(]. '/
~p number_of envelope bits = 0;
index = 0;
for (i=0: i<S: i++) ( index ~= 1;
index ~- 'code bits~tr+~:
/' ES: ADJUSTMENT TO_RMS_INDEX compensates for t::e current ;9I30/96) IMLT being scaled to high by the ninth power of sqrtt2). '/
differential_region~ower_'_ndex(0] = index-ESF ADJUSTa~IT- O EL"4S_INDEX:
'p number of_envelope_bits += 5;
for (region=1; region<NtJM LEGIONS: region++) index = 0;
do if ('code_bits~tr++ _= 0) index = differential_region,~ower decoder_tree(region](index][0];
else index = differential_region~ower decoder_tree(regionl(indexl(1];
'p number of envelope bits += 1;
) while (index > 0];
differential_region~ower_index(regionl = -index;
/" Reconstruct absolute_region~ower_index(] from differential_region~ower_index(]. "/
absolute_region,~ower_index(0] = differential_region~ower_index(0];
for (region=1; region<NUM_REGIONS: region++) absolute_region,.power_index(region] = absolute_region~ower_index(region-11 +
differential_region~ower_index(region] + DRP DIFF_aIN;
/" Reconstruct deeodnr_region_standard_deviation(] from absolute_region~ower_index[]. ~/
float max;

Oct % 15:53 1996 decoder.c Page 4 float ftemp0;
for (region=0; region<NVM REGIONS; region++) i = absolute_region~ower_index(region]+REGION POWER_TABLE_NL'M NEGATIVES;
decoder_region_standard_deviation(regionl =
region_scandard_deviacion_table(i1;
w Determine number of bits co shift up t::e resulting mlt coefficients. '/
~ax = 0.0;
for (region=0; region<NUM_REGIONS; region++1 ( ~f (decoder_region_scandard_deviationlregion) > maxi max = decoder_region_standard_deviacion(regionl;
i 'p_mag shift = 0;
ftemp0 = 256.0;
while ((max < ftemp0) &a (ftemp0 >= 1.01) ('p mag_shift)++;
ftemp0 ~= 0.5;
fcemp0 = 1.0;
~ar (i=0; i<~p mag_shift; i+~) ftemp0 '= 2.0;
for (region=0; region<NUM_REGIONS; =egion+~1 decoder_:egion standard deviation(regionl '= ftemp0;
.
...~~.............t.......................r.....f..............................
...r. f~
~
~.~...~~t~~.1~~~..~~.~.~t.~~.~~~..~~..~~~....~~~~~~~~~~~~.~~~.r..t.~t.~.~~~~~.r r~~ff .~
void rate_adjust categorieslrate_control.
decoder"power categories.
decoder_category_balances) int rate_control;
int decoder~ower categories(NUM_REGIONS1;
inc decoder_category_balances(NUM_RATE CONTROL_POSSIHILITIES-1~;
int i;
int region;
i = O;
while (race control > 01 region = decoder_category_balances(i++);
decoder~ower categories(regionj++;
rate control--, ~' frw......t~r.....~..t~...~~..r.~.........~~..~~....~.rr..rt.rrrrfr.r~~r.r......
..... .~
~.
.....~~~~rwr~~...rr.r~~......r~r.......~...~~.w.rr~....~..r.rrr.r.r~..r...~rer~
..... ~~
xdefine get_rand() \
raadom_word = b0+b3; \
if ((random_word & 32768f I= Of random word++; \

Oct ~ 15:53 1996 decoder.c Page ~
b3 = b2: \
~D2 = Dl: \
bl = D~: \
b0 = random word:
~.
.wrrwrrrrrrrrrrrwrwrrrrrwwwrwwrrwrrwrwrrrrrrwrrrrrrrwwwrrwrwrrwrrwrwrrrrrwrrrrw rrwwr r~
y rwrwwrrwrrwrrwrrrrrrrwrwrrrrrrrwrrrwrwwrrrwrrrrrrrwrrrrrwwrwrrarrrrrwwwrrrrrrrr rrrrr r~
void decode vector_quantized mlt_'_zdicestcode bits~tr.
number_of available_bits, decoder_region_standard_deviation.
decoder~ower_categaries.
decoder_mlt coefs) int 'cade_bits~tr:
int number_of_available_bits;
float dacoder_region standard_deviation(NUM REGIONS);
inc decoder~ower_cateqories(NUM REGIONS);
float decoder mlt coefs(BLOCK SIZE1:
float standard_deviation;
float ~decoder mlt~tr:
float decoder_mlt value;
lost tempt:
float noifillpos;
float noi~illneg;
int region;
int category;
int j,n:
iat k(MAX VECTOR_DIMENSIONj:
int vec_dim:
inc num_vecs;
int index,signs_index:
int bit;
int num_sign_bits;
int num_bits;
int ran_ouc of bits_flag;
int ~decoder_table~tr:
static inc here_befoze = 0;
static int b0.bl.b2.b3:
int random_word;
if (here before == 0) here_be~ore = 1:
b0 = 1;
bl = 1;
b2 = 1;
b3 = 1;
ran_out_of bits_flag = 0;
for (region=0: region<NUM_REGIONS: region++) category = decoder~ower categoriea(regionl:
decoder mlt~tr = 6decoder_mlt coefs(regionrregion size];
scandard_deviacion = decoder_region_standard_deviation(regionl;
i= (category < NUM_CATEGORIES-1) /~ ~ z/

Oct '1 15:S3 1996 decoder.c Page 6 decoder_tabl~~tr = lint ') table_of decoder_tables(categoryj;
vet dim = vector_dimension(categoryl;
num_vecs = number_of vectors(categoryl;
for la=0; n<num vets: n++) num_bits = 0;

index = 0;
do f if (number_ot_available_bits <= 0) ( ran_out_of bits_flag = 1;
printfl'decoder ran out of bits region=~c2d n=92d",region,n):
break;
Z
/' if ('COde_bit5~cr++ -_a 0) index = mlt vector decoder_tree(cacegor~r((indexJ(01:
else index = mlt vector_decoder_cree(cacegozy;(index)(ll; 'l if (~code_bits,ptr++ _. 0) index = 'Idecoder_table otr + 2"index);
else index = ~ldecoder_table~tr + 2~index + _);
number of_available_bits--, ) while (index > 01;
if Izan_out_o~ bits_ElaQ == 1) break:
index = -index;
num_sign_bits = index_to_arraylindex,k,category);
if (number of available bits >= num_sign bits) ( if (num sign_bits != 0) siqns_index = 0;
for (7=0; j<num_sign bits; j++) ( signs_index ~= 1;
signs_iadex +_ ~code bits"_ptr++;
number_of_available_bits--, bit = 1 ~ Inum_sign_bits-1);

for (j=0. j<vec_dim: j++) decoder mlt_valus = standard deviation ~ mlt_ruaat centroid(category](k(jJJ;
if (decoder mlt value !a 0) if ( (signs_index & bit) _= 0) decoder_mlt value '= -1:
bit ~i 1;
~decoder_mlt~tr+.+ = decoder_mlt value:
~ ~o2Z

oet 7 15:S3 1996 decoder.c Page 7 else ran_out of_bits_flag = 1;
printf("decoder ran out of bits region=62d n=32d".region.nl:
break:
) /' if ran out of bits during decoding do noise f.11 for remaining regions. '/
/~ For now also redo a11 of last region with all noise fill. '/
if (ran_out of bits_flag == 1) for (j=region+1: j<NUM REGIONS; j++) decoder~ower_cacegories(regionl = NUM CATEGORIES-1;
category = NIJM_CATEGORIES-I;
decoder ~rlt_ptr = &decoder mit coefs(-egion"region_size);
t ~if (NOIS=_FILL FLAG == 1) if (category == NUM_CATEGORIES-3) decoder mlt~tr = &decoder mlt coefs(region"region size);
noifillpos = standard_deviation ' 0.17678:
noifillneg = -noifillpos;
/~ This assumes region_size = 20 ~/
get_rand();
foz (j=0; j<10; j++) if (~decoder mlt~tr == 01 ( temp( = noifillpos:
if ((random ward & 1) _= 0) temp( = noifillneg:
"decoder_mlt~tr = temp(;
random word ~= 1;
decoder_mlt,~tr++;
) get_rand();
fot (j=0: j<10: j**) ( if ('decoder ~:lt~tr == 0) ( temp( = noifillpos:
if ((random word & 1) ~~ 0) temp( = noifillneg;
'decoder mlt,~tr = temp(;
random word >~ 1;
) decoder_mlt~tr++;
) if (category == NUM CATEGORIES-2) decoder_mlt~tr = &dscoder mlt caefs(region~region_size);
nai~illpos = standard_deviation " 0.2S:
noifillneg = -noifillpos;
/~ This assumes region size = 20 ~/
get_rand();
for (j=0. j<10: j+*) i WO 98/15945 PCTlUS97/17770 Oct % 15:53 1996 decoder.e Page 8 if ('decoder mlt~tr =9 0) templ = noifillpos:
if ((random_word & 1) _= O1 tempt = noifillneg;
'dacoder_mlt,~tr = tempt;
random word ~ = 1:
) decoder mlt~tr++;
) get_rand();
for (j=0; j<10: j++) if (~decoder_mlt~tr == 0) ( tempt = noifillpos:
if ((random_word & 1) _= 0) tempt = noifillneg:
~decoder_mlt,~tr = tempi:
random_word ~= 1;
) decoder mlt~tr++;
ii (category == NUM CATEGORIES-1) ( noifillpos = staadard_deviation ' 0.707l1;
noifillneg = -noifillpos:
/' This assumes region_size = 20 "!
get_rand():
for (j=0: j<10: 7+~1 ( tempt = noifillpos:
if ((random_word 6 1) _= 0) tempt = noifillneg;
'decoder_mlt",ptr++ = tempt;
random wozd ~~ 1;
) get_rand():
for (j=0: 7<10; j++) tempt = noifillpos:
if ((random word & 11 =~ 0) tempt = noifillneg;
'decoder mlt~tr++ = tempi:
random_word ~ ~ 1;
) else iE (category == NUM CATEGORIES-1) ( for (j=0: j<ragion_size: j+*) ~decoder_mlt~tr++ = 0;
) Ikendi f

Claims (15)

What is claimed is:
1. A method for encoding an audio signal, comprising the steps of:
converting overlapping groups of digitized samples of the audio signal into frames of transform coefficients;
grouping the transform coefficients in each frame into adjacent regions;
determining power in each region from the transform coefficients in the region;
applying a predetermined number of quantization step size and variable bit-length encoding categorizations to the transform coefficients in each region, the quantization step size and encoding categorizations being selected in accordance with a predetermined rule;
determining, for each one of the categorizations, the number of bits required to transmit the encoded transform coefficients to a decoder;
quantizing and encoding the transform coefficients in accordance with one of the categorization selected in accordance with a predetermined fidelity criteria and maximum bit rate;
transmitting the quantized power, the quantized and encoded transform coefficients, and an identification of the selected categorizations to a decoder.
2. A method for decoding an encoded audio signal, comprising the steps of:
reconstructing power in each of a plurality of regions from quantized and encoded power;
determining one of a predetermined number of quantization and variable bit-length encoding categorizations used by the encoder from a received identification thereof;
determining a quantization step size for each region from the determined categorization and the quantized power;
reconstructing from the quantized and encoded transform coefficients, reconstructed transform coefficients using the determined step size; and transforming the reconstructed transform coefficients into the audio signal.
3. An audio signal encoding method, comprising the steps of:
converting samples of the audio signal into frames of transform coefficients, the transform coefficients in each frame being grouped into a plurality of regions;
applying a predetermined number of quantization step size and variable bit-length encoding categorizations to the plurality of regions, such procedure including the step of assigning to each one of the regions a selected one of a plurality of different quantization categories, such categorizations being selected in accordance with characteristics of the transform coefficients in the region;
selecting one of the categorizations for quantization of the transform coefficients in the regions.
4. An audio signal encoding method, comprising the steps of:
converting samples of the audio signal into frames of transform coefficients, the transform coefficients in each frame being grouped into a plurality of regions;

determining a power for each of the regions from the transform coefficients;
encoding the determined powers for transmission to a decoder;
applying a predetermined number of quantization and variable bit-length encoding categorizations to the plurality of regions, each one of the categorizations including the step of assigning to each one of the regions a selected one of a plurality of different quantization categories, each category providing a quantization step size and variable bit-length encoding procedure, the transform coefficients of at least one categorization being quantized in accordance with a quantization step size selected in accordance with the determined powers, the encoding procedure being selected in accordance with statistical properties of the quantized transform coefficients;
selecting one of the categorizations for quantizing and encoding of the transform coefficients in the regions in accordance with a figure of merit determined for each of the applied categorizations and identifying such selected categorization for transmission to the decoder;
quantizing the transform coefficients in the regions with the quantization step sizes provided by the categories in the selected categorization;
encoding the quantized transform coefficients in accordance with the procedures provided by the categories in the selected categorization for transmission to the decoder.
5. An audio signal encoding method, comprising the steps of:
converting a sequence of samples of the audio signal into a corresponding sequence of digital words;

converting each of a plurality of overlapping groups of the digital words into a frame of transform coefficients, the coefficients in each frame being grouped into a plurality of adjacent regions;
applying a predetermined number of categorization to the plurality of regions for generating a first categorization, including the step of assigning to each one of the regions a selected one of a plurality of different quantization categories, such categorization being selected in accordance with at least one characteristics of the transform coefficients in the regions; and selecting one of the categorizations for quantizing and encoding of the transform coefficients in each of the regions in accordance with a figure of merit.
6. A method for encoding an audio signal comprising the steps of:
windowing the incoming audio signal;
transforming the windowed signal from the time domain to a frequency domain, the transforming step resulting in a plurality of frequency components;
grouping the frequency components into adjacent regions in the frequency domain, each region having a plurality of frequency components;
determining a spectral energy for each region;
transmitting the spectral energy for each region in an encoded format to a transmission channel;
determining, using said spectral energies for a11 regions, a quantization step size for each region;
quantizing the frequency components based on said quantization step sizes;
determining the total number of bits required to transmit quantized information, in accordance with a transmitter encoding method;

determining a plurality of perturbed quantization assignments for each of said regions based upon a predetermined set of rules, and using said quantization step sizes;
determining, for each perturbed quantization, the total number of bits required to transmit said quantized information in accordance with quantization step sizes resulting from said perturbed assignments;
based upon a fidelity criteria and a maximum channel bit rate, selecting one of said perturbed assignments and said quantization step sizes, for transmission to said channel;
quantizing said transform coefficients in accordance with said selected quantization;
encoding said quantized transform coefficients for transmission to the channel; and transmitting to the channel an identification of the selected quantization, whereby a decoder can reconstruct an audio signal from said received information over the channel.
7. A method for decoding an encoded audio signal comprising the steps of:
reconstructing a power amplitude envelope from a quantized and encoded power amplitude envelope;
determining, from a bit rate code, a selected one of a predetermined number of categorizations used in quantizing and encoding the audio signal, such quantization procedure having grouped transform coefficients of a frame of the audio signal into adjacent regions, the transform coefficients in each region having been quantized in accordance with a quantization step size selected in accordance with quantized transmitted power in such region and the quantized transmitted powers in a11 the regions and a predetermined rule;

decoding the quantized and encoded transform coefficients in accordance with the selected one of the categorizations, such selected categorization providing the quantization step size and encoding categorization used to encode the transform coefficients of the audio signal; and converting the decoded transform coefficients into a reconstruction of the audio signal.
8. A method for decoding an encoded audio signal, the audio signal being encoded by a method comprising the steps of converting overlapping groups of digitized samples of the audio signal into frames of transform coefficients;
grouping the frames of transform coefficients into adjacent regions;
determining power in each region from the transform coefficients in the region;
transmitting the power quantized and encoded to a decoder;
applying a predetermined number of quantization step size and encoding procedure categorization to the transform coefficients in each region, the quantization step size being selected in accordance with quantized transmitted power in the region and the quantized transmitted powers in all the regions;
determining the number of bits required to transmit the encoded transform coefficients to a decoder;
quantizing and encoding the transform coefficients in accordance with a quantization procedure selected in accordance with a predetermined fidelity criteria and maximum bit rate; and transmitting the selected quantized and encoded transform coefficients and an identification of the selected quantization procedure to a decoder;
the decoding method comprising the steps of:
reconstructing a power amplitude envelope from the transmitted quantized and encoded power amplitude;
determining one of a predetermined number of quantization and encoding categorizations applied to the transmitted to the decoder;
decoding quantized and encoded transform coefficients in accordance with the determined categorization, such determined categorization providing the quantization step size and encoding categorization in encoding the audio signal; and converting the decoded transform coefficients into a reconstructed audio signal.
9. An audio signal encoding method, comprising the steps of:
converting overlapping groups of the digitized samples of an audio signal into frames of transform coefficients, each frame of transform coefficients being grouped into regions;
determining power in each region quantized, indexed, and variable bit-length encoded;
performing a categorization procedure to determine a predetermined number of categorization using the quantized region power indices and a number of remaining bits remaining after region power encoding, each categorization specifying a quantization and encoding category assignment for each region, each category defining a quantization step size, dead zone, vector dimension, and variable bit-length coding table and associated decoding tables;

for each categorization, selecting the quantization and encoding category for each region in accordance with the quantized power indices in the region, the quantized power indices in all the regions, and the number of available bits;
determining the number of bits required to transmit the encoded transform coefficients using each categorization;
encoding the transform coefficients using one of the categorizations selected in accordance with a maximum bit rate criteria;
transmitting the encoded quantized region power indices, an identification of the selected categorization, and the encoded transform coefficients to a decoder.
10. The method recited in claim 9, including the steps of decoding and reconstructing quantized power in each of the regions is from the transmitted quantized power indices;
determining the same set of categorizations that the encoder determined and using the quantized power indices and the number of bits remaining after region power decoding;
determining the selected one of the categorizations from the identification thereof transmitted to the decoder;
determining the quantization and encoding category assignment for each of the regions from the determined categorization;
determining for each region, from the determined category for the region and the reconstructed quantized power in the region, a transform coefficient reconstruction level table, the vector dimension, and a variable bit-length decoding table;
reconstructing the quantized transform coefficients for each region from the transform coefficient reconstruction level table, the vector dimension, and the variable bit-length decoding table;
and transforming into a time domain audio signal the transform coefficients.
11. A encoder for encoding an audio signal, comprising:
a module for converting overlapping groups of digitized samples of the audio signal into frames of transform coefficients;
a module for grouping the transform coefficients in each frame into adjacent regions;
a module for determining power in each region from the transform coefficients in the region;
a module for applying a predetermined number of quantization step size and variable bit-length encoding categorizations to the transform coefficients in each region, the quantization step size and encoding categorizations being selected in accordance with a predetermined rule;
a module for determining, for each one of the categorizations, the number of bits required to transmit the encoded transform coefficients to a decoder;
a module for quantizing and encoding the transform coefficients in accordance with one of the categorization selected in accordance with a predetermined fidelity criteria and maximum bit rate;
a module for transmitting the quantized power, the quantized and encoded transform coefficients, and an identification of the selected categorizations to a decoder.
12. A decoder for decoding an encoded audio signal, comprising:
a module for reconstructing power in each of a plurality of regions from quantized and encoded power;
a module for determining one of a predetermined number of quantization and variable bit-length encoding categorizations used by the encoder from a received identification thereof;
a module for determining a quantization step size for each region from the determined categorization and the quantized power;
a module for reconstructing from the quantized and encoded transform coefficients, reconstructed transform coefficients using the determined step size; and a module for transforming the reconstructed transform coefficients into the audio signal.
13. An audio signal encoder, comprising:
a module for converting samples of the audio signal into frames of transform coefficients, the transform coefficients in each frame being grouped into a plurality of regions;
a module for applying a predetermined number of quantization step size and variable bit-length encoding categorizations to the plurality of regions, such procedure including the step of assigning to each one of the regions a selected one of a plurality of different quantization categories, such categorizations being selected in accordance with characteristics of the transform coefficients in the region;

a module for selecting one of the categorizations for quantization of the transform coefficients in the regions.
14. A decoder for decoding an encoded audio signal comprising:
a module for reconstructing a power amplitude envelope from a quantized and encoded power amplitude envelope;
a module for determining, from a bit rate code, a selected one of a predetermined number of categorizations used in quantizing and encoding the audio signal, such quantization procedure having grouped transform coefficients of a frame of the audio signal into adjacent regions, the transform coefficients in each region having been quantized in accordance with a quantization step size selected in accordance with quantized transmitted power in such region and the quantized transmitted powers in all the regions and a predetermined rule;
a module for decoding the quantized and encoded transform coefficients in accordance with the selected one of the categorizations, such selected categorization providing the quantization step size and encoding categorization used to encode the transform coefficients of the audio signal; and a module for converting the decoded transform coefficients into a reconstruction of the audio signal.
15. An encoding and decoding system for encoding and decoding an audio signal, comprising:
a decoder, comprising:
a module for converting overlapping groups of digitized samples of the audio signal into frames of transform coefficients;

a module for grouping the frames of transform coefficients into adjacent regions;
a module for determining power in each region from the transform coefficients in the region;
a module for transmitting the power quantized and encoded to a decoder;
a module for applying a predetermined number of quantization step size and encoding procedure categorization to the transform coefficients in each region, the quantization step size being selected in accordance with quantized transmitted power in the region and the quantized transmitted powers in a11 the regions;
a module for determining the number of bits required to transmit the encoded transform coefficients to a decoder;
a module for quantizing and encoding the transform coefficients in accordance with a quantization procedure selected in accordance with a predetermined fidelity criteria and maximum bit rate; and a module for transmitting the selected quantized and encoded transform coefficients and an identification of the selected quantization procedure to a decoder;
the decoder, comprising:
a module for reconstructing a power amplitude envelope from the transmitted quantized and encoded power amplitude;
a module for determining one of a predetermined number of quantization and encoding categorizations applied to the transmitted to the decoder;
a module for decoding quantized and encoded transform coefficients in accordance with the determined categorization, such determined categorization providing the quantization step size and encoding categorization in encoding the audio signal; and a module for converting the decoded transform coefficients into a reconstructed audio signal.
CA002267764A 1996-10-07 1997-10-06 Variable length audio coding using a plurality of subband bit allocation patterns Abandoned CA2267764A1 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/726,959 1996-10-07
US08/726,959 US5924064A (en) 1996-10-07 1996-10-07 Variable length coding using a plurality of region bit allocation patterns
PCT/US1997/017770 WO1998015945A1 (en) 1996-10-07 1997-10-06 Variable length audio coding using a plurality of subband bit allocation patterns

Publications (1)

Publication Number Publication Date
CA2267764A1 true CA2267764A1 (en) 1998-04-16

Family

ID=24920743

Family Applications (1)

Application Number Title Priority Date Filing Date
CA002267764A Abandoned CA2267764A1 (en) 1996-10-07 1997-10-06 Variable length audio coding using a plurality of subband bit allocation patterns

Country Status (6)

Country Link
US (1) US5924064A (en)
EP (1) EP0968497B1 (en)
JP (1) JP4237826B2 (en)
CA (1) CA2267764A1 (en)
DE (1) DE69705642T2 (en)
WO (1) WO1998015945A1 (en)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6167375A (en) * 1997-03-17 2000-12-26 Kabushiki Kaisha Toshiba Method for encoding and decoding a speech signal including background noise
KR100335609B1 (en) 1997-11-20 2002-10-04 삼성전자 주식회사 Scalable audio encoding/decoding method and apparatus
EP1080542B1 (en) * 1998-05-27 2006-09-06 Microsoft Corporation System and method for masking quantization noise of audio signals
ATE269574T1 (en) * 1999-04-16 2004-07-15 Dolby Lab Licensing Corp AUDIO CODING WITH GAIN ADAPTIVE QUANTIZATION AND SYMBOLS OF DIFFERENT LENGTH
KR100844810B1 (en) * 2000-12-22 2008-07-09 소니 가부시끼 가이샤 Encoder and decoder
AUPR433901A0 (en) * 2001-04-10 2001-05-17 Lake Technology Limited High frequency signal construction method
US7240001B2 (en) * 2001-12-14 2007-07-03 Microsoft Corporation Quality improvement techniques in an audio encoder
EP1472882A1 (en) * 2002-01-22 2004-11-03 Koninklijke Philips Electronics N.V. Reducing bit rate of already compressed multimedia
US7099387B2 (en) * 2002-03-22 2006-08-29 Realnetorks, Inc. Context-adaptive VLC video transform coefficients encoding/decoding methods and apparatuses
US7447631B2 (en) * 2002-06-17 2008-11-04 Dolby Laboratories Licensing Corporation Audio coding system using spectral hole filling
US20030236674A1 (en) * 2002-06-19 2003-12-25 Henry Raymond C. Methods and systems for compression of stored audio
DE102004009955B3 (en) * 2004-03-01 2005-08-11 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Device for determining quantizer step length for quantizing signal with audio or video information uses longer second step length if second disturbance is smaller than first disturbance or noise threshold hold
US7536302B2 (en) * 2004-07-13 2009-05-19 Industrial Technology Research Institute Method, process and device for coding audio signals
DE102004036154B3 (en) * 2004-07-26 2005-12-22 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Apparatus and method for robust classification of audio signals and method for setting up and operating an audio signal database and computer program
US7903137B2 (en) * 2004-10-15 2011-03-08 Lifesize Communications, Inc. Videoconferencing echo cancellers
US7720236B2 (en) * 2004-10-15 2010-05-18 Lifesize Communications, Inc. Updating modeling information based on offline calibration experiments
US7720232B2 (en) * 2004-10-15 2010-05-18 Lifesize Communications, Inc. Speakerphone
US20060132595A1 (en) * 2004-10-15 2006-06-22 Kenoyer Michael L Speakerphone supporting video and audio features
US8116500B2 (en) * 2004-10-15 2012-02-14 Lifesize Communications, Inc. Microphone orientation and size in a speakerphone
US7760887B2 (en) * 2004-10-15 2010-07-20 Lifesize Communications, Inc. Updating modeling information based on online data gathering
US7826624B2 (en) * 2004-10-15 2010-11-02 Lifesize Communications, Inc. Speakerphone self calibration and beam forming
US7970151B2 (en) * 2004-10-15 2011-06-28 Lifesize Communications, Inc. Hybrid beamforming
US7970150B2 (en) * 2005-04-29 2011-06-28 Lifesize Communications, Inc. Tracking talkers using virtual broadside scan and directed beams
US7593539B2 (en) 2005-04-29 2009-09-22 Lifesize Communications, Inc. Microphone and speaker arrangement in speakerphone
US7991167B2 (en) * 2005-04-29 2011-08-02 Lifesize Communications, Inc. Forming beams with nulls directed at noise sources
WO2007096551A2 (en) * 2006-02-24 2007-08-30 France Telecom Method for binary coding of quantization indices of a signal envelope, method for decoding a signal envelope and corresponding coding and decoding modules
US7966175B2 (en) * 2006-10-18 2011-06-21 Polycom, Inc. Fast lattice vector quantization
US7953595B2 (en) * 2006-10-18 2011-05-31 Polycom, Inc. Dual-transform coding of audio signals
US7885819B2 (en) 2007-06-29 2011-02-08 Microsoft Corporation Bitstream syntax for multi-process audio decoding
ES2642906T3 (en) 2008-07-11 2017-11-20 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Audio encoder, procedures to provide audio stream and computer program
US8386266B2 (en) * 2010-07-01 2013-02-26 Polycom, Inc. Full-band scalable audio codec
US8428959B2 (en) * 2010-01-29 2013-04-23 Polycom, Inc. Audio packet loss concealment by transform interpolation
RU2464649C1 (en) 2011-06-01 2012-10-20 Корпорация "САМСУНГ ЭЛЕКТРОНИКС Ко., Лтд." Audio signal processing method
US9472199B2 (en) 2011-09-28 2016-10-18 Lg Electronics Inc. Voice signal encoding method, voice signal decoding method, and apparatus using same
US9111524B2 (en) * 2011-12-20 2015-08-18 Dolby International Ab Seamless playback of successive multimedia files
MX346732B (en) * 2013-01-29 2017-03-30 Fraunhofer Ges Forschung Low-complexity tonality-adaptive audio signal quantization.
WO2018126496A1 (en) 2017-01-09 2018-07-12 Qualcomm Incorporated Bit allocation for encoding and decoding
US10523369B2 (en) 2017-01-09 2019-12-31 Qualcomm Incorporated Mutual-information based recursive polar code construction

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5142656A (en) * 1989-01-27 1992-08-25 Dolby Laboratories Licensing Corporation Low bit rate transform coder, decoder, and encoder/decoder for high-quality audio
US5479562A (en) * 1989-01-27 1995-12-26 Dolby Laboratories Licensing Corporation Method and apparatus for encoding and decoding audio information
US5222189A (en) * 1989-01-27 1993-06-22 Dolby Laboratories Licensing Corporation Low time-delay transform coder, decoder, and encoder/decoder for high-quality audio
US5109417A (en) * 1989-01-27 1992-04-28 Dolby Laboratories Licensing Corporation Low bit rate transform coder, decoder, and encoder/decoder for high-quality audio
US5230038A (en) * 1989-01-27 1993-07-20 Fielder Louis D Low bit rate transform coder, decoder, and encoder/decoder for high-quality audio
US5185800A (en) * 1989-10-13 1993-02-09 Centre National D'etudes Des Telecommunications Bit allocation device for transformed digital audio broadcasting signals with adaptive quantization based on psychoauditive criterion
ES2087522T3 (en) * 1991-01-08 1996-07-16 Dolby Lab Licensing Corp DECODING / CODING FOR MULTIDIMENSIONAL SOUND FIELDS.
US5317672A (en) * 1991-03-05 1994-05-31 Picturetel Corporation Variable bit rate speech encoder
ES2164640T3 (en) * 1991-08-02 2002-03-01 Sony Corp DIGITAL ENCODER WITH DYNAMIC ASSIGNMENT OF QUANTIFICATION BITS.
JP3134455B2 (en) * 1992-01-29 2001-02-13 ソニー株式会社 High efficiency coding apparatus and method
JP3153933B2 (en) * 1992-06-16 2001-04-09 ソニー株式会社 Data encoding device and method and data decoding device and method
KR100188912B1 (en) * 1992-09-21 1999-06-01 윤종용 Bit reassigning method of subband coding
JP3123286B2 (en) * 1993-02-18 2001-01-09 ソニー株式会社 Digital signal processing device or method, and recording medium
JPH09503630A (en) * 1993-07-07 1997-04-08 ピクチャーテル コーポレイション Constant bit rate speech encoder / decoder
US5664057A (en) * 1993-07-07 1997-09-02 Picturetel Corporation Fixed bit rate speech encoder/decoder
US5774846A (en) * 1994-12-19 1998-06-30 Matsushita Electric Industrial Co., Ltd. Speech coding apparatus, linear prediction coefficient analyzing apparatus and noise reducing apparatus
EP0720316B1 (en) * 1994-12-30 1999-12-08 Daewoo Electronics Co., Ltd Adaptive digital audio encoding apparatus and a bit allocation method thereof
JP2982637B2 (en) * 1995-01-17 1999-11-29 日本電気株式会社 Speech signal transmission system using spectrum parameters, and speech parameter encoding device and decoding device used therefor

Also Published As

Publication number Publication date
US5924064A (en) 1999-07-13
JP2001502073A (en) 2001-02-13
EP0968497B1 (en) 2001-07-11
JP4237826B2 (en) 2009-03-11
DE69705642D1 (en) 2001-08-16
WO1998015945A1 (en) 1998-04-16
DE69705642T2 (en) 2002-05-02
EP0968497A4 (en) 2000-02-23
EP0968497A1 (en) 2000-01-05

Similar Documents

Publication Publication Date Title
CA2267764A1 (en) Variable length audio coding using a plurality of subband bit allocation patterns
US5301255A (en) Audio signal subband encoder
US5341457A (en) Perceptual coding of audio signals
EP0267344B1 (en) Process for the multi-rate encoding of signals, and device for carrying out said process
JP3297051B2 (en) Apparatus and method for adaptive bit allocation encoding
EP0720307B1 (en) Digital audio signal coding and/or decoding method
US5632003A (en) Computationally efficient adaptive bit allocation for coding method and apparatus
US5613035A (en) Apparatus for adaptively encoding input digital audio signals from a plurality of channels
EP0259553B1 (en) Table controlled dynamic bit allocation in a variable rate sub-band speech coder
US5621856A (en) Digital encoder with dynamic quantization bit allocation
KR100361236B1 (en) Transmission System Implementing Differential Coding Principle
EP0176243B1 (en) Frequency domain speech coding
US4142071A (en) Quantizing process with dynamic allocation of the available bit resources and device for implementing said process
AU676444B2 (en) Method, device, and systems for determining a masking level for a subband in a subband audio encoder
US4790015A (en) Multirate digital transmission method and device for implementing said method
US4589130A (en) Multirate digital transmission method and device for implementing said method
WO2002043291A2 (en) Perceptual audio signal compression system and method
JPH08204574A (en) Adaptive encoded system
WO2000069100A1 (en) In-band on-channel system and method for bit-rate reduction of the digital signal by utilising properties of the analog signal
US6091773A (en) Data compression method and apparatus
AU611067B2 (en) Perceptual coding of audio signals
KR100893281B1 (en) Using gain-adaptive quantization and non-uniform symbol lengths for audio coding
Ramstad Considerations on quantization and dynamic bit-allocation in subband coders
JPH07504539A (en) Simultaneous transmission method of signals from N signal sources
JPH09503630A (en) Constant bit rate speech encoder / decoder

Legal Events

Date Code Title Description
FZDE Discontinued