Struktur File Wave
Aplikasi multimedia seperti diketahui memerlukan
manajemen penyimpanan dari sejumlah jenis data yang bervariasi, termasuk bitmap, data audio, data video,
informasi mengenai kontrol device
periperal. RIFF menyediakan suatu cara untuk menyimpan semua jenis data
tersebut. Tipe data pada sebuah file
RIFF dapat diketahui dari ekstensi filenya.
Sebagai contoh jenis-jenis file yang
disimpan dalam bentuk format RIFF adalah sebagai berikut:
1.
Audio/visual
interleaved data (.AVI)
2.
Waveform data
(.WAV)
3.
Bitmapped data
(.RDI)
4.
MIDI information
(.RMI)
5.
Color palette (.PAL)
6.
Multimedia Movie
(.RMN)
7.
Animated cursor (.ANI)
Pada saat ini, file *.AVI merupakan satu-satunya jenis file RIFF yang telah secara penuh diimplementasikan menggunakan
spesifikasi RIFF. Meskipun file *.WAV
juga menggunakan spesifikasi RIFF, karena struktur file *.WAV ini begitu sederhana maka banyak perusahaan lain yang
mengembangkan spesifikasi dan standar mereka masing-masing.
Format file
WAVE seperti yang diketahui, merupakan bagian dari spesifikasi RIFF Microsoft
yang digunakan sebagai penyimpan data
digital audio. Format file ini
merupakan salah satu format file audio
pada PC. Seiring dengan popularitas Windows maka banyak aplikasi yang mendukung
format file ini.
Karena
bekerja pada lingkungan Windows yang menggunakan prosesor Intel, maka format data dari file WAVE disimpan dalam
format urutan little-endian (least significant byte) dan sebagian
dalam urutan big-endian.
File
WAVE menggunakan struktur standar RIFF yang mengelompokkan isi file (sampel format, sampel digital audio, dan lain sebagainya) menjadi “chunk” yang terpisah, setiap bagian mempunyai header dan byte data
masing-masing. Header chunck menetapkan jenis dan ukuran dari byte data chunk. Dengan metoda
pengaturan seperti ini maka program yang tidak mengenali jenis chunk yang khusus dapat dengan mudah
melewati bagian chunk ini dan
melanjutkan langkah memproses chunk
yang dikenalnya. Jenis chunk tertentu
mungkin terdiri atas sub-chunk.
Sebagai contoh, pada gambar 2.3 dapat dilihat chunk “fmt ” dan “data” sebenarnya merupakan sub-chunk dari chunk “RIFF”.
Chunk pada file RIFF merupakan suatu string
yang harus diatur untuk tiap kata. Ini berarti ukuran total dari chunk harus merupakan kelipatan dari 2 byte (seperti 2, 4, 6, 8 dan
seterusnya). Jika suatu chunk terdiri
atas jumlah byte yang ganjil maka
harus dilakukan penambahan byte (extra padding byte) dengan menambahkan
sebuah nilai nol pada byte data
terakhir. Extra padding byte ini
tidak ikut dihitung pada ukuran chunk.
Oleh karena itu sebuah program harus selalu melakukan pengaturan kata untuk
menentukan ukuran nilai dari header
sebuah chunk untuk mengkalkulasi offset dari chunk berikutnya.

Gambar
2.3 Layout File Wave