Skip to content

MP3 Structure

This is included in the files with SoloH's encoder:

FILE STRUCTURE AUDIO MPEG FILE
-------------------------------------------------------------------------
filea file has one or more 'frames'.

a frame has a 'frame header' and 'frame data'
-------------------------------------------------------------------------
frame length

the frame length depends on the format and can vary per frame.
the frame ends before the next sync header (see frame header).
-------------------------------------------------------------------------
frame header

the frame header of an audio mpeg file consist of 4 bytes, which
are at the beginning of a frame. They don't have to be the same
for every frame. (p.e. the bit 'padding' can change per frame)

byte 0 1 2 3
binary 11111111 1111abbc ddddeefg hhjjkmpp

1 - sync header
a - version
b - layer
c - error protection
d - bit rate index
e - sample rate index
f - padding
g - extension
h - channel mode
j - mode extension
k - copyright
m - original
p - emphasis
-------------------------------------------------------------------------
1 - sync header

must be 11111111 1111xxxx ($fffx)
-------------------------------------------------------------------------
a - version

0 = mpg-ii
1 = mpg-i
-------------------------------------------------------------------------
b - layer

0 = layer-1
3 = layer-2
2 = layer-3
-------------------------------------------------------------------------
c - error protection

0 = on
1 = off
-------------------------------------------------------------------------
d - bit rate

mpg-i
(hex) bps@38kHz bps@44.1kHz bps@48kHz
$0 0 0 0
$1 32 32 32
$2 64 48 40
$3 96 56 48
$4 128 64 56
$5 160 80 64
$6 192 96 80
$7 224 112 96
$8 256 128 112
$9 288 160 128
$a 320 192 160
$b 352 224 192
$c 384 256 224
$d 416 320 256
$e 448 384 320

mpg-ii
(hex) bps@16kHz bps@22kHz bps@24kHz
$0 0 0 0
$1 32 8 8
$2 48 16 16
$3 56 24 24
$4 64 32 32
$5 80 40 40
$6 96 48 48
$7 112 56 56
$8 128 64 64
$9 144 80 80
$a 160 96 96
$b 176 112 112
$c 192 128 128
$d 224 144 144
$e 256 160 160
-------------------------------------------------------------------------
e - sample rate

mpg-i mpg-ii (version)
0 = 44.1 kHz 22 kHz
1 = 48 kHz 24 kHz
2 = 38 kHz 16 kHz
-------------------------------------------------------------------------
f - padding

1 = unused bits are filled (padding required)
0 = all bits in frame are used
-------------------------------------------------------------------------
g - extension

0 = none
1 = private
-------------------------------------------------------------------------
h - channel mode

0 = stereo
1 = joint stereo
2 = dual channel
3 = mono
-------------------------------------------------------------------------
j = mode extension

when encoding with joint stereo, this specifies to which req.band
it is bound.

layer-1&2 layer-3
0 = 4 0
1 = 8 4
2 = 12 8
3 = 16 16
-------------------------------------------------------------------------
k - copyright

0 = no
1 = yes
-------------------------------------------------------------------------
m - original

0 = no
1 = yes
-------------------------------------------------------------------------
p - emphasis

0 = none
1 = 50/15 microseconds
3 = CITT j.17