Codec Freedom -- Specifications -- Bursty Codecs

Older codecs used to "stream" a constant sequence of bits out. Modern codecs tend to collect a frame and "burst" it out.

Old codecs, such as G.711 or G.722 are not looking at much history. Their compression schemes are simple and hold very little state. This is because they were designed more than 25 years ago, when computers were not mainstream and certainly too expensive for telephone switches. Also, the Internet was immature and telecommunications were operated on fixed-bandwidth lines that clocked bits through them at a constant, highly predictable rate.

Modern codecs, such as Codec2 or Opus, are much more advanced and can achieve much higher rates of compression. To do so, they analyse a small sequence of samples as a whole, to detect patterns in them. This approach cannot produce output until the complete sequence to analyse has been read in.

These modern codecs therefore read in a "frame" and run on it as a whole, producing an output "frame" that is usually much smaller. Most importantly, they are bursty in nature; a "frame" is best delivered as fast as possible, to reduce the end-to-end signal latency.

This burstiness is not a problem when running protocols on the Internet; as a matter of fact, codecs may produce even better results when they are permitted to deliver output of variable sizes.

This distinction is why we have two modes of operation for Codec Freedom:

Clearly, G.711 and G.722 are old codecs, and they fill the full 64 kb/s channels that we assume as our basis for Codec Freedom. And just as clearly, Speex and Opus are modern codecs that should be delivered as fast as possible, in frame mode.

Some codecs are not so clear; G.726 is used for DECT, which may be treated as a constant-pace codec which calls for bit-insertion mode. However, when a DECT phone connects over SIP, it will deliver the samples in "frames", and in that case packet mode is the best option.

blogroll