User:Mramalho/Draft G.711.0 Article

'''ITU-T Rec. G.711.0' is a lossless and stateless'' compression for ITU-T Rec. G.711 packet payloads typically used in Voice over IP (VoIP). G.711.0 was "consented" on July, 2009 and published in May, 2010.

Similar to lossless compression algorithms for computer files such as WinZIP, the G.711 symbols output from a G.711.0 decoder are identical to the G.711 symbols presented to the corresponding encoder.

In essence, G.711.0 a data compression algorithm tailored for the G.711 symbol alphabet and frame sizes typically used in packet networks. G.711.0 compresses both A-law and Mu-law G.711 payloads and has been designed to compresses input frames of 40, 80, 160, 240 or 320 G.711 samples (at the usual sampling rate of 8 kHz, these frame sizes correspond to 5 ms., 10 ms., 20 ms, 30 ms or 40 ms. of audio). G.711.0 has been designed to be lossless for any possible G.711 payload (the importance of this property will be described below). Although G.711.0 is a data compression algorithm, it is referred to as "codec" when used to compress G.711 payloads in packet networks.

Unlike most ITU-T specified "codecs", G.711.0 was designed to be stateless - compressing the present input frame without analysis G.711 data in previously encoded G.711 frames. Although some additional compression gain is lost by not considering past G.711 symbols, there is a significant benefit gained in packet network application - no error propagation at the decoder. Most lossy codecs will use past audio samples and past encoder parameters when compressing the present input frame. As a result, state needs to be kept for every audio stream such a coder would require. Likewise, most lossy decoders will need past audio samples or encoder parameters when decoding - thus the decoder would also need to keep state for every audio stream it is decoding. If a packet is lost, many stateful decoders will not have all the data required to decode the next received packet - resulting in what is called "error propagation". Error propagation results in the decoder output not being as originally designed for some period of packet receptions after a packet loss.

G.711.0, being stateless at both encoder and decoder, does not require per-session state; the G.711.0 compression and the G.711.0 decompression are thus typically implemented as stateless function calls. Additionally, being stateless negates the error propagation effects of most stateful codecs. As a result, G.711.0 has the same property as G.711 - the waveform immediately recovers at the next packet reception.

The following sections present the History of G.711.0, the design considerations used in the development of G.711.0, and the compression expected for use of G.711.0 in many environments.