Robust composite quantization with sub-quantizers and inverse sub-quantizers using illegal space

A sub-quantizer for sub-quantization of a vector includes a sub-codevector generator that generates a set of candidate sub-codevectors, and transformation logic that transforms each candidate sub-codevector into a corresponding codevector. A memory stores an illegal space definition representing illegal vectors. A legal status tester determines legal codevectors among the codevectors based on the illegal space definition. An error calculator generates error terms corresponding to the candidate sub-codevector, and a sub-codevector selector determines a best one of the sub-codevectors corresponding to a legal codevector and a best error term. The vector includes parameters relating to a speech and/or audio signal, such as Line Spectral Frequencies (LSFs).

BACKGROUND OF THE INVENTION

1. Field of the Invention

The invention relates generally to digital communications, and more particularly, to digital coding and decoding of signals, such as speech and/or audio signals.

2. Related Art

In the field of speech coding, predictive coding is a popular technique. Prediction of the input waveform is used to remove redundancy from the waveform, and instead of quantizing the input waveform directly, the waveform of the residual signal is quantized. The predictor(s) can be either backward adaptive or forward adaptive. Backward adaptive predictors do not require any side information as they are derived from the previously quantized waveform, and therefore can be derived at the decoder. On the other hand, forward adaptive predictor(s) require side information to be transmitted to the decoder as they are derived from the input waveform, which is not available at the decoder. In the field of speech coding two types of predictors are commonly used. The first is called the short-term predictor. It is aimed at removing redundancy between nearby samples in the input waveform. This is equivalent to removing the spectral envelope of the input waveform. The second is often referred as the long-term predictor. It removes redundancy between samples further apart, typically spaced by a time difference that is constant for a suitable duration. For speech this time distance is typically equivalent to the local pitch period of the speech signal, and consequently the long-term predictor is often referred as the pitch predictor. The long-term predictor removes the harmonic structure of the input waveform. The residual signal after the removal of redundancy by the predictor(s) is quantized along with any information needed to reconstruct the predictor(s) at the decoder.

In predictive coding, applying forward adaptive prediction, the necessity to communicate predictor information to the decoder calls for efficient and accurate methods to compress, or quantize, the predictor information. Furthermore, it is advantageous if the methods are robust to communication errors, i.e. minimize the impact to the accuracy of the reconstructed predictor if part of the information is lost or received incorrectly.

The spectral envelope of the speech signal can be efficiently represented with a short-term Auto-Regressive (AR) predictor. Human speech commonly has at most 5 formants in the telephony band (narrowband—100 Hz to 3400 Hz). Typically the order of the predictor is constant, and in popular predictive coding using forward adaptive short-term AR prediction, a model order of approximately 10 for an input signal with a bandwidth of approximately 100 Hz to 3400 Hz is a common value. A 10thorder AR-predictor provides an all-pole model of the spectral envelope with 10 poles and is capable of representing approximately 5 formants. For wideband signals (50 Hz to 7000 Hz), typically a higher model order is used in order to facilitate an accurate representation of the increased number of formants. The Nthorder short-term AR predictor is specified by N prediction coefficients, which provides a complete specification of the predictor. Consequently, these N prediction coefficients need to be communicated to the decoder along with other relevant information in order to reconstruct the speech signal. The N prediction coefficients are often referred as the Linear Predictive Coding (LPC) parameters.

The Line Spectral Pair (LSP) parameters were introduced by F. Itakura, “Line Spectrum Representation of Linear Predictor Coefficients for Speech Signals”, J. Acoust. Soc. Amer., Vol. 57, S35(A), 1975, and is the subject of U.S. Pat. No. 4,393,272 entitled “Sound Synthesizer”. The LSP parameters are derived as the roots of two polynomials, P(z) and Q(z), that are extensions of the z-transform of the AR prediction error filter. The LSP parameters are also referred as the Line Spectral Frequency (LSF) parameters, and have been shown to possess advantageous properties for quantization and interpolation of the spectral envelope in LPC. This has been attributed to their frequency domain interpretation and close relation with the locations of the formants of speech. The LSP, or LSF, parameters provide a unique and equivalent representation of the LPC parameters, and efficient algorithms have been developed to convert between the LPC and LSF parameters, P. Kabal and R. P. Ramachandran, “The Computation of Line Spectral Frequencies Using Chebyshev Polynomials”, IEEE Transactions on Acoustics, Speech, and Signal Processing, Vol. 34, No. 6, December 1986.

Popular predictive coding techniques often quantize the LSF representation of the LPC parameters in order to take advantage of the quantization and interpolation properties of the LSF parameters. One additional advantageous property of the LSF parameters is the inherent ordering property. It is known that for a stable LPC filter (Nthorder all-pole filter) the roots of the two polynomials P(Z) and Q(Z) are interleaved, referred as “in-order”, or “ordered”. Consequently, stability of the LPC filter can be verified by checking if the ordering property of the LSF parameters is fulfilled, that is, if the LSF parameters are in-order, and representations of unstable filters can be rectified. Commonly, the autocorrelation method, see L. R. Rabiner and R. W. Schafer, “Digital Processing of Speech Signals, Prentice Hall, 1978, Chapter 8, Section 8.1.1 and 8.3.2, is used to estimate the LPC parameters. This method provides a stable LPC filter. However, the quantization of the LSF parameters and transmission of the bits representing the LSF parameters may still result in an unstable quantized LPC filter.

A common method to correct unstable LSF parameters due to both quantization and transmission is to simply reorder LSF pairs that are out of order immediately following quantization at the encoder and reconstruction at the decoder (mapping of the received bits to the LSF parameters). It guarantees that the encoder and decoder will observe the identical quantized LSF parameters if a miss-ordering is due to the quantization, i.e. remain synchronized, and it will prevent the decoder from using an unstable LPC filter if a miss-ordering is due to the transmission, i.e. transmission errors. However, such methods are unable to distinguish, at the decoder, miss-ordering due to quantization and miss-ordering due to transmission errors. Therefore, there is a need for quantization techniques that enable the decoder to identify if miss-ordering is due to transmission errors hereby allowing the decoder to take corrective actions. More generally, there is a need for quantization techniques that facilitate some level of transmission error detection capability while maintaining a high intrinsic quality of the quantization. There is a related need for inverse quantization techniques that exploit the transmission error detection capability to conceal the detected transmission errors. Moreover there is a need to achieve the above with a low computational complexity.

BRIEF SUMMARY OF THE INVENTION

The present invention includes methods and systems that facilitate detection capability and concealment of transmission errors occurring during communication of quantization indices. Furthermore, the present invention addresses the necessity to maintain a manageable complexity and high quality of the quantization.

The present invention includes generalized quantization methods and systems for quantizing (typically at an encoder) a vector including element(s)/parameter(s), such that the bits/indices, or index, representing the quantized version of the vector provides a vector constrained to have given properties. Consequently, if the vector reconstructed during inverse quantization (typically at a decoder) from the received bits/indices, or index, does not possess the given properties, it is given that the bits/indices, or index, have been corrupted while being communicated between the quantizer and inverse quantizer (typically during transmission between an encoder and a decoder). The present invention also applies to composite quantizers including multiple sub-quantizers, and to sub-quantization methods and systems. The present invention also includes specific quantization methods and systems as applied to the quantization of LSF parameters related to an audio or speech signal.

The present invention also includes generalized inverse-quantization methods and systems that reconstruct a vector, including element(s)/parameter(s), from bits/indices, or index, originating from a quantization where the quantized version of the vector is constrained to have desired properties. The present invention also applies to composite inverse quantizers including multiple inverse sub-quantizers, and to inverse sub-quantization methods and systems. The present invention also includes specific inverse quantization methods and systems as applied to LSF parameters related to an audio or speech signal.

An aspect of the present invention includes a quantization method that purposely enforces the ordering property (that is, the desired property) of the quantized LSF during quantization. This requires the quantization scheme of known LSF quantizers to be revised since they may produce quantized parameters representative of out-of-order LSF parameters. The quantization method of the present invention produces bits representing a quantized LSF, where the quantized LSF are ordered. An encoder using the quantization method of the present invention transmits the ordered LSF parameters (represented by bits produced by the quantizer, for example) produced during quantization to a decoder.

Consequently, if, at the decoder, any LSF pair (that is, a pair of LSF parameters), reconstructed from the received bits (corresponding to the bits transmitted by the encoder), is out-of-order, it is given that a transmission error has corrupted one or more of the bits representing the LSF parameters. If such transmission errors are detected, appropriate concealment techniques are applied.

More generally, the method applies to any LSF quantizer structure that contains a set of quantizer output(s), which if selected, would result in a set of LSF parameters that are out-of-order. The method effectively exploits the property of being out-of-order by labeling such possible out-of-order outputs as illegal and preventing the quantizer from selecting them and actually outputting them. In other words, according to an embodiment of the present invention, the quantizer is constrained to produce in-order quantized parameters, that is, bits that represent a set of ordered LSF parameters.

The creation of an illegal or non-valid set of quantizer outputs provides an “illegal space” where if a transmission error transition a legal quantizer output into this illegal space the transmission error is detectable. Obviously, if the illegal space is defined arbitrarily, the performance of the quantizer will degrade in conditions without transmission errors, since effectively, the number of codevectors, and thereby, the resolution of the quantizer is reduced. However, for the LSF parameters a suitable illegal space exists. It is known that, first, the LSF parameters entering the quantizer at the encoder are ordered if the autocorrelation method is used to derive the LPC parameters, and secondly, eventually, the decoder will need a stable LPC filter equivalent to a set of ordered LSF parameters, anyway. Consequently, it appears that defining the illegal space as any quantizer output resulting in a set of quantized LSF parameters with one or more pairs out-of-order, has little, if any, impact on the performance of the quantizer in conditions without transmission errors.

In summary, the invention exploits that a quantizer has a set of outputs that are undesirable, defines an illegal space as this set of outputs, and prevents the quantizer from selecting and then outputting these outputs. The illegal space facilitates transmission error detection capability at the decoder. It may surprise that a quantizer has a set of outputs that are undesirable. However, as will become apparent from the detailed description, this is common and normal.

Above, it is suggested to define the illegal space as the joint set of any quantizer outputs that result in one or more LSF pairs being out-of-order. In certain applications it may be advantageous to define the illegal space as one or more LSF pairs of a subset of the LSF pairs being out-of-order, e.g. only the lower 4 LSF parameters from an 8thorder LPC are considered. Alternatively, the illegal space can be defined as the joint set of any LSF pair that is closer than a certain minimum distance. The minimum distance can be unique for each pair and related to the minimum distance appearing in the unquantized LSF parameters in a large amount of input data. The definition of the illegal space according to one or more pairs being out-of-order is equivalent to a definition of the illegal space according to any LSF pair being closer than a minimum distance, where the minimum distance is defined as zero. Consequently, if the minimum distance is defined to be greater than zero the illegal space is increased, and the error detection capability is improved. However, as will become apparent from the detailed description, this may increase the complexity.

Furthermore, it should be noted that the invention renders the common LSF parameter ordering procedure at the decoder unnecessary since any disordered LSF pairs flag the occurrence of transmission errors and employ concealment methods to replace the LSF parameters. However, if only a subset of the LSF pairs are considered then the remaining LSF pairs should be subject to an ordering procedure.

The present invention also addresses the need for low complexity solutions to implement the methods and systems mentioned above. For example, the present invention includes quantization techniques that produce a high quality quantization of an input vector while maintaining a low computational complexity. The application of the idea of defining an illegal space is investigated in the context of different Vector Quantization (VQ) structures. Furthermore, an efficient procedure to search a signed codebook with a Weighted Mean Squared Error (WMSE) criterion is derived. This method is based on an expansion of the WMSE term, omission of the invariant term, arranging the computations such that only the vector corresponding to one of the signs needs to be checked. Effectively, only half of the total number of codevectors in the signed codebook needs to be searched. This method can be utilized to further minimize complexity if the idea of creating an illegal space during quantization is adopted in the context of a signed codebook.

An embodiment of the present invention includes, in a composite quantizer including first and second sub-quantizers, a method of sub-quantizing a vector using the first sub-quantizer. The vector may form part of a signal, or may include signal parameters relating to the signal, for example. The method comprises transforming each sub-codevector of a set of sub-codevectors into a corresponding candidate codevector, thereby producing a set of candidate codevectors; determining legal candidate codevectors among the set of candidate codevectors; and determining a best sub-codevector corresponding to a legal candidate codevector among the legal candidate codevectors. The best sub-codevector corresponds to a quantized version of the vector. The step of determining legal candidate codevector includes: determining whether each candidate codevector belongs to an illegal space representing illegal vectors; and declaring as a legal candidate codevector each candidate codevector not belonging to the illegal space. The method further comprises outputting at least one of the best sub-codevector, and an index identifying the best sub-codevector.

