Rabu, 02 Mei 2012

MPEG Audio Layer I/II/III frame header


            Sebuah file audio MPEG dibangun dari bagian-bagian kecil yang disebut sebagai frame. Secara umum, frame adalah sebuah item independent. Setiap frame memiliki header dan informasi audio tersendiri. Karena tidak ada file header , Anda dapat memotong part manapun dari sebuah file MPEG dan memainkannya tanpa masalah (sebaiknya dilakukan dalam batas-batas frame, akan tetapi sebagian besar aplikasi dapat menangani incorrect header). Namun, untuk layer III, tidak akan 100% tepat. Dikarenakan organisasi data internal dalam file MPEG layer III, frame-frame seringkali bergantung satu sama lain dan tidak dapat dipotong sembarangan.
            Ketika Anda ingin membaca informasi mengenai sebuah file MPEG, biasanya cukup dengan mencarinya pada frame pertama, baca headernya dan anggap frame-frame lainnya adalah sama. Tetapi kasusnya tidak selalu demikian. Variable Bit Rate pada file MPEG mungkin digunakan sehingga akan mengakibatkan Bitrate Switching, hal ini berarti Bitrate akan berubah-ubah tergantung dari content pada tiap frame. Dengan cara ini Bitrate lebih rendah mungkin akan digunakan pada frame yang tidak mempengaruhi kualitas suara.
