In the last twenty years microprocessor speed increased by several orders of magnitude and Digital Signal Processors (DSPs) became ubiquitous. It became feasible and attractive to transition from analog communication to digital communication. Digital communication offers the major advantage of being able to more efficiently utilize bandwidth and allows for error correcting techniques to be used. Thus by using digital technology one can send more information through a given allocated spectrum space and send the information more reliably. Digital communication can use radio links (wireless) or physical network media (e.g., fiber optics, copper networks).
Digital communication can be used for different types of communication such as speech, audio, image, video or telemetry for example. A digital communication system includes a sending device and a receiving device. In a system capable of two-way communication each device has both sending and receiving circuits. In a digital sending or receiving device there are multiple staged processes through which the signal and resultant data is passed between the stage at which the signal is received at an input (e.g., microphone, camera, sensor) and the stage at which a digitized version of the signal is used to modulate a carrier wave and transmitted. After (1) the signal is received at the input and then digitized, (2) some initial noise filtering may be applied, followed by (3) source encoding and (4) finally channel encoding. At a receive device, the process works in reverse order; channel decoding, source recovery, and then conversion to analog. The present invention as will be described in the succeeding pages can be considered to fall in both the source encoding and source recovery stage.
The main goal of source encoding (and the corresponding channel decoding) is to reduce the bit rate while maintaining perceived quality to the extent possible. Different standards have been developed for different types of media. For example the JPEG standard applies to still images while the IS-127 standard applies to audio. In a concession to practicality, source encoders are often designed with using vector lengths corresponding to a DSP register length or an even multiple of the DSP register length (e.g., 128 bits). Now for each application there is some limit on the allocated channel bandwidth. Based on this limit, the designer of the source encoder/decoder will settle on a certain number of possible codes in view of all the degrees of freedom of each portion of the media being encoded. For example, in the case of speech encoding, there may be a certain audio frame duration established (e.g., 20 msec. during which 160 analog to digital samples are taken). From these samples, certain aspects of the signal are transformed into a vector that represents those aspects for one audio frame. The vector is designed to comprise a certain number of allowed audio pulses in each audio frame, and a certain number of total amplitude quanta to be allocated to the pulses. The choices made by the designer are intended to maximize the perceptual quality while staying within the allocated bandwidth. Because the pulse vector is discrete and quantized one can enumerate the total number of unique vector values into which the samples can be transformed. The total number of unique possibilities for each frame's vector is closely related to the allocated bandwidth because it must be possible to send through the channel during the time interval of the audio frame sufficient information to identify the one unique frame which best corresponds to the audio during that frame.
In some systems, such as those described by 3GPP2 C.S0014-B, published by the 3rd Generation Partnership Project 2, and U.S. Pat. No. 6,236,960 issued to Peng et al., the encoding of the vector into a code word that is ready for channel encoding determines coding pulse offsets of the pulses within the vector that form the code word using values determined from combinatorial functions. These methods are a form of combinatorial coding described as Factorial Pulse Coding (FPC) in US Patent Publication 2009-0234642 by Mittal et al. FPC is described as a technique that can code a vector xi using a total of M bits, given that
                    m        =                              ∑                          i              =              0                                      n              -              1                                ⁢                                          ⁢                                                x              i                                                                      (        1        )            and all values of vector xi are integral valued such that −m≦xi≦m, where m is the total number of unit amplitude pulses, and n is the vector length. The total M bits are used to code N combinations in an efficient manner, such that the following expression, which describes the theoretical minimum number of combinations, holds true:
                    N        =                                            ∑                              d                =                1                                            min                ⁡                                  (                                      m                    ,                    n                                    )                                                      ⁢                                                  ⁢                                          F                ⁡                                  (                                      n                    ,                    d                                    )                                            ⁢                              D                ⁡                                  (                                      m                    ,                    d                                    )                                            ⁢                              2                d                                              ≤                                    2              M                        .                                              (        2        )            
For this equation, F(n,d) are the number of combinations of d non-zero vector elements over n positions given by
                                          F            ⁡                          (                              n                ,                d                            )                                =                                    n              !                                                      d                !                            ⁢                                                (                                      n                    -                    d                                    )                                !                                                    ,                            (        3        )            and D(m,d) are the number of combinations of d non-zero vector elements given m total unit pulses given by:D(m,d)=F(m−1,d−1),  (4)and 2d represents the combinations required to describe the polarity (sign) of the d non-zero vector elements. The term min(m, n) allows for the case where the number of unit magnitude pulses m exceeds the vector length n. A method and apparatus for coding and decoding vectors of this form have been fully described in the prior art. Furthermore, a practical implementation of this coding method has been described in 3GPP2 standard C.S0014-B, where the vector length n=54 and the number of unit magnitude pulses m=7 produce an M=35 bit codeword.
While these values of n and m do not cause any unreasonable complexity burden, larger values can quickly cause problems, especially in mobile handheld devices which need to keep memory and computational complexity as low as possible. For example, use of this coding method for some applications (such as audio coding) may require n=144 and m=28, or higher. Under these circumstances, the resource cost associated with producing the combinatorial expression F(n,d) using prior art methods may be too high for practical implementation. US Patent Publication 2009-0234642 by Mittel et al. describes methods to reduce the resources needed to compute combinatorial functions used for both encoding and decoding of vectors of the type described in equation (1), involving a technique of approximation. The technique uses an approximation of a geometric mean of a plurality of numbers to approximate F(n,d).
Although much of the discussion above is with reference to speech and discusses frames, in the more general case different types of signals e.g., image, video, telemetry & audio) may be characterized (in whole or in part) by vectors of the type described in equation (1).
Skilled artisans will appreciate that elements in the figures are illustrated for simplicity and clarity and have not necessarily been drawn to scale. For example, the dimensions of some of the elements in the figures may be exaggerated relative to other elements to help to improve understanding of embodiments of the present invention.