Other embodiments of the present invention described below include further methods of sub-quantization, methods of inverse sub-quantization, computer program products for causing a computer to perform sub-quantization and inverse sub-quantization, and apparatuses for performing sub-quantization and inverse sub-quantization.

Each of the encoder and/or quantizer systems ofFIGS. 2,4A,4B,15and19perform one or more of the encoder and/or quantizer and/or sub-quantizer methods ofFIGS. 6A-6F,9,10,10A,13and17A-18D. Each of these encoder and/or quantizer systems and associated methods may be implemented in the computer system/environment ofFIG. 21.

Each of the decoder and/or inverse quantizer systems ofFIGS. 3,5A,5B,16and20perform one or more of the decoder and/or inverse quantizer and/or inverse sub-quantizer methods ofFIGS. 7,8,11,12,14and17A-18D. Each of these decoder and/or inverse quantizer systems and associated methods may be implemented in the computer system/environment ofFIG. 21.

DETAILED DESCRIPTION OF THE INVENTION

Table of Contents

Mathematical Symbol Definitions

1. Definition and Properties of LSF Parameters

2. Detection of Transmission Errors

a. Generalized Quantizer and Transmission of Codevector Indices

b. Generalized Treatment of Illegal Space

c. Illegal Space for LSF Parameters, and Quantizer Complexity

3. Example Wideband LSF System

4. WMSE Search of a Signed VQ

a. General Efficient WMSE Search of a Signed VQ

b. Efficient WMSE Search of a Signed VQ with Illegal Space

c. Index Mapping of Signed VQ

5. Example Narrowband LSF System

6. Hardware and Software Implementations

The invention of creating an illegal space during quantization and exploiting it for bit-error detection during decoding is applied to the quantization of the spectral envelope in form of the LSF parameters. However, it is anticipated that the idea can be applied to other parameters within speech and audio coding. The main task is to define a suitable sub-space as illegal. Ideally, this is achieved by exploiting a sub-space that the parameter(s) do not occupy. Such a space can be identified either through mathematical analysis, as it is the case for the ordering property of the LSF parameters, or through statistical analysis of the parameter(s), as it is the case for a minimum distance property between adjacent LSF parameters. Furthermore, there may be situations where a compromise between enabling bit-error detection and degrading error-free transmission performance justifies a larger illegal space in order to improve performance under transmission errors.

Mathematical Symbol Definitions

The following is a key defining some of the mathematical symbols used in the Sections below:

1. DEFINITION AND PROPERTIES OF LSF PARAMETERS

In Linear Predictive Coding the spectral envelope is modeled with an all-pole filter. The filter coefficients of the all-pole model are estimated using linear prediction analysis, and the predictor is referred as the short-term predictor. The prediction of the signal sample, s(n), is given by

s^⁡(n)=∑k=1K⁢αk·s⁡(n-k),(1)
where K is the prediction order and
α=(α1, α2, . . . αK)  (2)
contains the prediction coefficients. The prediction error is given by

In classical linear prediction analysis the energy of the prediction error,

is minimized. This minimization results in a linear system that can be solved for the optimal prediction coefficients.

The z-transform of Eq. 3 results in

where

is referred as the prediction error filter. The roots of the two polynomials
P(z)=A(z)−z−(K+1)·A(z−1),
Q(z)=A(z)+z−(K+1)·A(z−1)  (7)

determine the LSF parameters. The roots of P(z) and Q(z) are on the unit circle and occur in complex conjugate pairs for each of the two polynomials. For K even, P(z) has a root in z=1, and Q(z) has a root in z=−1. For K odd, P(z) has a root in z=±1. Furthermore, if A(z) is minimum phase, the roots of P(z) and Q(z) are interleaved, and if the roots of P(z) and Q(z) are interleaved,

is minimum phase and represents a stable synthesis filter

are the LSF parameters. The stability of the synthesis filter results in, and is guaranteed by the ordering of the LSF parameters
ω=[ω(1), ω(2), . . . , ω(K)],  (12)

with a lower constraint of ω(1)>0 due to the root at z=1, and an upper constraint of ω(K)<π due to the root at z=−1, i.e. a stable set of LSF parameters is given by
ω=[ω(1), ω(2), . . . , ω(K)], where
ω(1)>0, ω(2)>ω(1), . . . , ω(K−1)>ω(K−2), π>ω(K).  (13)

2. DETECTION OF TRANSMISSION ERRORS

The invention in general applies to any quantizer structure, predictive, multi-stage, composite, split, signed, etc., or any combination thereof. However, inherently, certain structures are more suitable for the definition of an illegal space. If a simple quantizer (with codevectors being fixed vectors from a codebook) is applied directly to the parameter(s), then any well designed codebook will be a sampling of the probability density function of the parameter(s), and therefore, no codevectors should populate a sub-space that can be regarded as negligible to the performance. However, for quantizers where the final codevector is a composite of multiple contributions, such as predictive, multi-stage, composite and split quantizers, there is no guarantee that even the best quantizers do not have composite codevectors in a sub-space that can be regarded as negligible. In some sense, the present invention makes use of such a sub-space, which is essentially a waste of bits, to enable some transmission error detection capability at the decoder. The term transmission is used as a generic term for common applications of speech and audio coding where information is communicated between an encoder and a decoder. This includes wire-line and wire-less communication as well as storage applications.

a. Generalized Quantizer and Transmission of Codevector Indices

The process of quantizing a set of K parameters in a vector
x=[x(1),x(2), . . . ,x(K)]  (14)
into a codevector
cIe=[cIe(1),cIe(2), . . . ,cIe(K)],  (15)

which is represented by an index, Ie, or equivalently, a series of sub-indices (for composite quantizers) or bits for transmission, is given by

c_Ie=Q⁡[x_]=arg⁢⁢minc_n∈C⁢{d⁡(x_,c_n)},(16)
where the operator, Q[·], denotes the quantization process, and the function d(x,cn) denotes a suitable error criterion. The codevector,cIe, is also referred as the quantized set of parameters,{circumflex over (x)}e. The process of quantization takes place at the encoder and produces an index, or a series of indices or bits, for transmission to the decoder. As used herein, a vector forms a part, or portion, of a signal. The signal may be an input signal applied to a quantization system. Alternatively, the signal may be an intermediate signal derived from such an input signal. In embodiments described herein, the signal, and thus vector, relates to a speech and/or audio signal. For example, the signal may be in input speech and/or audio signal. Alternatively, the signal may be a signal derived from the input speech and/or audio signal, such as a residual signal, LSF parameters, and so on. Thus, the vector may form part of a speech and/or audio signal or a residual signal (for example, include samples of the input or residual signal), or may include parameters derived from the speech and/or audio signal, such as LSF parameters.

It should be noted that the set of codevectors, the codebook of size N,
C={c1,c2, . . . ,cN},  (17)

in Eq. 16 is denoted the code of the quantizer. This may be a composite code, i.e. a product code of other codes. In that case the codevectors,cn, are a composite of multiple contributions, and the index, Ie, is a combination or set of multiple sub-indices, i.e.
Ie={Ie,1, Ie,2, . . . , Ie,M} and  (18)
cIe=F(cIe 1,cIe 2, . . .cIe M),  (19)
where M is the number of sub-codes, and
cIeεC1×C2× . . . ×CM.  (20)

An example of a composite quantizer is a mean-removed, predictive, two-stage, split VQ of the LSF parameters, where the composite codevectors,cn, are given by

whereωdenotes the mean of the LSF parameters,{tilde over (e)}denotes the predicted error, and the three codebook contributions of the first stage, second stage first split, and second stage second split are
cn1εC1,  (22)
cn2εC2,  (23)
cn3εC3,  (24)

respectively. The three sub-quantizers, denoted Q1[·], Q2[·], Q3[·], can be searched jointly or independently. Typically, the two stages are searched sequentially with the possibility of a joint search of a limited number of combined candidates. Furthermore, for many error criteria, the split into sub-vectors in the second stage provides for a joint optimal search, by searching the sub-vectors independently.

The transmission of the set of indices, Ie, to the decoder is given by
Id=T[Ie]  (25)

where Iddenotes the set of indices received by the decoder, and the operator, T[·], denotes the transmission. From the received set of indices, Id, the decoder generates the quantized parameters,{circumflex over (x)}d, according to

For error-free transmission, Terror-free[·], the received set of indices is identical to the transmitted set of indices:

and the quantized parameters at the decoder is identical to the quantized parameters at the encoder, given that the quantizer is memoryless, or the memory of the quantizer at the encoder and decoder is synchronized. For quantizers with memory, the memory at the encoder and decoder is typically synchronized except immediately following transmission errors.

If an error occurs in the process of transmission, the received set of indices is no longer identical to the transmitted set of indices:

Consequently, unwanted distortion or an error is introduced to the parameters. The objective is to minimize this distortion by facilitating detection of transmission errors causing objectionable errors, and subsequently conceal the error. Techniques known from the field of frame erasure concealment or packet loss concealment can be applied to conceal errors in parameters. This typically consists of maintaining the features of the signal from previous error-free segments. For speech, parameters such as spectral envelope, pitch period, periodicity, energy, etc. typically evolve fairly slowly in time, justifying some form of repetition in case a frame or packet of information is lost.

b. Generalized Treatment of Illegal Space

The detection of transmission errors is facilitated by the definition of an illegal space of the quantizer. The illegal space can be defined either as a set of illegal sets of indices,
Iill={Iill,1, Iill,2, . . . Iill,J},  (29)

where J is the number of illegal sets of indices, or as a sub-space of the input parameter space, where vectors,x, within the illegal sub-space, Xill, are defined as illegal, i.e.
xεXillxis illegal.  (30)

The definition given by Eq. 29 is a special case of the more general definition of the illegal space given by Eq. 30. The illegal space of Eq. 29 is a discrete finite size set while the illegal space of Eq. 30 can be both discrete and continuous, and therefore be of both finite and infinite size, and consequently provide greater flexibility. Furthermore, for certain composite quantizers, such as predictive quantizers, the space of the composite codevectors is dynamic due to a varying term. This complicates the definition of the illegal space according to Eq. 29 since the illegal space in the composite domain would also be dynamic, hereby excluding exploiting that the illegal space is often advantageously defined as a sub-space where the probability density function of the input vector has low probability. On the other hand, a definition according to Eq. 30 facilitates the definition of the illegal space in the same domain as the input vector, and the illegal space can easily be defined as a sub-space where the probability density function of the input vector has low probability. Consequently, the illegal space is advantageously defined by studying the probability density function of the parameters to which the quantizer is applied. This can be done mathematically as well as empirically.

During quantization the selected composite codevector,cIe, is restricted to reside in the legal space,
Xleg={x|x∉Xill}=Xill,  (31)

and the process of quantization, Eq. 16, is revised and given by

Hence, if the decoder receives a set of indices that represents a composite codevector that resides in the illegal space a transmission error has occurred,
{circumflex over (x)}dεXillTerror[·],  (33)

and error concealment is invoked.

In practice, some quantizers may result in an empty set of legal codevectors under certain circumstances, i.e.
Cleg={C∩Xill}=Ø.  (34)

In this particular case the quantizer at the encoder is unable to select a codevector that resides in the legal space, and consequently, the decoder will declare a transmission error and invoke error concealment regardless of the transmitted set of indices. The encoder will have to adopt a suitable strategy that to some extent depends on the parameters being quantized. One solution is to take advantage of the knowledge that the decoder will perform error concealment, and repeat the error concealment procedure at the encoder. It may seem odd to perform error concealment the encoder. However, it will ensure that the quantizers at the encoder and decoder will remain synchronized during error-free transmission. Alternatively, the quantizer at the encoder can be allowed to select and proceed with an illegal codevector accepting that synchronization with the quantizer at the decoder will be lost briefly when the error concealment is invoked at the decoder. Yet another solution is to reserve a specific code to communicate this condition to the decoder hereby enabling the encoder and decoder to take a pre-agreed action in synchrony. The most suitable approach to handle an empty set of legal codevectors during quantization will generally depend on the quantizer and the parameters being quantized. For some quantizers and parameters it may not be an issue. Alternatively, it may be possible to take the problem into account when the quantizer is designed.

The definition of a suitable illegal space will depend on the parameters being quantized, and to some extent the quantizer. For a composite quantizer an illegal space can be defined for, any sub-quantizer, a combination of sub-quantizers, or for the composite quantizer. This is illustrated by the example from above. According to Eq. 21 the final codevectors are given by
cn=ω+{tilde over (e)}+cn1+[cn2,cn3]  (35)