Frame header terdapat pada 4 byte (32 bits) awal sebuah frame. Sebelas bit pertama (atau dua belas bit pertama, lihat tabel di bawah mengenai frame sync) dari sebuah frame header selalu di-set dan bit-bit ini dinamakan “frame sync”. Oleh karena itu, Anda dapat mencari dalam sebuah file dimana frame sync pertama kali terjadi (artinya bahwa Anda harus menemukan sebuah byte dengan nilai 255, dan diikuti dengan byte dengan tiga (atau empat) ‘most-significat-bit-set’-nya. Lalu Anda dapat membaca keseluruhan header dan memeriksa apakah nilainya sudah benar. Anda dapat melihat tabel berikut mengenai arti tiap-tiap bit dalam header. Nilai-nilai yang ditetapkan sebagai ‘reserved’, ‘invalid’, ‘bad’ atau ‘not allowed’ mengindikasikan header yang invalid.
            Frame-frame juga mungkin memiliki pengecekan CRC. CRC adalah bit-bit sepanjang 16 bit, jika ada, di belakang frame header. Setelah CRC, selanjutnya adalah data audio. Dengan demikian, Anda dapat menghitung CRC dari sebuah frame kemudian membandingkannya dengan yang Anda baca dari file. Metode ini sebenarnya sangat baik untuk memeriksa validitas frame MPEG.
            Berikut ini adalah penjelasan mengenai isi dari header. Karakter dari A sampai M digunakan untuk menandai bagian-bagian yang berbeda. Dalam tabel di bawahnya, Anda dapat melihat isi dari tiap-tiap bagian.

AAAAAAAA AAABBCCD EEEEFFGH IIJJKLMM


Tanda
Panjang (bit)
Posisi (bit)
Deskripsi
A
11
(31-21)
Frame Sync (semua bit di-set)
B
2
(20-19)
MPEG Audio version ID (ID versi MPEG Audio)
00 – MPEG versi 2.5 (tidak resmi)
01 – reserved
10 – MPEG versi 2 (ISO/IEC 13818-3)
11 – MPEG versi 1 (ISO/IEC 11172-3)

Catatan : MPEG versi 2.5 bukan merupakan standar resmi. Ini adalah sebuah ekstensi dari standar yang digunakan pada file dengan bitrate sangat rendah. Jika decoder Anda tidak mendukung ekstensi ini, Anda disarankan menggunakan 12 bit untuk sinkronisasi, bukan 11 bit.
C
2
(18,17)
Layer description
 00 - reserved
 01 - Layer III
 10 - Layer II
 11 - Layer I
D
1
16
Protection bit (Bit proteksi)
 0 – Diproteksi dengan CRC (16 bit CRC akan mengikuti header)
 1 – Tidak terproteksi
E
4
(15,12)
Indeks Bitrate


bits V1,L1 V1,L2 V1,L3 V2,L1 V2, L2 & L3
0000 free free free free free
0001 32 32 32 32 8
0010 64 48 40 48 16
0011 96 56 48 56 24
0100 128 64 56 64 32
0101 160 80 64 80 40
0110 192 96 80 96 48
0111 224 112 96 112 56
1000 256 128 112 128 64
1001 288 160 128 144 80
1010 320 192 160 160 96
1011 352 224 192 176 112
1100 384 256 224 192 128
1101 416 320 256 224 144
1110 448 384 320 256 160
1111 bad bad bad bad bad


Catatan : Semua nilai dalam kbps
 V1 - MPEG versi 1
 V2 - MPEG versi 2 and versi 2.5
 L1 - Layer I
 L2 - Layer II
 L3 - Layer III

“free” berarti format bebas. Jika bitrate tetap yang benar (beberapa file tidak dapat menggunakan variable bitrate) berbeda dengan yang tertulis pada tabel di atas, maka harus ditentukan sendiri oleh aplikasi. Hal ini mungkin hanya akan diterapkan untuk kepentingan internal karena aplikasi pihak ketiga tidak ditujukan untuk mencari bitrate yang benar. Namun bagaimanapun, hal ini bukan tidak mungkin untuk dilakukan namun membutuhkan banyak usaha.

"bad" berarti bukan nilai yang diizinkan.
File MPEG mungkin memiliki Variable Bit Rate (VBR). Tiap frame mungkin dibuat dengan bitrate yang berbeda. Ini dapat digunakan pada semua layer. Decoder untuk layer III harus mendukung metode ini. Dekoder untuk layer I dan layer II mungkin sudah mendukung.

Untuk Layer II ada beberapa kombinasi bitrate dan mode yang tidak diperbolehkan. Berikut ini adalah daftar kombinasi yang diizinkan :


bitrate
single channel
stereo
intensity stereo
dual channel
free
yes
yes
yes
yes
32
yes
no
no
no
48
yes
no
no
no
56
yes
no
no
no
64
yes
yes
yes
yes
80
yes
no
no
no
96
yes
yes
yes
yes
112
yes
yes
yes
yes
128
yes
yes
yes
yes
160
yes
yes
yes
yes
192
yes
yes
yes
yes
224
no
yes
yes
yes
256
no
yes
yes
yes
320
no
yes
yes
yes
384
no
yes
yes
yes
F
2
(11,10)
Sampling Rate Frequency Index (nilai dalam Hz)
bits MPEG1 MPEG2 MPEG2.5
00 44100 22050 11025
01 48000 24000 12000
10 32000 16000 8000
11 reserv. reserv. reserv.
G
1
9
Padding bit (bit lapisan)
 0 - frame tidak berlapis
 1 - frame berlapis, dengan satu extra slot

Padding digunakan untuk mencocokkan bit rate secara tepat. Sebagai contoh : 128k 44.1kHz layer II menggunakan sebagian besar 418 byte dan beberapa 417 byte frame untuk mendapatkan 128k bitrate secara tepat. Untuk layer I slot adalah sepanjang 32 bit, untuk layer II dan layer III slot sepanjang 8 bit
H
1
8
Private bit.
Dapat digunakan dengan bebas untuk kebutuhan spesifik aplikasi.
I
2
(7,6)
Channel Mode
 00 - Stereo
 01 - Joint stereo (Stereo)
 10 - Dual channel (2 mono channels)
 11 - Single channel (Mono)

Catatan :
File Dual-Channel dibuat dari dua independen mono channel. Setiap channelnya menggunakan tepat setengah dari bitrate file. Sebagian besar decoder menghasilkan keluaran stereo, tetapi tidak selalu demikian.
Salah satu contoh kegunaanya adalah menampung dua percakapan dalam dua bahasa yang berbeda dalam bitstream yang sama, dan decoder yang baik akan men-decode hanya bahasa yang dipilih.
J
2
(5,4)
Mode extension (Hanya dipakai dalam mode Joint stereo)
Mode extension dipakai untuk menggabungkan informasi yang tidak digunakan untuk efek stereo, untuk mengurangi pemakaian bits. Bits ini dikenali secara dinamis oleh sebuah encoder dalam Joint stereo mode, dan Joint Stereo dapat diganti dari satu frame ke frame yang lain, bahkan dihidupkan ataupun dimatikan.
Range frekuensi dalam file MPEG dibagi ke dalam beberapa subbands. Terdapat 32 subbands. Untuk Layer I & II, 2 bits ini menentukan range frekuensi (bands) dimana intensity stereo diterapkan. Untuk Layer III, 2 bits ini menentukan tipe joint stereo yang digunakan ( intensity stereo atau m/s stereo). Range frekuensi ditentukan dengan algoritma dekompresi.
Layer I and II
Layer III
value
Layer I & II
00
bands 4 to 31
01
bands 8 to 31
10
bands 12 to 31
11
bands 16 to 31
Intensity stereo
MS stereo
off
off
on
off
off
on
on
on
K
1
(3)
Copyright
0 - Audio tidak memiliki copyright
1 - Audio memiliki copyright

Copyright memiliki arti yang sama seperti dalam copyright bit CD dan tape DAT, yang menjelaskan legalitas pengkopian.
L
1
(2)
Original
0 - Salinan dari original media
1 - Original media

Original bit mengindikasikan keoriginalan media.
M
2
(1,0)
Emphasis
00 - tidak ada
01 - 50/15 ms
10 - tidak ada
11 - CCIT J.17

Indikasi ini memberitahu decoder bahwa sebuah file harus di-deemphasize, yang artinya decoder harus mengatur suara dari gangguan seperti Dolby noise. Namun ini jarang digunakan.


Tidak ada komentar:

Posting Komentar