Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

VBR decoding info

57 views
Skip to first unread message

Scott Bueffel

unread,
Aug 13, 2002, 5:20:45 PM8/13/02
to
I am looking for information on how to decode a VBR header. I know
someone who is reading the X number of frames to determine the average
VBR quality\song length. I told him to read the header to determine
that, but he doesn't know how to do that. Where is that information
documented? Thanks.

Mathew Hendry

unread,
Aug 13, 2002, 6:24:58 PM8/13/02
to
On 13 Aug 2002 14:20:45 -0700, bueffe...@cnf.com (Scott Bueffel)
wrote:

Xing designed the original VBR header, and they have an SDK on their
web site (http://www.xingtech.com/developer/mp3)

LAME produces an expanded VBR header that is backwards-compatible with
Xing's design; you should be able to find documentation on the LAME
web site (http://www.mp3dev.org). If not, ask on the mp3encoder or
lame-dev mailing lists.

Fraunhofer designed an incompatible "VBRI" header format when they
started supporting VBR encoding, but AFAIK they still haven't bothered
to document it. I partially decoded it a while ago, though - the below
should be enough for your purposes - all you need is the frame count
and file size.

Fraunhofer VBRI header format

0x0000 \
0x0001 |_______ MPEG header (160kbit/s, stereo)
0x0002 |
0x0003 /
0x0004 0x00 empty

...... .... ... .....

0x0023 0x00 empty
0x0024 0x56 'V'
0x0025 0x42 'B'
0x0026 0x52 'R'
0x0027 0x49 'I'
0x0028 0x00 ? version
0x0029 0x01 ? version
0x002a 0x09 \___encoder delay (value here correct for FhG VBR)
0x002b 0x31 /
0x002c 0x00 ? quality (high byte)
0x002d quality (1-100)
0x002e \
0x002f |_______ file length in bytes
0x0030 |
0x0031 /
0x0032 \
0x0033 |_______ file length in frames
0x0034 |
0x0035 /
0x0036 \_______ number of seek offsets
0x0037 /
0x0038 0x00 ?
0x0039 0x01 ?
0x003a 0x00 ?
0x003b 0x02 ?
0x003c \_______ offset "stride" (number of frames between offsets)
0x003d /
0x003e \_______ seek offset 0 (from beginning of this header)
0x003f /
0x0040 \_______ seek offset 1 (from previous offset)
0x0041 /

...... .... ... .....

0x0208 \_______ seek offset n (from previous offset)
0x0209 /

-- Mat.

0 new messages