providing an approximation to the input vector,x. Based on the properties of the input parameters,x, a suitable illegal space can be defined for the composite quantizer, and the illegal space would be in the domain of
{circumflex over (x)}e=ω+{tilde over (e)}+cn1+[cn2,cn3].  (36)

However, an illegal space can also be defined for the sub-quantizer Q1in the domain of
{circumflex over (x)}e,C1=ω+{tilde over (e)}+cn1,  (37)

where{circumflex over (x)}e,C1can be considered a first approximation to the input parameter,x. Similarly, an illegal sub-space can be defined for the sub-quantizers Q2and Q3either independently or jointly with the sub-quantizer Q1. An illegal sub-space for the sub-vector equivalent to the first split of the second stage can be defined for the joint sub-quantizers Q1and Q2in the domain of
{circumflex over (x)}e,C1∪C2(1,2, . . . K1)=ω(1,2, . . . K1)+{tilde over (e)}(1,2, . . . K1)+cn1(1, 2, . . . K1)+cn2,  (38)

where K1is the dimension of the first split of the second stage, and{circumflex over (x)}e.C1∪C2can be considered a final approximation of the lower sub-vector of the input parameter,x. Furthermore, the illegal space can be defined in any sub-dimensional space independently of the dimension of the sub-quantizers, a combination of sub-quantizers, or the composite quantizer. Accordingly, an illegal space of the composite quantizer is defined in the domain of
{circumflex over (x)}e(k1, k2, . . . , kL)=ω(k1, k2, . . . , kL)+{tilde over (e)}(k1, k2, . . . , kL)+cn1(k1, k2, . . . , kL)+[cn2,cn3](k1, k2, . . . , kL),  (39)

FIG. 2is a block diagram of an example arrangement of encoder104. Encoder104includes a quantizer portion202followed by a multiplexer204. From input signal102different types of parameters P1. . . PJ may be derived, such as to represent the input signal, or at least a portion of the input signal, for quantization. For example, parameter P1may represent a speech pitch period, parameter P2may represent the spectral envelope, samples of the input signal, and so on. Parameter Pi may be in the form of an input vector with multiple elements, the vector having a dimension of N, e.g. the parameter P2above represents the spectral envelope which may be specified by a vector including the LSF parameters. Thus, the vector represents a portion of the input signal, and thus is a signal vector.

In a simplest arrangement, quantizer portion202includes a single quantizer. More generally, quantizer portion202includes multiple quantizers Q1. . . QJ(also referred to as quantizers2031. . .203J) for quantizing respective parameters P1. . . PJ. Each quantizer Qimay operate independent of the other quantizers. Alternatively, quantizers Q1. . . QJmay interact with each other, for example, by exchanging quantization signals with each other. Each quantizer2031. . .203Jmay be considered a composite quantizer including multiple sub-quantizers that together quantize a single input parameter. Also, each sub-quantizers may itself be a composite quantizer including multiple sub-quantizers.

Each quantizer Qiquantizes a respective input parameter Piderived from the input signal possibly in combination with quantization signals from other quantizers. This includes searching for and selecting a best or preferred candidate codevector to represent the respective input parameter Pi. In other words, each quantizer Qiquantizes the respective input parameter Piinto a preferred codevector. Various quantization techniques are described in detail below. Typically, quantizer Qioutputs the selected codevector, which corresponds to (for example, represents) a quantized version (or quantization) of the respective input parameter Pi, along with an index Iiidentifying the selected codevector. For a composite quantizer Qi, the index Iiwould be a set of indices, also referred as sub-indices. Thus, quantizer portion202provides indices, or sets of sub-indices, I1. . . IJto multiplexer204. Multiplexer204converts indices I1. . . IJinto a bit-stream106, representing the indices, or sets of sub-indices.

FIG. 3is a block diagram of an example arrangement of decoder112. Decoder112includes a demultiplexer302followed by an inverse quantizer portion304. Decoder112receives bit-stream110. Bit-stream110represents the indices, or sets of sub-indices, I1. . . IJtransmitted by encoder104. The indices may or may not have been corrupted during transmission through communication medium108. Demultiplexer302converts the received bits (corresponding to indices I1. . . IJ) into indices, or sets of sub-indices. Demultiplexer302provides indices to inverse quantizer portion304.

In a simplest arrangement, inverse quantizer portion304includes a single inverse quantizer. More generally, inverse quantizer portion304includes multiple inverse quantizers3061. . .306J. Each inverse quantizer306i, Qi−1, may operate independent of the other inverse quantizers. Alternatively, inverse quantizers3061. . .306Jmay interact with each other, for example, by exchanging inverse quantization signals with each other. Each inverse quantizer3061. . .306Jmay be considered an inverse composite quantizer including multiple inverse sub-quantizers that together inverse quantize a single quantized input parameter. Also, each sub-quantizer may itself be a composite inverse quantizer including multiple inverse sub-quantizers.

Each inverse quantizer306iperforms an inverse quantization based on the respective index Iifrom demultiplexer302. For a inverse composite quantizer306ithe respective index Iiis a set of sub-indices, for the sub-quantizers. Each inverse quantizer reconstructs respective parameter Pifrom index Iiand outputs the reconstructed parameter. Generally, a parameter Pimay be a vector with multiple elements as in the example of the spectral envelope mentioned above. Output signal114is reconstructed from the parameters representative of parameters Pi that were encoded at encoder104.

FIG. 4Ais a block diagram of an example arrangement400of a quantizer QiofFIG. 2. Quantizer400may also represent a sub-quantizer of a composite quantizer Qi. Quantizer400quantizes an input vector401representing one or more parameters Pi. For example, quantizer400quantizes and input vectorx, see Eq. 14, in accordance with Eq. 32. Note that the parameter Pimay have multiple elements. For example, the spectral envelope is typically specified by N prediction coefficients, and the parameter Picould then contain these N prediction coefficients arranged in the input vectorx. Furthermore, multiple parameters could be grouped together in a vector for joint quantization.

Quantizer400includes a codebook402for storing codebook vectors. Codebook402provides codebook vector(s)404to a codevector generator406. Codevector generator406generates candidate codevector(s)408(cn: see Eqs. 17 and 55, for example) based on, for example, as a function of, one or more of codebook vectors404, a predicted vector, and a mean vector, for example see Eq. 21. An error calculator409generates error terms411according to the error criterion (d(x,cn): see Eqs 74 and 86 for example) based on input parameter (Pi) in the input vector401,x, and candidate codevectors408,cn. Quantizer400includes a legal status tester412associated with one or more illegal space definitions or criteria420(Xill: see Eqs. 30, 46, 48, and 52, for example). Legal status tester412determines whether candidate codevectors408are legal, or alternatively, illegal, using the one or more illegal space definitions420. For example, legal status tester412compares each of the candidate codevectors408to an illegal space criterion420representing, for example, illegal vectors. Legal status tester412generates an indicator or signal422indicating whether each of the candidate codevectors408is legal, or alternatively, illegal. For example, if legal status tester412determines that a candidate codevector (408) belongs to the illegal space defined in illegal space definitions420, then legal status tester412generates an illegal indicator. Conversely, if legal status tester412determines that the candidate codevector408does not belong to the illegal space defined in illegal spaces420, then legal status tester generates a legal indicator corresponding to the candidate codevector.

Quantizer400includes a codevector selector424for selecting a best or preferred one (c1e: see Eq. 32, orc1e m: see Eq. 56, for example) of the candidate codevectors408based on error terms411corresponding to the candidate codevectors and the legal/illegal indicator422also corresponding to the candidate codevectors, see Eqs. 32 and 56. Codevector selector424outputs at least one of the best codevector426and an index428representative of the best codevector. Instead of outputting the best codevector, the codebook vector corresponding to the best codevector may be outputted.

In quantizer400, legal status tester412determines the legality of candidate codevectors408based on illegal space definitions420. Therefore, candidate codevectors408and illegal vectors defined by illegal space definitions420are said to be in the same “domain”. For example, when candidate codevectors408include LSF vectors, for example LSF parameters, illegal space definitions420represent illegal LSF vectors. For example, illegal space definitions420may define invalid ordering and/or spacing characteristics of LSF parameters, and so on. The illegal space is said to be in the domain of LSF parameters.

FIG. 4Bis a block diagram of another example quantizer430corresponding to quantizer QiofFIG. 2. Quantizer430may also represent a sub-quantizer. For example, quantizer400may quantize an input vectorx, see Eq. 14, in accordance with Eq. 56 or an input vectorr1,1, see Eq. 76, in accordance with Eq. 85.

Quantizer430is similar to quantizer400, except quantizer430includes a composite codevector generator406afor generating candidate composite codevector(s)408a, see Eqs. 19, 21, 55, and 57 for example. In quantizer430, legal status tester412determines whether candidate composite codevectors408aare legal or illegal based on illegal space definitions420, see Eqs. 36-39, 60, 63, and 82, for example. In this case, illegal space definitions420are in the same domain as candidate composite codevectors408a.

FIG. 4Cis a pictorial representation of a codevector “space”450encompassing both a legal space454and an illegal space456. Codevectors within legal space454are legal codevectors, whereas codevectors within illegal space456are illegal codevectors. Generally, illegal space definitions, for example, definitions420(and definitions514, discussed below), define the extent, or size, and boundary(s) of illegal space460.

FIG. 5Ais a block diagram of an example arrangement500of an inverse quantizer306iofFIG. 3, or an inverse sub-quantizer of an inverse composite quantizer306i. Inverse quantizer500receives an index502(also referred to as a received index502) generated from received bit-stream110. For example, index502corresponds to one of indices Ii. If306iis an inverse composite quantizer and500is an inverse sub-quantizer this would be a sub-index of the set of sub-indices. A codebook504for storing a set of codebook vectors generates a codebook vector506in response to index502, or one of the indices in the set of indices, the sub-index, corresponding to the inverse sub-quantizer in an inverse composite quantizer. A codevector generator508generates a “reconstructed” codevector510as a function of the codebook vector506in parallel to the quantizer, see Eqs. 21 and 55. Codevector generator508may be eliminated, whereby codevector510may be the codebook vector506itself.

Inverse quantizer500also includes a legal status tester512associated with one or more illegal space definitions514. Typically, but not always, illegal space definitions514match illegal space definitions420in quantizers400and430. Legal status tester512determines whether codevector510is legal, or alternatively illegal, based on illegal space definitions514. Legal status tester generates a legal/illegal indicator or signal516to indicate whether codevector510is legal/illegal.

Inverse quantizer500also includes a decisional logic module520responsive to codevector510and legal/illegal indicator516. If codevector510is declared legal, that is, indicator516indicates that codevector510is legal, then module520releases (that is, outputs) legal codevector510. It may also output the codebook vector. Alternatively, if legal status tester512declares codevector510illegal, that is, indicator516indicates that codevector510is illegal, then module520declares a transmission error. Module520may perform an error concealment technique responsive to the transmission error.

FIG. 5Bis a block diagram of another example arrangement530of inverse quantizer306iofFIG. 3. Inverse quantizer530is similar to inverse quantizer500, except inverse quantizer530includes a composite codevector generator508afor generating a composite codevector510a. Legal status tester512determines whether composite codevector510ais legal/illegal based on illegal space definitions514.

The codevector generators406,406a,508and508amentioned above derive candidate codevectors as a function of at least their corresponding codebook vectors404and506. More generally, each codevector generator is a complex structure, including one or more signal feedback arrangements and memory to “remember” signals that are fed-back, that derives a respective codevector as a function of numerous inputs, including the fed-back signals. For example, each codevector generator can derive each codevector, that is a current codevector, as a function of (1) a current and one or more past codebook vectors, and/or (2) one or more past best codevectors (in the case of generators406and406a) or one or more past reconstructed codevectors (in the case of generators508and508a). Examples of such codevector generators in a quantizer and an inverse quantizer are provided in FIGS.15/19and16/20, respectively, described below. Due to the complexity of the codevector generators, determining apriori whether each codevector generator will generate a legal codevector can be a non-trivial matter. Thus, comparing the codevectors to an illegal space after they are generated is a convenient way to eliminate illegal, and thus, undesired, codevectors.

FIG. 6Ais a flowchart of an example method600of quantizing a parameter using a quantizer associated with an illegal space (that is, with one or more illegal space definitions or criteria). For example, method600quantizes the input vector401representative of input parameter Pi. An initial step602includes establishing a first candidate codevector that is to be processed among a set of candidate codevectors to be processed. The first candidate codevector may already exist, that is, has already been generated, or may need to be generated. For example, codevector generator406(or406a) may generate a candidate codevector from one or more codebook vectors404.

A next step604includes determining a minimization term (also referred to equivalently as either a minimization value or an error term) corresponding to the codevector. Step604includes determining the error term as a function of the codevector and another vector, such as an input vector. The input vector may represent the input parameter(s) that is to be quantized by method600, or a derivative thereof. For example, error calculator409generates error term411as a function of codevector408and an input vector401representative of the input parameter Pior a derivative thereof.

