Other Considerations

The MP3 codec does much more additional work maintaining frequency tables, storing and allocating bits optimally, and handling user options set at encode time. While this chapter does not exhaustively cover everything the encoder is responsible for, here are a few of the more important additional chores the encoder must tackle.

Raw Power

As you have probably surmised, encoding and decoding MP3 audio does require a few CPU cycles. In fact, unless you're into graphic imaging or encryption cracking, encoding MP3 files is one of the few things an average computer user does on a regular basis that has the ability to consume all the processing power thrown at it. The encoding process is far more intensive than the decoding process or simply playing the final audio output. Since most users are likely to be decoding more frequently than encoding, this is intentional, and is in fact one of the design precepts of the MP3 system (and even more so of next-generation formats such as AAC and VQF).

Creating an MP3 file, as previously described, is a hugely complex task, taking many disparate factors into consideration. The task is one of pure, intensive mathematics. While the computer industry is notorious for hawking more processing power to consumers than they really need, this is one area where users benefit from a faster CPU (or CPUs), provided encoding audio files is a primary function.

It is impossible to recommend any particular processor speed, for several reasons:

Decoding or Playing Audio Files

As noted earlier, the great bulk of the work in the MP3 system as a whole is placed on the encoding process. Since one typically plays files more frequently than one encodes them, this makes sense. Decoders do not need to store or work with a model of human psychoacoustic principles, nor do they require a bit allocation procedure. All an MP3 player must do is examine the bitstream of header and data frames for spectral components and the side information stored alongside them, and then reconstruct this information to create an audio signal. The player is usually nothing more than a fancy interface to a collection of MP3 or Ogg Vorbis files and playlists and your sound card, encapsulating the relatively straight-forward rules of decoding the MP3 bitstream format.

While there are measurable differences in the efficiency -- and audible differences in the quality -- of various MP3 decoders, the differences are largely negligible on computer hardware manufactured in the last few years. That is not to say that decoders just sit in the background consuming no resources. In fact, on some machines and some operating systems you will notice a slight (or even pronounced) sluggishness in other operations while your player is running. This is particularly true on operating systems that don't feature a finely grained threading model, such as MacOS and most versions of Windows. Most Linux distributions are largely exempt from MP3 skipping problems, given decent hardware. And of course, if listening to MP3 audio streamed over the Internet, skipping problems result if not enough bandwidth is available to handle the bitrate/sampling frequency of the stream.

Some MP3 decoders chew up more CPU time than others. The differences between them in terms of efficiency are not as great as the differences between their feature sets, or between the efficiency of various encoders. Choosing an MP3 player becomes a question of cost, extensibility, audio quality, and appearance. More often than not it all comes down to the aesthetics of a particular decoder rather than its functionality. This is true of most users, who choose their MP3 player based on their favorite "skin" or its aesthetic appearaance rather than on its features.

If you are a stickler for audio quality, you probably have a decent to excellent sound card already. However, if using an older sound card (such as a SoundBlaster 16) and a slower CPU (slower than a Pentium 133), be aware that the "look ahead" buffer in the MP3 player is easily exhaustible, resulting in an audible degradation of sound quality. However, replacing your existing card with a better one, such as a SoundBlaster 64, may eliminate artifacts. Better sound cards perform more of the critical math in their own hardware, rather than burdening the computer's CPU.

While this situation won't affect many modern geeks, there is an easy way to test existing equipment to determine if its lack of speed is affecting audio quality: Just pick a favorite MP3 file and decode it to a noncompressed format such as WAV, then listen to the MP3 and the WAV side-by-side. If the WAV version sounds better, you'll know that your machine is not up to snuff or to the MP3 playback task, since the uncompressed version requires very little processing power to play.

Popular Decoders

At the present time there exists a plethora of popular MP3 and Ogg Vorbis decoders for the Linux platform. What you choose depends entirely on whether you want a GUI client or simply something that operates at the CLI level. The more popular GUI players include XMMS, amaroK, Zinf, ALSAPlayer and so on. A popular command line tool is mpg321, though there are several more available for use on most any Linux distro.

For Windows users a very popular decoder is WinAmp. It touts its vast collection of themes or skins from which a user can change the look and appearance of the player. The same goes for the latest release of Windows Media Player 10. There are many others for download that are either free or extremely inexpensive. Choose one that does what you need it to do.