Matthew Lloyd
Tue, 18 Apr 2000 14:54:44 -0700
Hi peeps, I know this is MP3-encoder but I couldn't find any place more suitable to post the results of some decoder testing I've been doing over the last couple of days. I took a fairly complex track (Pat Metheny's Imaginary Day title track in fact) ripped from CD at 44.1khz 16bit stereo, and encoded it using Fraunhofer's MP3Enc v3.1 to a 256kbit MP3 file using the '-qual 9' setting. I then proceeded to decode the track using various decoders. The decoders I tested were l3dec v2.74, Sonique aE4 (from v1.51.0) and two Winamp decoders, the first from v2.2 (the first release with the Fraunhofer codec) and the second from v2.6 (Nitrane). I then compared the output WAV files to discover any potential differences! To compare the audio files, I found a suitably complicated 10-second portion of audio in the original WAV file, then identified by inspection a suitable reference point at the start of this section, which turned out to be a particular peak in the waveform that was clearly identifiable. Using CoolEdit 2000 I marked the corresponding sections in the decoded WAVs to the exact sample. This allowed me to subtract one of the WAVs from the other and thereby do a direct comparison. My first discovery was that out of the four WAV files I had, three were almost exactly identical. The decoded audio from aE4 and the Fraunhofer WinAmp codec was byte-by-byte identical with that from l3dec apart from the occasional 1-bit quantization error (v occasional - about 2 or 3 a second I'd guess). However the Nitrane WAV, whilst identical in almost every respect and certainly identical below 13kHz, showed differences in the 13khz-16khz band. These differences appeared in the subtracted audio as single isolated spectral components, of very short duration (perhaps 0.05s) and constant frequency. They were distributed quite evenly between the left and right channels, maybe 5 per channel per second. Each had an amplitude of perhaps -60db. The question now was whether these were a) components missing from l3dec's output; b) components missing from nitrane's output; c) components present in both but at different amplitudes or d) something else. A little detective work was in order. I put CEP 2000 into spectral view and captured the spectrums into Paint Shop Pro, where I could subract then from each other as images. What I discovered was that the components were always present in both, but were either at different amplitudes, or at slightly different positions - the nitrane components were roughly 50/50 too far ahead or too far behind the l3dec components. This is clearly a bug, either in fraunhofer's code or nitrane's code. I could not hear the differences (untrained ear) nor could I verify which was more 'correct' to the mp3 format since I know nothing of this. My immediate conclusion would be that Nitrane has a bug that is causing these errors. However, since Nullsoft have licensed Fraunhofer's mp3 decoding code already, for version v2.2, and since the v2.6 Nitrane decoder's about box still has a panel crediting the mp3 decoder license to Fraunhofer, why would Nullsoft exchange a perfectly good piece of Fraunhofer code for Nitrane code that produces these bugs? Are these bugs actually original bugs in the ISO implementation upon which presumably Fraunhofer's code is based? Are these differences worry-worthy? Hope this is of interest to somebody. I also did some encoder quality tests and discovered that I could not coax MP3ENC to encode the 16-22kHz band particularly well - it would occasionally code components up to 20kHz but in places where it mattered, for example drum attacks, it seemed not to bother. LAME 3.70 did much better in this area. As I can hear some components above 16kHz and since LAME is about 10 times faster on my machine I'm sticking with LAME. Nice work guys :) If anybody's really interested I'll put up some pictures of the results somewhere. The basic conclusion is: there is no major difference between any of the MP3 decoders out there, except to say that that WinAmp's EQ sucks bigtime. They all have the same frequency response. Matthew -- MP3 ENCODER mailing list ( http://geek.rcc.se/mp3encoder/ )