A next step606includes evaluating a legal status of the codevector. Step606includes determining whether the candidate codevector corresponds to an illegal space representing illegal vectors. For example, in quantizer400, legal status tester412determines the legal status of candidate codevector408(or408a) based on one or more illegal space definitions420, and generates indicator422to indicate the legal/illegal status of the codevector.

Step606may include determining whether the candidate codevector belongs to the illegal space. This includes comparing the candidate codevector to the illegal space. Step606also includes declaring the candidate codevector legal when the candidate codevector does not correspond to the illegal space (for example, when the candidate codevector does not belong to the illegal space). Step606may also include declaring the candidate codevector illegal when it does correspond to the illegal space (for example, when it belongs to the illegal space). Step606may include outputting a legal/illegal indicator indicative of the legal status of the candidate codevector. In quantizer400, legal status tester412determines the legal status of candidate codevector408(or408a) based on one or more illegal space definitions420, and generates indicator422to indicate the legal/illegal status of the codevector.

The illegal space definition is represented by one or more criteria. For example, in the case where the candidate codevector is in a vector form, the illegal space is represented by an illegal vector criterion. In this case, step606includes determining whether the candidate codevector satisfies the illegal vector criterion. Also, in an arrangement of method600, the illegal space may represent an illegal vector criterion corresponding to only a portion of a candidate codevector. In this case, step606includes determining whether only the portion of the candidate codevector, corresponding to the illegal vector criterion, satisfies the illegal vector criterion.

A next step608includes determining whether (1) the error term (calculated in step604) corresponding to the candidate codevector is better than a current best error term, and (2) the candidate codevector is legal (as indicated by step606). For example, codevector selector424determines whether error term411corresponding to codevector408is better than the current best error term.

If both of these conditions are satisfied, that is, the error term is better than the current best error term and the candidate codevector corresponding to the error term is legal, then flow proceeds to a next step610. Step610includes updating the current best error term with the error term calculated in step604, and declaring the candidate codevector a current best candidate codevector. Flow proceeds from step610to a next step612. Codevector selector424performs these steps.

If at step608, either of conditions (1) or (2) is not true, then flow bypasses step610and proceeds directly to step612.

Step612includes determining whether a last one of the set of candidate codevectors has been processed. If the last candidate codevector has been processed, then the method is done. On the other hand, if more candidate codevectors need to be processed, then flow proceeds to a next step614. At step614, a next one of the candidate codevectors in the set of candidate codevectors is chosen, and steps604-612are repeated for the next candidate codevector.

Processing the set of candidate codevectors according to method600results in selecting a legal candidate codevector corresponding to a best error term from among the set of legal candidate codevectors. For example, codevector selector424selects the best candidate codevector. This is considered to be the best legal candidate codevector among the set of candidate codevectors. The best legal candidate codevector corresponds to a quantized version of the parameter (or vector). In an embodiment, the best legal candidate codevector represents a quantized version of the parameter (or vector). In other words, method600quantizes the parameter (or vector) into the best legal candidate codevector. In another embodiment, the best legal candidate codevector may be transformed into a quantized version of the parameter (or vector), for example, by combining the best legal candidate codevector with another parameter (or vector). Thus, in either embodiment, the best legal candidate codevector “corresponds to” a quantization or quantized version of the parameter.

The method also includes outputting at least one of the best legal candidate codevector, and an index identifying the best legal candidate codevector. For example, codevector selector424outputs index428and best codevector426.

FIG. 6Bis a flowchart of another method620of quantizing a parameter using a quantizer associated with an illegal space. Methods620and600include many of the same steps. For convenience, such steps are not re-described in the context of method620. Method620is similar to method600, except method620reverses the order of steps604and606.

Method620includes evaluating the legal status (step606) of the candidate codevector before calculating the error term (step604) corresponding to the candidate codevector. Method620also adds a step606abetween legality-checking step606and error term calculating step604. Together, steps606and606ainclude determining whether the candidate codevector is legal.

If the candidate codevector is legal, then flow proceeds to step604, where the corresponding error term is calculated.

Thus, method620determines error terms only for legal candidate codevectors, thereby minimizing computational complexity in the case where some of the candidate codevectors may be illegal. Step608ain method620need not determine the legality of a candidate codevector (as is done in step608of method600) because prior steps606and606amake this determination before flow proceeds to step608a.

A summary method corresponding to methods600and620includes:

(a) determining legal candidate codevectors among a set of candidate codevectors;

(b) determining a best legal candidate codevector among the legal candidate codevectors; and

(c) outputting at least one ofthe best legal candidate codevector, andan index identifying the best legal candidate codevector.

FIG. 6Cis a flowchart of another example method650of quantizing a parameter using a quantizer associated with an illegal space. Method650is similar to method620, except that method620reverses the order in which steps604and606are executed. Method620includes:

at step604, determining an error term corresponding to a candidate codevector of a set of candidate codevectors, the error term being a function of another vector, such as the input vector, and the corresponding candidate codevector;

at steps608a,606and606a, taken together, determining whether the candidate codevector is legal when the error term is better than a current best error term;

at step610, updating the current best error term with the error term corresponding to the candidate codevector, when the error term is better than the current best error term and the codevector is legal;

repeating steps604,608a,606,606aand610for all of the candidate codevectors in the set of candidate codevectors; and thereafter

outputting at least one ofa best legal candidate codevector corresponding to the best current error term, andan index identifying the best legal candidate codevector.

FIG. 6Dis a flowchart of an example method660of quantizing a parameter using a quantizer having an illegal space, and having protection against an absence of a legal candidate codevector. The codevector loop of method660includes a first branch to identify a best legal candidate codevector among a set of candidate codevectors based on their corresponding error terms, if it exists. This branch includes steps608b,606and606a, and610.

Method660includes a second branch, depicted in parallel with the first branch, to identify a candidate codevector among the set of candidate codevectors corresponding to a best error term, independent of whether the codevector is legal. This branch includes steps662and664. The second branch updates a current best global candidate codevector and a corresponding current best global error term (see step664). Step662determines whether the error term calculated in step604is better than a current best error term for the current best global codevector, independent of whether the corresponding candidate codevector is legal.

When the first and second branches have processed, in parallel, all of the candidate codevectors in the set of candidate codevectors, flow proceeds to a step668. Step668includes determining whether all of the candidate codevectors are illegal. If all of the candidate codevectors are illegal, then a next step670includes releasing/outputting the best global (illegal) candidate codevector (as determined by the second branch) and/or an index identifying the best global candidate codevector.

On the other hand, if all of the candidate codevectors are not illegal (that is, one or more of the candidate codevectors are legal), then flow proceeds from step668to a next step672. Step672includes releasing the best legal candidate codevector among the set of candidate codevectors (as determined by the first branch) and/or an index identifying the best legal candidate codevector.

The loop including the first branch of method660inFIG. 6Dand step604,610, and612is similar to the loop depicted in method650, discussed above in connection withFIG. 6C. However, the first branch in method660may be rearranged to be more similar to the loops of methods600and620discussed above in connection withFIGS. 6A and 6B, as would be apparent to one of ordinary skill in the relevant art(s) after having read the description herein.

FIG. 6Eis a flowchart of another example method680of quantizing a parameter using a quantizer associated with an illegal space, and having protection against an absence of legal codevectors. Method680is similar to method600discussed above in connection withFIG. 6A. However, method680adds step668to determine whether all of the candidate codevectors are illegal. If all of the candidate codevectors are illegal, then flow proceeds to a next step682. Step682includes applying a concealment technique. Otherwise, the method terminates without the need for concealment.

Each method described above, and further methods described below, includes a processing loop, including multiple steps, for processing one candidate codevector or sub-codevector at a time. The loop is repeated for each codevector or sub-codevector in a set of codevectors. An alternative arrangement for these methods includes processing a plurality of codevectors or sub-codevectors while eliminating such processing loops.

For example,FIG. 6Fis a block diagram of an example summary method690, corresponding to methods600and630, that eliminates such processing loops. In method690, a first step692includes determining legal candidate codevectors among a set of candidate codevectors. This is equivalent to performing steps606and606arepeatedly. This is a form of block-processing the set of codevectors to determine their legal statuses.

A next step694includes deriving a separate error term corresponding to each legal candidate codevector, each error term being a function of the input vector and the corresponding legal candidate codevector. This is equivalent to performing step604repeatedly. A next step696includes determining a best legal candidate codevector among the legal candidate codevectors based on the error terms. A next step includes outputting at least one of the best legal candidate codevector and an index identifying the best legal candidate codevector. Other alternative method arrangements include combining loops with block-processing steps.

FIG. 7is a flowchart of an example method700, performed by a decoder using an illegal space. Method700may be performed by an inverse quantizer residing in the decoder. Method700begins when an index is received at the decoder. A first step702includes reconstructing a codevector from the received index. For example, codevector generator508(or508a) generates reconstructed codevector510(or510a) from received index502.

Next steps704and706include evaluating a legal status of the reconstructed codevector. For example, steps704and706include determining whether the reconstructed codevector is legal or illegal, using the illegal space. These steps are similar to steps606and608ain method680, for example. For example, legal status tester512determines whether reconstructed codevector510(or510a) is legal using one or more illegal space definitions514.

If the reconstructed codevector is illegal, then a next step708declares a transmission error. For example, decisional logic block520performs this step. Otherwise, the method is done.

FIG. 8is a flowchart of an example method800of inverse quantization performed by an inverse quantizer. Method800includes steps702-706similar to method700. At step706, if the reconstructed codevector is illegal, that is, the reconstructed codevector corresponds to the illegal space, then flow proceeds to step708. Step708includes declaring a transmission error. A next step710includes invoking an error concealment technique in response to the transmission error.

Returning to step706, if the reconstructed codevector is not illegal (that is, it is legal), then flow proceeds to a next step712. Step712includes releasing/outputting the legal reconstructed codevector.

FIG. 9is a flowchart of an example method900of quantization performed by a composite quantizer including a plurality of sub-quantizers. Method900applies illegal spaces to selected ones of the sub-quantizers of the composite quantizer. Initially, a step902selects a first one of the plurality of sub-quantizers. A next step904includes determining whether an illegal space is associated with the selected sub-quantizer. If an illegal space is associated with the selected sub-quantizer, then a next step906includes sub-quantization with the illegal space, using the selected sub-quantizer.

On the other hand, if an illegal space is not associated with the selected sub-quantizer, then a next step908includes sub-quantization without an illegal space, using the selected sub-quantizer.

Both steps906and908lead to a next step910. Step910includes releasing/outputting at least one of (1) a best sub-codevector, and (2) a sub-index identifying the best sub-codevector as established at either of steps906and908.

A next step912includes determining whether a last one of the plurality of sub-quantizers has been selected (and subsequently processed). If the last sub-quantizer has been selected, the method is done. Otherwise, a next step914includes selecting the next sub-quantizer of the plurality of sub-quantizers.

FIG. 10is a flowchart of an example method1000of sub-quantization using an illegal space, as performed by a sub-quantizer. Method1000quantizes an input vector. For example, quantizer1000may quantize an input vectorx, see Eq. 14, in accordance with Eq. 56 or an input vectorr1,1, see Eq. 76, in accordance with Eq. 85. Method1000expands on step906of method900. The general form of method1000is similar to that of method650, discussed above in connection withFIG. 6C. Method steps in method1000are identified by reference numerals increased by 400 over the reference numerals identifying corresponding method steps inFIG. 6C. For example, step604inFIG. 6Ccorresponds to step1004inFIG. 10.

An initial step1002includes establishing a first one of a plurality or set of sub-codevectors that needs to be processed.

A next step1004includes determining an error term corresponding to the sub-codevector. For example, when sub-quantization is being performed in accordance with Eq. 85, step1004determines the error term in accordance with Eq. 86.

A next step1008includes determining whether the error term is better than a current best error term. If the error term is better than the current best error term, then a next step1020includes transforming the sub-codevector into a corresponding candidate codevector residing in the same domain as the illegal space associated with the sub-quantizer. Step1020may include combining the sub-codevector with a transformation vector to produce the candidate codevector. For example, when sub-quantization is being performed in accordance with Eq. 85, step1004includes transforming sub-codevectorcn2into candidate codevectorcn,2in accordance with Eq. 83, or more generally, when sub-quantization is being performed according to Eq. 56, step1004includes transforming sub-codevectorcnminto candidate codevectorcn,min accordance with Eq. 55.

Next steps1006and1006atogether include determining whether the candidate codevector is legal. For example, when sub-quantization is being performed in accordance with Eq. 85, step1006includes determining whether codevectorcn,2is legal using the illegal space defined by Eq. 87.

