vely insignificant. Case-specific compression based on Huffman coding (referred to as Huffman compression) is widely used in telecom devices such as faxes and modems, and in multimedia applications with well known standards for music, images, and video, known as MP3, JPEG, and MPEG, for instance. A brief overview of common compression standards is given in Appendix G. The task of compressing sound and pictures is, however, made more complex because the source's probability distribution is inherently unknown, and no generic codebook may exist or prove effective. A solution to this problem is referred to as adaptive coding, where optimal coding trees are devised "on the fly" as new source symbols come in the sequence. This will be described in Chapter 10. The reverse operation of back-translating a coded datafile or a codeword sequence, is called decompression. Figure 9.3 illustrates the generic system layout used for code compression or decompression. As the figure shows, a dedicated memory provides the one-to-one correspondence between source symbols and codewords (compression) or the reverse (decompression). The operation of extracting the information stored in the Optimal coding and compression memory is called table look-up. The memory is scanned address by address, until the symbol (or codeword) is found, in which case the corresponding codeword (or symbol) is output from the memory. It is, basically, the same operation as if we look at Table 9.1 (the memory) to find the codeword for the source character U (the output or answer being 10111), or to find the source character for the codeword 110000100 (the output or answer being J). Note that decompression with a Huffman code is easier than with any other code, because we know from the codeword length and prefix where to look at in the memory. For a machine, it takes a simple program to determine at what memory location to start the look-up search, given the codeword size and prefix bits. For block codes (see next section), the compression/decompression operati