VBR compatibility test
In this test, we check if each decoder will fully decode a variable bit rate file.
Common problems include not being able to decode any VBR file, or only decoding certain types.
What are the important results of this test?
- About 1/4 of these decoders fails this test
- VBR files are more compatible if the bit-rate doesn't fall below 128kbps
- The Quicktime Player skips when trying to play each mp3 file, but just clips the end when decoding to .wav.
- Decoders shown in orange will cut SEVERAL seconds off the end of your file - useless!
- Decoders shown in yellow pass this test, apart from clipping the end off the file (see previous test).
Do we care?!
If you have no variable bitrate mp3 files, then you could argue that this test doesn't matter. However, VBR files are becoming increasingly popular, as they yield a lower bitrate for a given sound quality. If you're downloading music from the internet, the next file you get may be encoded using VBR. Decoders that don't support them are sub-standard and out-of-date.
If you're using a decoder that doesn't support VBR files, it's strongly recommended that you change to one that does.
How was this test carried out?
Two wave files were created. Both contained various test signals (including tones and music) but the second file also contained long silences. CEP FhG and lame were used to encode the files at a variable bitrate. The three different lame encodes are as follows:
V1 = VBR file, any bit rate allowed
V1 -b = VBR file, bit rate held at 128kbs or above unless encoding silence
V1 -b -F = VBR file, bit rate held at 128kbps or above even during silence
The resulting mp3 files were then decoded by the programs under test. If the file did decode (some didn't!) it was listened to, and graded accordingly. Files that appeared OK were checked for completeness as described in the previous test.
Is this test reliable?
VBR=Variable bit rate. The bit rate varies depending on the signal! So the whole thing is signal dependent. A test signal (test file 2) containing large amounts of silence (as well as music) was used, since this yields an mp3 file where the bitrate varies greatly. Such a file offers the greatest challenge to an incompatible decoder, and some failed. However, a normal music file (test file 1), where the variations in bitrate are not so great, may decode OK using a decoder which failed on the challenging file. Even though a particular decoder failed on test file 2, it may decode your music files fine. The tests presented here represent a worst case scenario.
- What is VBR?
VBR stands for Variable Bit Rate. The bit rate of a coded audio file is the number of bits (binary digits - 0s or 1s - bits of digital information) that are required to store 1 second of audio. An mp3 at 128kbps requires 128,000 (ish!) bits to store 1 second of audio. The point of psychoacoustic coding is that you only store the audible part, but just how much information is needed to represent the audible part varies from 1 moment to the next. Silence doesn't contain very much information at all - rather than storing thousands of zeros, you could just store a code meaning "so many seconds of silence".
A Variable bitrate coder will vary the bit rate, depending on how much information is needed to store the audible part of a signal from moment to moment. If a decoder expects the same number of bits every second, this can really confuse it!
- VBR is a new thing - why criticise decoders that haven't caught up yet?
A valid mp3 decoder must handle variable bitrate files. This was specified in the original standards document in 1993. For MPEG-1 or -2 layer 2, variable bitrate decoding is optional - for layer 3, it is mandatory.
- What's all these different lame results?
is a command-line encoder (it runs in DOS). You can specify literally hundreds of different options. The ones which relate to variable bit rate include:
-Vx = overall quality (these tests used x=1 where 0=best 9=worst),
-b128 = lowest allowed bitrate (these tests used -b128 when "-b" is specified),
-F = force lowest bitrate limit (these tests used -F when "-F" is specified).
The meaning of these VBR options is explained above in "How was this test carried out?". In addition, all lame encodes were carried out using -h (high quality).
- Some decoders sound OK with VBR files, but don't display the time correctly while decoding - did you test this?
In short, no! There is an unofficial tag that can be included in an mp3 to tell the decoder to true duration of a VBR file, but not all decoders understand it. However, we didn't test this feature.
- Where to now?