If the candidate codevector is legal, then next step1010includes updating the current best error term with the error term calculated in step1004. Flow proceeds to step1012.

Returning again to step1008, if the error term is not better than the current best error term, then flow proceeds directly to step1012.

Steps1004,1008,1020,1006,1006a, and1010are repeated for all of the candidate sub-codevectors. Method1000identifies a best one of the sub-codevectors corresponding to a legal candidate codevector, based on the error terms. Method1000includes outputting at least one of the best sub-codevectors and an index identifying the best sub-codevector. The best sub-codevectors is a quantized version (or more specifically, a sub-quantized version) of the input vector.

It is to be understood that the form of method1000may be rearranged to be more similar to the forms of methods600and620discussed above in connection withFIGS. 6A and 6B, respectively.

FIG. 10Ais a flowchart of another example method1030of sub-quantizing an input vector with an illegal space performed by a sub-quantizer. A first step1034includes transforming each sub-codevector of a set of sub-codevectors into a corresponding transformed candidate codevector residing in the same domain as the illegal space associated with the sub-quantizer. Step1034may include combining each sub-codevector with a transformation vector. Step1034produces a set of transformed candidate codevectors.

A next step1036includes determining legal transformed candidate codevectors among the set of transformed candidate codevectors.

A next step1038includes deriving a separate error term corresponding to each legal transformed candidate codevector, and thus, to each sub-codevector. Each error term is a function of the input vector and the corresponding sub-codevector.

A next step1040includes determining a best candidate sub-codevector among the sub-codevectors that correspond to legal transformed codevectors, based on the error terms. For example, step1040includes determining the best candidate sub-codevector corresponding to a legal transformed codevector and a best error term among the error-terms corresponding to legal transformed codevectors. For example, assume there are a total of N candidate sub-codevectors, but only M of the sub-codevectors correspond to legal transformed candidate codevectors after step1036, where M≦N. Step1040may include determining the best sub-codevector among the M sub-codevectors as that sub-codevector corresponding to the best (for example, lowest) error term among the M sub-codevectors. Other variations of this step are envisioned in the present invention.

A next step1042includes outputting at least one of the best sub-codevectors and an index identifying the best sub-codevector.

FIG. 11is a flowchart of an example method1100of inverse composite quantization including multiple inverse sub-quantizers. At least one of the inverse sub-quantizers is associated with an illegal space, and thus performs inverse sub-quantization with an illegal space. Method1100is similar to method900, except method1100applies to inverse composite quantization instead of composite quantization.

An initial step1102includes selecting a first inverse sub-quantizer from the multiple inverse sub-quantizers of the composite inverse quantizer. A next step1104includes determining whether an illegal space is specified for the selected inverse sub-quantizer. If an illegal space is specified for, and thus, associated with, the selected inverse sub-quantizer, then a next step1106includes inverse sub-quantization with the illegal space, using the selected inverse sub-quantizer.

A next step1108includes determining whether a transmission error was detected in step1106. If a transmission error was detected, then a next step1110includes applying an error concealment technique.

If step1108determines that a transmission error was not detected, then a next step1112includes outputting/releasing a reconstructed sub-codevector produced by the inverse sub-quantization in step1106.

Returning again to step1104, if an illegal space is not associated with the selected inverse sub-quantizer, then flow proceeds from step1104to a step1114. Step1114includes sub-quantization without an illegal space. Flow proceeds from step1114to step1112.

Flow proceeds from step1112to a step1116. Step1116includes determining whether any of the inverse sub-quantizers in the composite inverse quantizer have not yet been selected. If all of the inverse sub-quantizers have been selected (and subsequently processed), then method1100ends. Otherwise, flow proceeds to a step1118. Step1118includes selecting a next one of the inverse sub-quantizers.

FIG. 12is a flowchart of an example method1200of inverse sub-quantization with an illegal space, performed by an inverse sub-quantizer. Method1200expands on step1106of method1100.

A first step1202includes reconstructing a sub-codevector from a received sub-index.

A next step1204includes transforming the reconstructed sub-codevector into a transformed codevector. This step may include combining the reconstructed sub-codevector with one or more other vectors (for example, adding/subtracting other vectors to the reconstructed sub-codevector).

Next steps1206and1208together include determining whether the transformed codevector is illegal, or alternatively, legal, based on an illegal space that is defined in the domain of the transformed codevector. If the transformed codevector is illegal, then a next step1210includes declaring a transmission error.

c. Illegal Space for LSF Parameters, and Quantizer Complexity

For the LSF parameters a natural illegal space exists. It is a common requirement that the synthesis filter given by Eq. 9 represents a stable filter. Accordingly, it is a requirement that the LSF parameters are ordered, and thus, fulfil Eq. 13. In popular quantization of the input set of LSF parameters,
ω=[ω(1), ω(2), . . . , ω(K)],  (40)

it is common to simply re-order the LSF parameters if a decoded set of LSF parameters,

is disordered. Furthermore, often a minimum spacing is imposed on the LSF parameters and reflects the typical minimum spacing in the unquantized LSF parameters,ω. The re-ordering and/or spacing results in the final decoded set of LSF parameters denoted
{circumflex over (ω)}df=[{circumflex over (ω)}df(1), {circumflex over (ω)}df(2), . . . , {circumflex over (ω)}df(K)].  (42)

In order to maintain the encoder and decoder synchronous such an ordering and/or spacing is also performed at the encoder, i.e. after quantization at the encoder. The LSF parameters at the encoder after quantization are denoted
{circumflex over (ω)}e=[{circumflex over (ω)}e(1), {circumflex over (ω)}e(2), . . . , {circumflex over (ω)}e(K)].  (43)
and are given by
{circumflex over (ω)}e=Q−1[Ie=Q[ω]].(44)

The encoder-decoder synchronized operation of re-ordering and/or spacing is required since a complex quantizer structure does not necessarily result in an ordered set of LSF parameters even if the unquantized set of LSF parameters are ordered and properly spaced.

Due to the natural ordering and spacing of the LSF parameters a suitable illegal space, Ωill, can be defined as
Ωill={ω|ω(1)<Δ(1)vω(2)−ω(1)<Δ(2)v . . . vω(K)−ω(K−1)<Δ(k)vπ−ω(K)<Δ(K+1)},  (46)
where
Δ=(Δ(1), Δ(2), . . . , Δ(K+1))  (47)

specifies the minimum spacing. In some cases it is advantageous to define the illegal space of the LSF parameters according to the ordering and spacing property of only a subset of the pairs, i.e.
Ωill={ω|ω(k1)−ω(k1−1)<Δ(k1)vω(k2)−ω(k2−1)<Δ(k2)v . . . vω(kL)−ω(kL−1)<Δ(kL)}.  (48)
where
1≦k1≠k2≠ . . . ≠kL≦K+1,  (49)
ω(0)=0,  (50)
and
ω(K+1)=π.  (51)

The number of pairs that are subject to the minimum spacing property in the definition of the illegal space in Eq. 48 is given by L. Evidently, the probability of detecting transmission errors will decrease when fewer pairs are subject to the minimum spacing property. However, there may be quantizers for which the resolution is insufficient to provide a non-empty set of legal codevectors with sufficiently high probability due to the inclusion of certain pairs. In such cases it may be advantageous to include only a subset of the pairs in the definition of the illegal space. Furthermore, the computational complexity is proportional with the number of pairs in the definition of the illegal space, see Eq. 61, Eq. 62, and Eq. 64. Consequently, it is also a tradeoff between increasing the error-detection capability and limiting the computational complexity. Furthermore, it is worth noting that in some cases certain pairs are more prone to violate the minimum spacing property due to transmission errors than other pairs.

Mathematical considerations suggest a minimum spacing of zero simplifying the definition of the illegal space of Eq. 48 to
Ωill={ω|ω(k1)−ω(k1−1)<0vω(k2)−ω(k2−1)<0v . . . vω(kL)−ω(kL−1)<0}.  (52)

However, in practice the minimum spacing of the input LSF parameters is typically greater than zero, and the expansion of the illegal space given by Eq. 48 may prove advantageous, increasing the probability of detecting transmission errors. The proper minimum spacing,Δ, defining the illegal space, can be determined based on an empirical analysis of the minimum spacing of the input LSF parameters in conjunction with a compromise between increasing the probability of detecting transmission errors and degrading the performance for error-free transmission. Generally, a minimum spacing of zero should have little, if any, impact to the performance of the quantizer under error-free conditions. As the minimum spacing is increased towards the empirical minimum spacing and beyond, some degradation to the performance under error-free conditions should be expected. This will, to some extent, depend on the quantizer.

An LSF quantizer according to Eq. 32 with an illegal space defined according to Eq. 48 will enable the detection of transmission errors that map codevectors into the illegal space. In practice the search of the quantizer in Eq. 32 will typically be conducted according to

Consequently, for a candidate codevector it is necessary to verify if it belongs to the illegal space in addition to evaluating the error criterion. This process will increase the computational complexity of the quantization. In order to develop low complexity methods the quantization process of Eq. 53 is analyzed in detail. The quantizer of Eq. 53, Q[·], represents any composite quantizer, and according to Eq. 19, the composite codevectors,cn, are of the form
cn=F(cn1,cn2, . . .cnM).  (54)

At any given sub-quantization, Qm[·]=Q1[·], Q2[·], . . . QM[·], of the composite quantizer, Q[·], the composite codevector as a function of the sub-quantization, Qm[·], can be expressed as
cn,m=z+cnm,  (55)

wherecnmεCmandzaccounts for other components of the composite codevector. This could include components such as a mean component, and/or a predicted component, and/or component(s) of sub-quantizer(s) of previous stage(s). Utilizing the expressions of Eq. 55 and Eq. 53, the process of performing the sub-quantization, Qm[·], while applying the illegal space to the composite codevector,cn,m, i.e. in the domain of the LSF parameters, can be expressed as

and the intermediate composite codevector after the sub-quantization, Qm[·], is given by
cIe,m=z+cIe m.  (57)

Eq. 56 demonstrates how the illegal space in the domain of the composite codevector can be applied to any sub-quantization, Qm[·] in the quantization. The decoder can then detect transmission errors based on the inverse sub-quantization, Qm−1[·], according to
(z+cId m)εΩillTerror[·].  (58)

In principle, an illegal space can be applied to an arbitrary number of sub-quantizations enabling detection of transmission errors at the decoder based on verification of the intermediate composite codevector after multiple inverse sub-quantizations.

It should be noted that

i.e. the final composite codevector is equivalent to the intermediate composite codevector after the Mthsub-quantization, QM[·].

According to Eq. 56 the process of verifying if a candidate sub-codevector,cnm, of sub-quantization, Qm[·], results in an intermediate composite codevector,cn,m, that does not belong to the illegal space, Ωill, of Eq. 48, involves evaluating the following logical expression:

where Π denotes logical “and” between the elements. Including the calculation of the necessary values ofcn,m, it requires

floating point operations to evaluate the verification for all sub-codevectors of a sub-quantizer, Qm[·], of size Nm. However, if the illegal space is defined according to Eq. 52, minimum spacing of zero, the verification of the candidate sub-codevectors requires

floating point operations for a sub-quantizer, Qm[·]. Consequently, using the minimum spacing of zero will require less complexity. With the use of Eq. 55, the verification process of Eq. 60 can be expanded as follows

In Eq. 63 the L terms of (z(kl)−z(kl−1)) can be pre-calculated outside the search loop, and the L terms of (cnm(kl)−cnm(kl−1)−Δ(kl)) for each sub-codevector,cnmnm=1, 2, . . .Nm, are constant and can be pre-stored. This approach requires

floating point operations regardless of a zero or non-zero minimum spacing. In summary, the latter approach requires the least computational complexity. However, it requires an additional memory space for storage of
Mps,m=Nm·L(65)

constant numbers, typically in Read Only Memory (ROM).

For simplicity, the complexity estimates of Eq. 61, Eq. 62, and Eq. 64 assume that L adjacent pairs are checked. If non-neighboring pairs are checked the expressions will change but the relations between the methods in terms of complexity will remain unchanged.

The optimal compromise between computational complexity and memory usage typically depends on the device on which the invention is implemented.

FIG. 13is a flowchart of an example method1300of quantization with an illegal space, performed by a sub-quantizer for sub-quantizing LSF parameters (that is, performed by an LSF sub-quantizer). For example, method1300quantizes an input vectorr1,1, Eq. 76, in accordance with Eq. 85. Method1300is similar in form to method1000.

An initial step1301includes forming a current approximation of LSF parameters, for example in accordance with Eq. 84 or Eq. 134. The remaining steps of method1300are identified by reference numbers increased by 300 over the reference numbers that identify corresponding method steps in method1000. Step1306of method1300corresponds to both steps1006and1006ain method1000.

Step1320of method1300includes transforming the sub-codevector chosen for processing at step1302(or step1314) to a domain of LSF parameters. As an example, step1320includes calculating a candidate approximation of LSF parameters as a sum of the sub-codevector and the current approximation of LSF parameters (from step1301). For example, in accordance with Eq. 83, Eq. 133, or in general Eq. 55.

Next step1306includes determining whether the candidate approximation of LSF parameters is legal, for example, using the illegal space defined by Eq. 87, or Eq. 140. This includes determining whether the LSF parameters in the candidate approximation correspond to (for example, belong to) the illegal space that is in the domain of the LSF parameters.

FIG. 14is a flowchart of an example method1400of inverse sub-quantization with an illegal space, performed by an inverse LSF sub-quantizer. Method1400is similar to method1200. The steps of method1400are identified by reference numerals increased by 200 over the reference numerals identifying corresponding steps of method1200.

A first step1402includes reconstructing a sub-codevector from a received sub-index. A next step1404includes reconstructing a new approximation of LSF parameters as a sum of the reconstructed sub-codevector and a current approximation of LSF parameters.

A next step1406(corresponding to steps1206and1208together, in method1200) includes determining whether the reconstructed new approximation of LSF parameters is illegal based on the illegal space that is in the domain of LSF parameters.

If the new approximation of LSF parameters is illegal, then a next step1410includes declaring a transmission error.

3. EXAMPLE WIDEBAND LSF SYSTEM

A specific application of the invention to the LSF VQ in a wideband LPC system is described in detail.

FIG. 15is a block diagram of an example LSF quantizer1500at an encoder. Quantizer1500includes the following functional blocks: a plurality of signal combiners1502a-1502d, which may be adders or subtractors; an 8th order MA predictor1504coupled between combiners1502band1502d; a regular 8-dimentional MSE sub-quantizer1506coupled between combiners1502band1502c; a vector splitter1508following combiner1502c; a 3-dimensional WMSE sub-quantizer with illegal space1510; and a regular 5-dimensional WMSE sub-quantizer1512both following vector splitter1508; a sub-vector appender1514coupled to outputs of both sub-quantizers1510and1512, and having an output coupled to combiner1502d.

Quantizer1500(also referred to as LSF VQ1500) is a mean-removed, predictive VQ with a two-stage quantization with a split in the second stage. Hence, it has three sub-quatizers (1506,1510and1512). The LSF VQ1500receives an 8thdimensional input LSF vector,
ω=[ω(1), ω(2), . . . , ω(8)],  (66)
and produces as output the quantized LSF vector
{circumflex over (ω)}e=[{circumflex over (ω)}e(1), {circumflex over (ω)}e(2), . . . , {circumflex over (ω)}e(8)],  (67)

and the three indices, Ie,1, Ie,2, and, Ie,3, of the three sub-quantizers Q1[·], Q2[·], and Q3[·], respectively (that is, sub-quantizers1506,1510and1512, respectively). The sizes of the three sub-quantizers1506,1510and1512are N1=128, N2=32, and N3=32, and require a total of 17 bits. The respective codebooks associated with sub-quantizers1506,1510and1512, are denoted C1, C2, and C3.

The mean LSF vector is constant and is denoted
ω=[ω(1),ω(2), . . . ,ω(8)].  (68)

It is subtracted from the input LSF vector using subtractor1502ato form the mean-removed LSF vector
ee=ω−ω.  (69)

An 8thorder MA prediction, produced by predictor1504, given by

is subtracted from the mean-removed LSF vector, by subtractor1502b, to form the residual vector

The residual vector,r, is subject to quantization according to
{circumflex over (r)}e=Q[r].(72)

In Eq. 70 the MA prediction coefficients are denoted ak,i, and the index i indicates the previous ithquantization. Consequently, {circumflex over (r)}e,i(k) is the kthelement of the quantized residual vector at the previous ithquantization. The quantization of the residual vector is performed in two stages with a split in the second stage.

The first stage sub-quantization, performed by sub-quantizer1506, is performed according to

where

is the Mean Squared Error (MSE) criterion. The residual (output by subtractor1502c) after the first stage quantization is given by

This residual vector is split, by splitter1508, into two sub-vectors
r1,1=[r1(1),r1(2),r1(3)]  (76)
and
r1,2=[r1(4),r1(5),r1(6),r1(7),r1(8)].  (77)

The two sub-vectors are quantized separately, by respective sub-quantizers1510and1512, according to
cIe 2=Q2[r1,1]  (78)
and
cIe 3=Q3[r1,2]  (79)

The final composite codevector (not shown inFIG. 15) is given by

The elements of the final composite codevector are

The sub-quantization, Q2[·], of the lower split sub-vectorr1,1(that is, the sub-quantization performed by sub-quantizer1510) is subject to an illegal space in order to enable detection of transmission errors at the decoder. The illegal space is defined in the domain of the LSF parameters as
Ωill={ω|ω(1)<0vω(2)−ω(1)<0vω(3)−ω(2)<0}  (82)

affecting only the lower part of the final composite candidate codevectors,

The illegal space defined by Eq. 82 comprises all LSF vectors for which any of the three lower pairs are out order. According to Eq. 56 the quantization, Q2[·], is expressed as

is the Weighted Mean Squared Error (WMSE) criterion. The weighting functionwis typically introduced to obtain an error criterion that correlates better with the perception of the human auditory system than the MSE criterion. For the quantization of the spectral envelope, such as represented by the LSFs, this typically involves weighting errors in high-energy areas of the spectral envelope stronger than areas of low energy. Such a weighting function can advantageously be derived from the input LSF vector, or corresponding prediction coefficient vector, and thus changes from one input vector to the next. In Eq. 85 it should be noted that the error criterion is in the domain of the sub-codevector, and not in the domain of the composite codevector as in Eq. 56. Combination of Eq. 60 and Eq. 82 leads to the following expression for verification that a given sub-codevector,cn2, does not result in a final composite candidate codevector,cn,2, that belongs to the illegal space, Ωill:

This expression is evaluated along with the WMSE in order to select the sub-codevector,cIe 2, that minimizes the WMSE and provides a final composite codevector that does not belong to the illegal space. If no candidate sub-codevector can provide a final composite candidate vector that does not belong to the illegal space, then, in an arrangement of quantizer1500, the optimal sub-codevector is selected disregarding (that is, independent of) the illegal space.

The sub-quantization, Q3[·], of the upper split sub-vector,r1,2(that is, the sub-quantization performed by sub-quantizer1512), is given by

The memory of the MA predictor1504is updated with
{circumflex over (r)}e=cIe 1+[cIe 2,cIe 3],  (89)

and a regular ordering and spacing procedure is applied to the final composite codevector,{circumflex over (ω)}e, given by Eq. 80 in order to properly order, in particular the upper part, and space the LSF parameters.

The LSF sub-quantization techniques discussed above in connection withFIG. 15can be presented in the context of a generalized sub-quantizer for sub-quantizing an input vector, for example.FIG. 15Ais a block diagram of an example generalized sub-quantizer1548. Sub-quantizer1548has a general form similar to that of quantizer430discussed in connection withFIG. 4A, except a sub-codevector generator1552and a transformation logic module1556ain sub-quantizer1548replace codebook402and composite codevector generator406aof quantizer430, respectively.

Sub-codevector generator1552generates a candidate sub-codevector sub-CV1. Generator1552may generate the candidate sub-codevector based on one or more codebook vectors stored in a codebook. Alternatively, the sub-codevector may be a codebook vector, similar to the arrangement ofFIG. 4B.

Transformation logic module1556atransforms candidate sub-codevector sub-CV1into a corresponding candidate codevector CV1. In an arrangement of sub-quantizer1548, the transforming step includes separately combining a transformation vector1580with the candidate sub-codevector sub-CV1, thereby generating candidate codevector CV1. Transformation logic module1556amay be part of a composite codevector generator, as in the arrangement depicted inFIG. 4B.

Legal status tester1562determines the legal status of candidate codevector CV1using illegal space definition(s)1570, to generate a legal/illegal indicator L/Ill1.

Error Calculator1559generates an error term e1corresponding to candidate sub-codevectors sub-CV1. Error term e1is a function of candidate sub-codevector sub-CV1and input vector1551. From the above, it can be appreciated that candidate sub-CV1corresponds to each of (1) error term e1, (2) candidate CV1, and (3) indicator L/Ill1.

Sub-codevector generator1552generates further candidate sub-codevectors sub-CV2 N, and in turn, transformation logic1556a, legal status tester1562, and error calculator1559repeat their respective functions in correspondence with each of candidate sub-codevectors sub-CV2 N. Thus, sub-quantizer1548generates a set of candidate sub-codevectors sub-CV1 . . . N(singly and collectively referred to as sub-codevector(s)1554). In correspondence with candidate sub-codevectors sub-CV1 N, sub-quantizer1548generates: a set of candidate codevectors sub-CV1 . . . N(singly and collectively referred to as candidate codevector(s)1558a); a set of legal/illegal indicators I/Ill1 N(singly and collectively referred to as indicators1572); a set of error terms e1 . . . N(singly and collectively referred to as error term(s)1561).

Sub-quantizer1548determines legality in the domain of the candidate codevectors1558a, and determines error terms in the domain of the candidate sub-codevectors1554. More generally, a sub-quantizer may determine legality in a first domain (for example, the domain of the candidate codevectors1558a), and determine error terms in a second domain different from the first domain (for example, in the domain of the candidate sub-codevectors1554).

Sub-codevector selector1574receives error terms1561, candidate sub-codevectors1554, and legal/illegal indicators1572. Based on all of these inputs, selector1524determines a best sub-codevector1576(indicated as Sub-CVBest) (and its index1578) among the candidate sub-codevectors1554corresponding to a legal one of codevectors1558aand a best one of error terms1561. In an arrangement, only error terms corresponding to sub-codevectors corresponding to legal codevectors are considered. For example, sub-CV1may be selected as the best sub-codevector, if CV1is legal and error term e1is better than any other error terms corresponding to sub-codevectors corresponding to legal codevectors.

In an arrangement, transformation vector1580may be derived from one or more past, best sub-codevectors Sub-CVBest.

Determining legality and error terms in different domains leads to an “indirection” between sub-codevectors and legality determinations. This is because a best sub-codevector is chosen based on error terms corresponding directly to the candidate sub-codevectors, and based on legality determinations that correspond indirectly to the sub-codevectors. That is, the legality determinations do not correspond directly to the sub-codevectors. Instead, the legality determinations correspond directly to the candidate codevectors (which are determined to be legal or illegal), and the candidate codevectors correspond directly to the sub-codevectors, through the transformation process performed at1556a.

FIG. 16is a block diagram of an example inverse LSF quantizer1600at a decoder.

Inverse quantizer1600includes a regular 8-dimensional inverse sub-quantizer1602, 3-dimensional inverse sub-quantizer1604with illegal space in the domain of the final reconstructed LSF vector (also referred to as “inverse sub-quantizer1604with illegal space”), and a regular 5-dimensional inverse sub-quantizer1606. Quantizers1602,1604, and1606receive respective indices Id,1, Id,2, and Id,3. In response to these received indices, quantizers1602-1606produce respective sub-codevectors. Quantizer1600also includes a combiner1608coupled to a sub-vector appender1610. Combiner1608and appender1610combine and append sub-codevectors in the manner depicted inFIG. 16to produce a reconstructed residual vector1612.

Quantizer1600further includes first and second switches or selectors1620aand1620bcontrolled in response to a transmission error indicator signal1622. Quantizer1600further includes an 8th order MA predictor1624, a plurality of combiners1626a-1626c, which may be adders or subtractors, an error concealment module1628, and an illegal status tester1630.

InFIG. 16, MA predictor1624generates a predicted vector1632based on past reconstructed residual vectors. Combiners1626aand1626btogether combine predicted vector1632, a mean LSF vector1634, and reconstructed residual vector1612, to produce a reconstructed LSF codevector1636, which is a composite codevector. Legal status tester1630determines whether reconstructed LSF codevector1636is legal using an illegal space. The illegal space includes an illegal codevector criterion defining an illegal ordering property of the lower three LSF pairs in a codevector.

Inverse sub-quantizer1604with illegal space includes inverse sub-quantizer1604in combination with illegal status tester1630, and in further combination with the illegal space definition(s) associated with tester1630. Inverse sub-quantizer1604with illegal space corresponds to sub-quantizer1510with illegal space, discussed above in connection withFIG. 15.

If reconstructed codevector1636is legal, then illegal status tester1630generates a negative transmission error indicator (indicating no transmission error has been identified) and switches1620aand1620bare in their left position, routing1636to1642and1612to1624, respectively.

Else, if reconstructed codevector1636is illegal, then illegal status tester1630generates a positive transmission error indicator (indicating a transmission error has been identified) and switches1620aand1620bare in their right position, routing1640to1642and1644to1624, respectively. Concealment module1628generates the alternative output vector1640to be used as an alternative to reconstructed LSF codevector1636(that has been declared illegal by tester1630). The alternative reconstructed LSF codevector may be a past, legal reconstructed LSF codevector. The alternative vector1644to update the MA predictor memory is obtained by subtracting the mean and predicted vectors from the alternative reconstructed LSF codevector1640in subtractor1626c.

From the received indices Id,1, Id,2, and Id,3the inverse quantization, performed by inverse quantizer1600, generates the composite codevector1636(reconstructed LSF codevector) at the decoder as

The composite codevector,{circumflex over (ω)}d, is subject to verification, at legal status tester1630, according to

which is the decoder equivalence of Eq. 87. If the composite codevector1636is not a member of the illegal space, i.e. b=true, the composite codevector is accepted, and the memory of the MA predictor1624is updated with
{circumflex over (r)}d=cId 1+[cId 2,cId 3],  (94)

and the ordering and spacing procedure of the encoder is applied. Else, if the composite codevector1636is a member of the illegal space, i.e. b=false, a transmission error is declared and indicated in signal1622, and the composite codevector is replaced with the previous composite codevector from module1628, for example,{circumflex over (ω)}d,prev, i.e.
{circumflex over (ω)}d={circumflex over (ω)}d,prev.  (95)

Furthermore, the memory of the MA predictor1624is updated with
{circumflex over (r)}d={circumflex over (ω)}d,prev−ω−{tilde over (e)}d(96)

as opposed to Eq. 94.

4. WMSE SEARCH OF A SIGNED VQ

a. General Efficient WMSE Search of a Signed VQ

This section presents an efficient method to search a signed VQ using the WMSE (Weighted Mean Squared Error) criterion. The weighting in WMSE criterion is typically introduced in order to obtain an error criterion that correlates better with the perception of the human auditory system than the MSE criterion, and hereby improve the performance of the VQ by selecting a codevector that is perceptually better. The weighting typically emphasizes perceptually important feature(s) of the parameter(s) being quantized, and often varies from one input vector to the next. First a signed VQ is defined, and secondly, the WMSE criteria to which the method applies are described. Subsequently, the efficient method is described.

The effectiveness of the methods is measured in terms of the floating point DSP-like operations required to perform the search, and is referred as floating point operations. An Addition, a Multiply, and a Multiply-and-Accumulate are all counted as requiring 1 operation.

A size N (total of N possible codevectors) signed VQ of dimension K is defined as a product code of two codes, referred as a sign-shape code.

The two codes are a 2-entry scalar code,
Csign={+1,−1},  (97)

The product code is then given by
C=Csign×Cshape,  (100)

and the N possible codevectors are defined by
cn,s=s·cn, sεCsign,cnεCshape(101)

The efficient method applies to the popular WMSE criterion of the form
d(x,y)=(x−y)·W·(x−y)T,  (102)

where the weighting matrix,W, is a diagonal matrix. With that constraint the error criterion of Eq. 102 reduces to

where the weighting vector,w, contains the diagonal elements of the weighting matrix,W. The efficient method also applies to the common, very similar error criterion defined by

In general, the search of a VQ defined by a set of codevectors, the code, C, involves finding the codevector,cnopt, that minimizes the distance to the input vector,x, according to some error criterion, d(x,y):

For the signed VQ the search involves finding the optimal sign, soptεCsign, and optimal shape vector,cnoptεCshape, that provides the optimal joint codevector,cnopt,sopt. This is expressed as

If either of the error criteria of Eq. 103 and Eq. 104 is used the operation of searching the codebook would require
F1=N·K·b3(107)

floating point operations. This is a straightforward implementation of the search given by finding the minimum of the explicit error criterion for each possible codevector.

However, a reduction in floating point operations is possible by exploiting the structure of the signed codebook. For simplicity the search of Eq. 106 is written as

Without loss of generality the error criterion given by Eq. 104 is used for expansion of the search given by Eq. 108,

In Eq. 109 the error criterion has been expanded into three terms, the weighted energy of the input vector, Ew(x), the weighted energy of the shape vector, Ew(cn), and the sign multiplied by two times the weighted cross-correlations between the input vector and the shape vector, Rw(cn,x). The weighted energy of the input vector is independent of the sign and shape vector and therefore remains constant for all composite codevectors. Consequently, it can be omitted from the search, and the search of Eq. 109 is reduced to

while being mathematical equivalent. In Eq. 113 E(s,cn) is denoted the minimization term and is given by

From Eq. 113 it is evident that for a given shape vector,cn, the sign of the cross-correlation term, Rw(cn,x), determines which of the two signs, s=±1, that will result in a smaller minimization term. Consequently, by examining the sign of the weighted cross-correlation term, Rw(cn,x), it becomes sufficient to calculate and check the minimization term corresponding to only one of the two signs. If the weighted cross-correlation term is greater than zero, Rw(cn,x)>0, the positive sign, s=+1, will provide a smaller minimization term. Vice versa, if the weighted cross-correlation term is less than zero, Rw(cn,x)<0, the negative sign, s=−1, will provide a smaller minimization term. For Rw(cn,x)=0 the sign can be chosen arbitrarily since the two minimization terms become identical. Accordingly, the search can be expressed as

Consequently, by arranging the search of a size N signed VQ, sign-shape VQ, according to the present invention it suffices to calculate and check the minimization term of only half, N/2, of the total number of codevectors.

If Eq. 111, Eq. 112, and Eq. 115 are used to calculate Ew(cn) and Rw(cn,x), respectively, a total of

floating point operations are required to perform the search. However, Eq. 111 and Eq. 112 can be expressed as

Using Eq. 115, Eq. 117, Eq. 118, and Eq. 119 to perform the search requires a total of

floating point operations.

The steps of the preferred embodiment are, for each shape vectorcn, n=1, 2, . . . N/2:

b. If Rw(cn,x)>0 calculate and check the minimization term for the positive sign, i.e. E(s=+1,cn), else calculate and check the minimization term for the negative sign, i.e. E(s=−1,cn).

The term Ew(cn) is calculated according to Eq. 117 under either step a or b above.

FIG. 17Ais a flowchart of an example quantization search method1700. Specifically, method1700represents a WMSE search of a signed codebook. For example, method1700performs the search in accordance with Eq. 113 or Eq. 115.

The codebook includes:

a sign code, Csign={+1,−1}, including a pair of oppositely-signed sign values +1 and −1.

Thus, each shape codevectorcncan be considered to be associated with:

a positive signed codevector representing a product of the shape codevectorcnand the sign value +1; and

a negative signed codevector representing a product of the shape codevectorcnand the sign value −1.

In other words, the positive and negative signed codevectors associated with each shape codevectorscneach represent a product of the shape codevectorcnand a corresponding one of the sign values.

An initial step1702includes identifying a first shape codevector to be processed among a set of shape codevectors.

Method1700includes a loop for processing the identified shape codevector. A step1704includes calculating a weighted energy of the shape codevector, for example, in accordance with Eq. 111.

A next step1706includes calculating a weighted cross-correlation term between the shape codevector and an input vector, for example, in accordance with Eq. 112.

A next step1708includes determining, based on a sign (or sign value) of the weighted cross-correlation term, a preferred one of the positive and negative signed codevectors associated with the shape codevector. Thus, step1708includes determining the sign of the cross-correlation term. A negative cross-correlation term indicates the negative signed codevector is the preferred one of the positive and negative signed codevectors. Alternatively, a positive weighted cross-correlation term indicates the positive signed codevector is the preferred one of the positive and negative signed codevectors.

If the sign of the cross-correlation term is negative, then a next step1710includes calculating a minimization term corresponding to the negative signed codevector as the sum of (1) the weighted energy of the shape codevector, and (2) the weighted cross-correlation term. For example, the minimization term is calculated in accordance with Eq. 114.

Alternatively, if the sign of the cross-correlation term is positive, then a next step1712includes calculating a minimization term corresponding to the positive signed codevector as the weighted energy of the shape codevector minus the weighted cross-correlation term. For example, the minimization term is calculated in accordance with Eq. 114.

Flow proceeds from both steps1710and1712to updating step1714. Step1714includes determining whether the minimization term calculated in either step1710or step1712is better than a current best minimization term.

If the minimization term calculated at step1710or1712is better than the current best minimization term, then flow proceeds to a next step1716. At step1716, the minimization term replaces the current best minimization term, and the preferred signed codevector, determined at step1708, becomes the current best signed codevector. Flow proceeds to a next step1718.

Alternatively, if the minimization term calculated at step1710or step1712is not better than the current best minimization term, than flow proceeds directly from step1714to step1718.

Step1718includes determining whether all of the shape codevectors in the shape codebook have been processed. If all of the codevectors in the shape codebook have been processed, then the method is done. If more shape codevectors need to be processed, then a next step1720includes identifying the next codevector to be processed in the loop comprising steps1704-1720, and the loop repeats.

Thus, the loop including steps1704-1720repeats for each shape codevector in the set of shape codevectors, thereby determining for each shape codevector a preferred signed codevector and a corresponding minimization term. As the loop repeats, steps1714and1716together include determining a best signed codevector among the preferred signed codevectors based on their corresponding minimization terms. The best signed codevector represents a quantized vector corresponding to the input vector.

FIG. 17Bis a flowchart of a method1730of performing a WMSE search of a signed codebook. Method1730is similar to method1700, except method1730includes an additional step1701included within the search loop. Step1701includes calculating a weighted shape codevector, for the shape codevector being processed in the loop, with the weighting function for the WMSE criteria, to produce a weighted shape codevector. For example, in accordance with Eq. 119. Subsequent steps1704and1706use the weighted shape codevector in calculating the weighted energy and the weighted cross-correlation term.

b. Efficient WMSE Search of a Signed VQ with Illegal Space

The efficient WMSE search method of the previous section provides a result that is mathematically identical to performing an exhaustive search of all combinations of signs and shapes. However, in combination with the enforcement of an illegal space this is not necessarily the case since the sign providing the lower WMSE may be eliminated by the illegal space, and the alternate sign may provide a legal codevector though of a higher WMSE yet better than any alternative codevector. Nevertheless, for some applications checking only the codevector of the sign according to the cross-correlation term as indicated by Eq. 115 provides satisfactory performance and saves significant computational complexity. This search procedure can be expressed as

This method requires only half of the total number of codevectors to be evaluated, both in terms of WMSE and in terms of membership of the illegal space, compared to an exhaustive search of sign and shape. The flowcharts inFIGS. 18A through 18Dare flow chart illustrations of the search procedure, performed in accordance with Eq. 121, for example.

FIG. 18Ais a flowchart of an example method1800of performing a WMSE search of a signed codebook associated with an illegal space. Method1800has the same general form as methods1700and1730, except method1800replaces steps1710,1712,1714, and1716with corresponding steps1810,1812,1814, and1816. Step1810includes calculating the minimization term as in step1710. In addition, step1810includes determining whether the preferred signed codevector, or a transformation thereof (ifz≠0), does not belong to an illegal space defining illegal vectors. Step1810also includes declaring the preferred signed codevector legal when the preferred signed codevector, or a transformation thereof, does not belong to the illegal space. Similarly, step1812includes these additional two steps.

Step1814includes determining whether the minimization term corresponding to the preferred signed shape codevector is better than the current best minimization term AND whether the preferred signed shape codevector is legal.

If the minimization term is better than the current best minimization term AND the preferred signed shaped codevector is legal, then step1816updates (1) the current best minimization term with the minimization term determined at either step1810or1812, and (2) the current best preferred signed shape codevector with the signed codevector determined at step1708(that is, corresponding to the minimization term). Otherwise, neither the current best minimization term nor the current best signed codevector is updated.

FIG. 18Bis a flowchart of another example method1818of performing a WMSE search of a signed codebook with an illegal space. Method1818is similar to method1800except that method1818determines the legal status of the preferred signed codevector at a step1815, after steps1710,1712, and1714, as depicted inFIG. 18B. Also, method1818includes a separate step1820following step1815to determine whether to update the current best minimization term and the current best preferred signed codevector.

FIG. 18Cis a flowchart of another example method1840of performing a WMSE search of a signed codebook with an illegal space. Method1840is similar to method1818, except method1840reverses the order of determining legality (steps1815/1820) and determining error terms (1714) compared to method1818.

FIG. 18Dis a flowchart of another example method1860of performing a WMSE search of a signed codebook with illegal space. Method1860is similar to methods1800and1830, except method1860includes steps1862,1864, and1866. Step1862includes transforming the preferred signed shape codevector into a transformed codevector that corresponds to the preferred signed codevector, and that is in a domain of the illegal space representing illegal vectors.

A next step1864includes determining whether the transformed codevector does not belong to the illegal space defining illegal vectors. Step1864also includes declaring the transformed codevector legal when the transformed codevector does not belong to the illegal space.

Next, step1866includes determining whether the minimization term calculated in either step1710or step1712is better than a current best minimization term AND whether the transformed codevector is legal.

If the minimization term is better than the current best minimization term AND the transformed codevector is legal, then process flow leads to step1816. Step1816includes updating the current best signed codevector with the preferred signed codevector determined at step1708, and updating the current best minimization term with the minimization term determined at step1710or1712.

Methods1800,1818,1840and1860may be performed in any of the quantizers described herein, including sub-quantizers and composite quantizers. Thus, the methods may represent methods of quantization performed by a quantizer and methods of sub-quantization performed by a sub-quantizer that is part of a composite quantizer.

c. Index Mapping of Signed VQ

A signed VQ results in two indices, one for the sign, Ie,sign={1,2}, and one for the shape codebook, Ie,shape={1, 2, . . . , N/2}. The index for the sign requires only one bit while the size of the shape codebook determines the number of bits needed to uniquely specify the shape codevector. The final codevector is often relatively sensitive to a single bit-error affecting only the sign bit since it will result in a codevector in the complete opposite direction, i.e.

Consequently, it is often advantageous to use a mapping of the sign and shape indices providing a relatively lower probability of transmission errors causing the decoder to decode a final codevector in the complete opposite direction. This is achieved by transmitting a joint index, Ie, of the sign and shape given by

With this mapping it will take all bits representing the joint index, Ie, to be in error in order to decode the complete opposite codevector at the decoder. The decoder will apply the inverse mapping given by

to the received joint index, Id, in order to derive the sign index, Id,sign, and shape index, Id,shape.

5. EXAMPLE NARROWBAND LSF SYSTEM

A second embodiment of the invention to the LSF VQ is described in detail in the context of a narrowband LPC system.

FIG. 19is a block diagram of an example LSF quantizer1900at an encoder. Quantizer1900utilizes both a search using an illegal space and a search of a signed codebook. Quantizer1900is similar to quantizer1500discussed above in connection withFIG. 15. Quantizer1500is a mean-removed, predictive VQ with a two-stage quantization of the residual vector. However, the second stage sub-quantization (represented at1912) is a signed VQ of the full dimensional residual vector as opposed to the quantizer1500that employs a split VQ. Consequently, quantizer1900has only two sub-quantizers1506and1912. With reference toFIG. 19, the LSF VQ (quantizer1900) receives an 8thdimensional input LSF vector,
ω=[ω(1), ω(2), . . . , ω(8)],  (125)

and the two indices, Ie,1and Ie,2, of the two sub-quantizers, Q1[·] and Q2[·], respectively. The sizes of the two sub-quantizers are N1=128 and N2=128 (64 shape vectors and 2 signs) and require a total of 14 bits. The respective codebooks are denoted C1and C2, where the second stage sign and shape codebooks making up C2are denoted Csignand Cshape, respectively.

The residual vector,r, after mean-removal and 8thorder MA prediction, is obtained according to Eq. 68 through Eq. 71 and is quantized as
{circumflex over (r)}e=Q[r].  (127)

The quantization of the residual vector is performed in two stages.

Equivalently to quantizer1500, the first stage sub-quantization is performed by quantizer1506according to

and the residual after the first stage quantization is given by

The first stage residual vector is quantized by quantizer1912according to
cIe 2=Q2[r1],  (130)

and, the final composite codevector is given by

The sub-quantization, Q2[·], of the first stage residual vector,r1, is subject to an illegal space in order to enable detection of transmission errors at the decoder. The illegal space is defined in the domain of the LSF parameters as
Ωill={ω|ω(1)<0vω(2)−ω(1)<0vω(3)−ω(2)<0}  (132)

affecting only a sub-vector of the final composite candidate codevectors. The elements subject to the illegal space are

The illegal space defined by Eq. 132 comprises all LSF vectors for which any of the three lower pairs are out-of-order. According to Eq. 56 the second stage quantization, Q2[·], is expressed as

c_Ie⁢⁢2=⁢Q2⁡[r_1]=⁢arg⁢⁢minc_n2∈{c_❘c_∈C2,(z_+c_)∉Ωill}⁢{dWMSE⁡(r_1,c_n2)},(135)
With the notation of a signed VQ introduced in Eq. 97 through Eq. 101 this is expressed as
cIe 2=sopt·cnopt,  (136)
where

For a signed VQ it is sufficient to check the codevector of a given shape vector corresponding to only one of the signs, see Eq. 114 and Eq. 115. This will provide a result mathematically identical to performing the exhaustive search of all combinations of signs and shapes. However, as previously described, with the enforcement of an illegal space this is not necessarily the case. Nevertheless, checking only the codevector of the sign according to the cross-correlation term as indicated by Eq. 115 was found to provide satisfactory performance for this particular embodiment and saves significant computational complexity. Consequently, the second stage quantization, Q2[·], is simplified according to Eq. 121 and is given by
cIe 2=sopt·cnopt,  (138)
where,

During the search, according to the sign of the cross-correlation term, Rw(cn,r1), either the composite candidate codevector corresponding to the sub-codevector of the positive sign, i.ecn,2=(z+cn), or the composite candidate codevector corresponding to the sub-codevector of the negative sign,cn,2=(z−cn), must be verified to not belong to the illegal space. The logical expression to verify that the composite candidate codevector corresponding to the candidate sub-codevector,cn2=s·cn, is legal, is given by

The mapping of Eq. 123 is applied to generate the joint index, Ie,2, of the sign and shape indices, Ie,2,signand Ie,2,shape, of the second stage signed VQ. The memory of the MA predictor is updated with

and a regular ordering and spacing procedure is applied to the final composite codevector,{circumflex over (ω)}e, given by Eq. 131 in order to properly order, in particular the upper part, and space the LSF parameters.

The two indices Ie,1and Ie,2of the two sub-quantizers, Q1[·] and Q2[·] are transmitted to the decoder providing the two indices Id,1and Id,2at the decoder:
{Id,1,Id,2}=T[{Ie,1,Ie,3}].  (142)

FIG. 20is a block diagram of an example inverse LSF quantizer2000, Q−1[·], at a decoder. The composite codevector at the decoder is generated as

where the second stage sign and shape indices, Id,2,signand Id,2,shape, are decoded by inverse sub-quantizer2004from the received second stage index, Id,2according to Eq. 124. Furthermore, the MA prediction at the decoder,{tilde over (e)}d, is given by Eq. 92. The composite codevector,{circumflex over (ω)}d, is subject to verification by legal tester1630according to

which is the decoder equivalence of Eq. 140. If the composite codevector is not a member of the illegal space, i.e. b=true, the composite codevector is accepted, the memory of the MA predictor1624is updated with
{circumflex over (r)}d=cId 1+sId 2 sign·cId 2 shape,  (145)

and the ordering and spacing procedure of the encoder is applied. Else, if the composite codevector is a member of the illegal space, i.e. b=false, a transmission error is declared, and the composite codevector is replaced (by concealment module1628) with the previous composite codevector,{circumflex over (ω)}d,prev, i.e.
{circumflex over (ω)}d={circumflex over (ω)}d,prev.  (146)

Furthermore, the memory of the MA predictor1624is updated with
{circumflex over (r)}d={circumflex over (ω)}d,prev−ω−{tilde over (e)}d(147)

as opposed to Eq. 145.

Inverse sub-quantizer2004, illegal tester1630and the illegal space definition(s) associated with the tester, collectively form an inverse sub-quantizer with illegal space of inverse quantizer2000. This inverse sub-quantizer with illegal space corresponds to sub-quantizer with illegal space1912of quantizer1900.

6. HARDWARE AND SOFTWARE IMPLEMENTATIONS

The following description of a general purpose computer system is provided for completeness. The present invention can be implemented in hardware, or as a combination of software and hardware. Consequently, the invention may be implemented in the environment of a computer system or other processing system. An example of such a computer system2100is shown inFIG. 21. In the present invention, all of the signal processing blocks depicted inFIGS. 1-5B,15-16, and19-20, for example, can execute on one or more distinct computer systems2100, to implement the various methods of the present invention. The computer system2100includes one or more processors, such as processor2104. Processor2104can be a special purpose or a general purpose digital signal processor. The processor2104is connected to a communication infrastructure2106(for example, a bus or network). Various software implementations are described in terms of this exemplary computer system. After reading this description, it will become apparent to a person skilled in the relevant art how to implement the invention using other computer systems and/or computer architectures.

Computer system2100also includes a main memory2108, preferably random access memory (RAM), and may also include a secondary memory2110. The secondary memory2110may include, for example, a hard disk drive2112and/or a removable storage drive2114, representing a floppy disk drive, a magnetic tape drive, an optical disk drive, etc. The removable storage drive2114reads from and/or writes to a removable storage unit2118in a well known manner. Removable storage unit2118, represents a floppy disk, magnetic tape, optical disk, etc. which is read by and written to by removable storage drive2114. As will be appreciated, the removable storage unit2118includes a computer usable storage medium having stored therein computer software and/or data.

In alternative implementations, secondary memory2110may include other similar means for allowing computer programs or other instructions to be loaded into computer system2100. Such means may include, for example, a removable storage unit2122and an interface2120. Examples of such means may include a program cartridge and cartridge interface (such as that found in video game devices), a removable memory chip (such as an EPROM, or PROM) and associated socket, and other removable storage units2122and interfaces2120which allow software and data to be transferred from the removable storage unit2122to computer system2100.

Computer system2100may also include a communications interface2124. Communications interface2124allows software and data to be transferred between computer system2100and external devices. Examples of communications interface2124may include a modem, a network interface (such as an Ethernet card), a communications port, a PCMCIA slot and card, etc. Software and data transferred via communications interface2124are in the form of signals2128which may be electronic, electromagnetic, optical or other signals capable of being received by communications interface2124. These signals2128are provided to communications interface2124via a communications path2126. Communications path2126carries signals2128and may be implemented using wire or cable, fiber optics, a phone line, a cellular phone link, an RF link and other communications channels. Examples of signals that may be transferred over interface2124include: signals and/or parameters to be coded and/or decoded such as speech and/or audio signals; signals to be quantized and/or inverse quantized, such as speech and/or audio signals, LPC parameters, pitch prediction parameters, and quantized versions of the signals/parameters and indices identifying same; any signals/parameters resulting from the encoding, decoding, quantization, and inverse quantization processes described herein.

In this document, the terms “computer program medium” and “computer usable medium” are used to generally refer to media such as removable storage drive2114, a hard disk installed in hard disk drive2112, and signals2128. These computer program products are means for providing software to computer system2100.

Computer programs (also called computer control logic) are stored in main memory2108and/or secondary memory2110. Also, quantizer (and sub-quantizer) and inverse quantizer (and inverse sub-quantizer) codebooks, codevectors, sub-codevectors, and illegal space definitions used in the present invention may all be stored in the above-mentioned memories. Computer programs may also be received via communications interface2124. Such computer programs, when executed, enable the computer system2100to implement the present invention as discussed herein. In particular, the computer programs, when executed, enable the processor2104to implement the processes of the present invention, such as the methods implemented using either quantizer or inverse quantizer structures, such as the methods illustrated inFIGS. 6A-14, and17A-18D, for example. Accordingly, such computer programs represent controllers of the computer system2100. By way of example, in the embodiments of the invention, the processes/methods performed by signal processing blocks of quantizers and/or inverse quantizers can be performed by computer control logic. Where the invention is implemented using software, the software may be stored in a computer program product and loaded into computer system2100using removable storage drive2114, hard drive2112or communications interface2124.

In another embodiment, features of the invention are implemented primarily in hardware using, for example, hardware components such as Application Specific Integrated Circuits (ASICs) and gate arrays. Implementation of a hardware state machine so as to perform the functions described herein will also be apparent to persons skilled in the relevant art(s).

The present invention has been described above with the aid of functional building blocks and method steps illustrating the performance of specified functions and relationships thereof. The boundaries of these functional building blocks and method steps have been arbitrarily defined herein for the convenience of the description. Alternate boundaries can be defined so long as the specified functions and relationships thereof are appropriately performed. Also, the order of method steps may be rearranged. Any such alternate boundaries are thus within the scope and spirit of the claimed invention. One skilled in the art will recognize that these functional building blocks can be implemented by discrete components, application specific integrated circuits, processors executing appropriate software and the like or any combination thereof. Thus, the breadth and scope of the present invention should not be limited by any of the above-described exemplary embodiments, but should be defined only in accordance with the following claims and their equivalents.