DAFTAR REFERENSI [APP08] Apple. 2008. Tanggal akses 10 Mei 2008. [BER08] Berkeley Multimedia Research Center. 2008. Tanggal akses 10 Mei 2008. [CAN08] Canopus. 2008. Tanggal akses 8 Mei 2008. [CCI93] CCITT. 1993. Digital Compression and Coding of Continuous-Tone Still Images - Requirements and Guidelines. ITU. [COO08] CoolUtils. 2008. Tanggal akses 10 Mei 2008. [DIG08] DigitalExpert. 2008. Tanggal akses 10 Mei 2008. [DIS08] Discovery Scientific. 2008. Tanggal akses 10 Mei 2008. [EFF08] Effect Matrix Inc. 2008. Tanggal akses 11 Juni 2008. [INS08] InfoSysSec. 2008. Tanggal akses 10 Mei 2008. [JOH98] Johnson, Neil F. Jajodia, Sushil. 1998. Exploring Steganography: Seeing The Unseen. IEEE. [LIN06] Lindsey, Clark S. 2006. Tanggal akses 10 Mei 2008.
xi
[MAC08] Macinta, Timothy W. 2008. Tanggal akses 2 Juni 2008. [MAT08] Matroska Development Team. 2008. Tanggal akses 10 Mei 2008. [MED05] Medford, Mitchell. 2005. Tanggal akses 10 Mei 2008. [MCW07] MediaCoderWiki. 2007. Tanggal akses 10 Mei 2008. [MIC07] Microsoft. 2007. Tanggal akses 10 Mei 2008. [SOP08] Sophomore College. 2008. Tanggal akses 18 Mei 2008 [WAN08] Wang, Zhou. 2008. Tanggal akses 5 Juni 2008 [YOS01] Yonata, Yosi. 2001. Pemampatan Data Video Untuk Aplikasi Videophone dan Multimedia Over IP. Indonesia: Elex Media Komputindo.
xii
DAFTAR PUSTAKA [3GP07] 3rd Generation Partnership Project. 2007. Transparent end-to-end packet switched streaming service (PSS) 3GPP file format (3GP). France. [ITU05] International Telecommunication Union. 2005. ITU-T Recommendation H.263: "Video coding for low bit rate communication". [MUN06] Munir, Rinaldi. 2006. Diktat Kuliah IF5054 Kriptografi. Indonesia: Institut Teknologi Bandung. [ROB04] Krenn, Robert. 2004. Steganography and Steganalysis: Chapter 1. [WAN04] Wang et.al., Zhou. 2004. Image Quality Assessment: From Error Visibility to Structural Similarity. IEEE.
xiii
LAMPIRAN A VIDEO 3GP Video 3GP merupakan sebuah multimedia container format, yang diciptakan oleh 3GPP. Berikut ini adalah pembagian profil pada 3GP, serta struktur file di dalamnya [3GP07].
A.1
Profil
Terdapat lima buah profil yang terdefinisi pada video 3GP, dimana masing-masing profil akan memiliki struktur yang berbeda. Sebuah profil memiliki tipe yang dinamakan dengan brand. Terdapat dua jenis brand yang terdefinisi pada setiap video 3GP, yaitu major brand dan compatible brands. Major brand adalah brand yang paling cocok dipakai untuk mengidentifikasikan dan melakukan decode video tersebut, sedangkan compatible brands adalah kumpulan brand lain yang juga cocok, namun hanya digunakan apabila decoder tidak mendukung major brand. 1. Basic profile (3gp4, 3gp5, 3gp6, 3gp7) Profil ini ditujukan untuk keperluan pengiriman melalui MMS, download, atau untuk dimainkan secara lokal. Video 3GP yang dibuat melalui rekaman mobile phone, atau video hasil encoding dari perangkat lunak pada komputer, biasanya akan memiliki jenis profil ini. 2. Streaming-server profile (3gp6, 3gp7) Profil ini ditujukan untuk keperluan streaming, yaitu dapat menonton secara langsung suatu video 3GP dari streaming-server. Video 3GP dengan profil ini akan menjamin keterurutan video, yaitu antara streaming-server dengan isi video yang sedang di-stream. 3. Progressive-download profile (3gs6, 3gs7) Video 3GP dengan profil ini akan dapat di-download secara progressive, yaitu video yang sedang di-download tetap dapat dimainkan secara penuh meskipun proses download belum selesai. Kualitas video tersebut akan sebanding dengan kemajuan proses download, dimana kualitas yang terbaik akan dicapai apabila prosesnya sudah selesai.
A-1
A-2 4. Extended-presentation profile (3ge6, 3ge7) Profil ini ditujukan untuk keperluan presentasi seperti slideshow, sehingga dapat menyimpan berbagai jenis media seperti gambar, suara, video atau tulisan. Video yang dihasilkan nantinya dapat menyimpan informasi semua gambar yang muncul beserta durasi tiap gambar, tulisan yang muncul atau latar suara yang akan dimainkan pada gambar tertentu. 5. General profile (3gg6, 3gg7) Video 3GP yang tidak termasuk keempat profil diatas, akan dimasukkan ke dalam general profile. Profil ini biasanya bersifat sementara, dan akan dilakukan pemilihan profil baru setelah ditentukan apa tujuan dari pembuatan video tersebut yang lebih cocok. Sebagai contoh, sebuah video 3GP belum ditentukan apakah akan dikirimkan melalui MMS, atau akan di-upload ke server untuk keperluan streaming, sehingga diberikan profil ini terlebih dahulu. Setelah video tersebut dilakukan penyusunan ulang dan menyesuaikannya dengan keperluan streaming, maka dilakukan penggantian profil menjadi streaming-server profile.
A.2
Struktur File
Format file yang digunakan pada video 3GP menggunakan struktur ISO base media file format, yaitu format file untuk audio-visual yang telah distandarkan oleh ISO dan IEC. Format ini memiliki struktur file berorientasi objek, dimana tiap isinya terkumpul dalam objek yang dinamakan dengan box. Jenis box yang mengandung box lain disebut sebagai container box. Tiap box memiliki header yang terdefinisi pada awal box, yang berisikan ukuran dan tipe dari box tersebut. Ukuran box pada header berisi ukuran semua data yang terkandung dalam box, yaitu header itu sendiri, isi data, atau jumlah ukuran box lain di dalamnya. Sedangkan tipe box pada header adalah 4 buah karakter yang unik, dan digunakan untuk mengidentifikasi bagaimana cara membaca box tersebut. Pada Gambar A-1 terdapat contoh struktur file yang umum ditemui pada file video 3GP dengan Basic Profile. Judul box yang dicetak tebal merupakan container box, sedangkan sisanya merupakan box biasa yang berisikan data. Berikut adalah penjelasan box yang berisikan data tersebut:
A-3
Gambar A-1 Struktur file pada video 3GP
1. File Type Box (ftyp) Berisi informasi brand yang paling sesuai (major brand), beserta daftar brand lainnya yang masih cocok dengan video tersebut (compatible brands). Major brand juga ikut dimasukkan ke dalam compatible brands, sehingga dalam daftar tersebut major brand akan memiliki kecocokan yang paling sesuai. 2. Media Data Box (mdat) Berisi informasi media dari video, yaitu seluruh video frame dan audio frame yang ditampilkan. Format dari isi box ini tergantung pada jenis video dan audio codec yang didefinisikan pada Sample Description Box, sedangkan lokasi dari masing-masing frame terdapat pada Chunk Offset Box.
A-4 3. Movie Header Box (mvhd) Berisi informasi dari video seperti waktu pembuatan file (creation time), waktu terakhir modifikasi file (modification time), satuan waktu (1 untuk detik, 1000 untuk milidetik, dst.), durasi video berdasarkan satuan waktu, serta volume suara. 4. Track Header Box (tkhd) Berisi informasi dari track seperti waktu pembuatan track (creation time), waktu terakhir modifikasi file track (modification time), durasi track berdasarkan satuan waktu yang didefinisikan pada Movie Header Box, volume suara, beserta nomor identitas track. Biasanya hanya terdapat 2 buah track pada file, yaitu video track dan audio track. 5. Media Header Box (mdhd) Berisi informasi dari media seperti waktu pembuatan media (creation time), waktu terakhir modifikasi media (modification time), satuan waktu, durasi media berdasarkan satuan waktu. 6. Handler Reference Box (hdlr) Berisi informasi jenis media pada track yang direpresentasikan dalam Media Box. Terdapat dua tipe yang umum yang digunakan, yaitu video track (vide) atau audio track (soun). 7. Video Media Header Box (vmhd) Berisi informasi komponen warna dasar (merah, hijau, biru) yang digunakan. 8. Sound Media Header Box (smhd) Berisi informasi keseimbangan suara pada stereo. Nilai 0 untuk center, -1 untuk kiri penuh, dan 1 untuk kanan penuh. 9. Sample Description Box (stsd) Berisi informasi dari video dan audio codec akan digunakan, untuk proses inisialisasi pada saat membaca video tersebut. Informasi pada codec ini disebut juga dengan sample entry box. Pada video 3GP, video codec yang terdefinisi adalah MP4VisualSampleEntry untuk MPEG-4, H263SampleEntry untuk H.263, dan AVCSampleEntry untuk H.264/AVC. Sedang\kan audio codec yang terdefinisi
A-5 adalah MP4AudioSampleEntry untuk MPEG-4 audio, AMRSampleEntry untuk AMR, dan AMRWPSampleEntry untuk AMR Wideband. 10. Sync Sample Box (stss) Berisi informasi jumlah sample yang merupakan random access point, beserta nomor urutan sample tersebut. Apabila box ini tidak ada, maka semua sample adalah random access point. 11. Sample Size Box (stsz) Berisi informasi berapa jumlah sample yang ada pada media, beserta ukuran tiaptiap sample. 12. Chunk Offset Box (stco) Berisi informasi dari offset tiap-tiap chunk. Posisi offset disini terhitung dari awal file, bukan dari awal suatu box.
LAMPIRAN B VIDEO CODEC H.263 Video codec H.263 merupakan format video yang diciptakan oleh ITU-T, yaitu video terkompresi yang memiliki bit-rate rendah sehingga cocok dipakai pada keperluan transmisi network, seperti video conference. Versi pertama H.263 dirilis pertama kali pada tahun 1996, dan sudah mengalami 2 kali perubahan definisi yaitu pada tahun 1998 dan tahun 2000. Perubahan yang dilakukan sebagian besar adalah menambah fitur, baik yang merupakan perbaikan fitur pada versi sebelumnya, atau fitur yang baru. Tiap perubahan tetap memperhatikan kompatibilitas terhadap versi sebelumnya, dengan cara menambahkan suatu header khusus sebagai penanda aktif atau tidaknya fitur-fitur tersebut, sehingga video dengan H.263 versi baru tetap dapat dimainkan pada video player yang belum mendukung versi tersebut.
B.1
Profil dan Level
Karakteristik dari video codec H.263 ditentukan sesuai dengan profil yang akan menentukan fitur-fitur apa saja yang didukung video tersebut, dan level yang mengatur kapabilitas performansi video seperti ukuran resolusi dan bitrate yang digunakan. Terdapat 9 buah profil yang terdefinisi pada H.263, yaitu: Profil 0: The Baseline Profile Profil 1: H.320 Coding Efficiency Version 2 Backward-Compatibility Profile Profil 2: Version 1 Backward-Compatibility Profile Profil 3: Version 2 Interactive and Streaming Wireless Profile Profil 4: Version 3 Interactive and Streaming Wireless Profile Profil 5: Conversational High Compression Profile Profil 6: Conversational Internet Profile Profil 7: Conversational Interlace Profile Profil 8: High Latency Profile Dan level pada H.263 berjumlah 8, yaitu: Level 10: QCIF, SQCIF. 64 kbps, 14,98 fps Level 20: CIF, QCIF, SQCIF. 128 kbps, 29,97 fps Level 30: CIF, QCIF, SQCIF. 384 kbps, 29,97 fps
B-1
B-2 Level 40: CIF, QCIF, SQCIF. 2048 kbps, 29,97 fps Level 45: QCIF, SQCIF. 128 kbps, 14,98 fps Level 50: standar CIF, custom. 4096 kbps, 59,94 fps Level 60: standar CIF, custom. 8192 kbps, 59,94 fps Level 70: standar CIF, custom. 16384 kbps, 59,94 fps Untuk pelaksanaan Tugas Akhir, digunakan video codec H.263 dengan Profil 0 (Baseline Profile) dan level 10. Baseline Profil hanya mendukung fitur pada versi awal dari video H.263, dan tidak terdapat pemakaian fitur-fitur tambahan. Sedangkan level 10 hanya mendukung resolusi sebesar 176 x 144 pixel (QCIF) dan 128 x 96 pixel (Sub-QCIF), dengan bitrate 64 kilobits per detik.
B.2
Encode
Proses encoding pada video H.263 dilakukan dengan cara membagi-bagi tiap frame ke dalam blok-blok yang lebih kecil, kemudian masing-masing blok akan diolah sesuai dengan jenis kompresi pada frame yang digunakan. Pembagian blok pada frame H.263 dapat terlihat pada Gambar B–1. Frame dibagi secara horizontal menjadi sekumpulan Group of blocks (GOB), dimana satu GOB memiliki tinggi 16 pixel. Tiap GOB terbagi lagi secara vertikal menjadi beberapa macroblock yang berukuran 16 x 16 pixel. Sebuah macroblock terdiri dari enam buah blok, yaitu empat buah luminance (Y) blok, dan 2 buah chrominance (Cb dan Cr), yang masing-masing berukuran 8 x 8 pixel. Pada bagian blok inilah yang nantinya akan dilakukan kompresi. Macroblock
Group of blocks (GOB)
Frame Block Y
Cb
Cr
Gambar B–1 Pembagian blok pada frame
B-3 Ada dua jenis kompresi yang digunakan, yaitu kompresi intraframe dan interframe. Frame yang dikompresi secara intraframe akan dilakukan dengan cara yang mirip pada kompresi gambar berformat JPEG. Sedangkan kompresi secara interframe akan dilakukan berdasarkan perubahan-perubahan yang terjadi dengan frame sebelumnya, sehingga cukup perubahan tersebut yang akan disimpan. 1. Kompresi Intraframe Proses kompresi ini mirip dengan teknik kompresi pada gambar berformat JPEG, dengan urutan langkah seperti berikut: a. Discrete Cosine Transform Proses mengubah domain sinyal gambar yang diterima, dari domain spasial ke domain frekuensi. Transformasi ini menghasilkan 64 buah koefisien untuk setiap blok, dimana terdapat sebuah koefisien DC dan 63 buah koefisien AC. b. Kuantisasi Proses memperkecil nilai pada matriks gambar, dengan membaginya sesuai dengan matriks kuantisasi. c. Run Length Encoding Proses mengubah suatu simbol yang berurutan menjadi suatu kode, yang terdiri dari simbol tersebut dan jumlah perulangannya. d. Variable Length Coding Proses mengkodekan simbol dengan kode-kode tertentu yang mempunyai panjang berlainan, dimana simbol yang sering muncul akan dikodekan dengan kode yang pendek, dan simbol yang jarang muncul akan dikodekan dengan kode yang panjang. Frame yang menggunakan kompresi intraframe disebut dengan I-frame atau Ipicture. 2. Kompresi Interframe Proses kompresi ini memakai metode motion estimation, yaitu memeriksa perubahan-perubahan yang terjadi pada suatu frame dengan frame sebelumnya sebagai referensi. Hasil akhirnya adalah motion vector, yang merupakan nilai dari pergeseran letak blok pada frame tersebut dan frame referensi. Frame yang menggunakan kompresi ini disebut dengan P-frame atau P-picture.
B-4
B.2
Struktur File
File video H.263 disusun sesuai dengan pembagian pada frame, yang disebut juga dengan layer. Pembagian layer ini dapat dilihat pada Gambar B–2. Layer paling luar adalah frame layer atau picture layer, dengan jumlah yang sama dengan jumlah frame pada video tersebut. Di dalam picture layer terdapat sejumlah GOB layer, yang berjumlah tinggi video dibagi dengan 16. Tiap GOB layer memiliki macroblok layer sebanyak lebar video dibagi dengan 16. Block layer merupakan layer paling dalam, dengan jumlah 6 buah pada masing-masing macroblock layer. Pada block layer inilah terdapat bit-bit yang merupakan hasil dari proses kompresi, baik secara intraframe maupun interframe. Berikut penjelasan singkat mengenai masing-masing layer: 1. Picture Layer Setiap frame akan memiliki sebuah picture layer, dimana berisi informasi frame tersebut seperti jenis frame (I-frame atau P-frame), ukuran resolusi frame, matriks kuantisasi yang digunakan, serta fitur-fitur apa saja yang aktif. Kode-kode yang dimiliki dalam picture layer adalah: a. Picture Start Code (PSC) Merupakan kode tetap sepanjang 22-bit yang tetap, sebagai header dari setiap picture layer, yaitu. 0000 0000 0000 0000 1000 00. b. Temporal Reference (TR) Merupakan nilai index frame yang digunakan sebagai reference frame pada proses kompresi interframe. Panjang bit dari TR adalah 8-bit, sehingga nilai index yang disimpan hanya sebanyak 8-bit LSB-nya saja. c. Type Information (PTYPE) Merupakan sekumpulan bit yang menyatakan tipe frame tersebut, seperti ukuran resolusi, jenis kompresi yang digunakan, dan penanda aktif atau tidaknya fitur-fitur. d. Quantizer Information (PQUANT) Merupakan penunjuk matriks kuantisasi manakah yang digunakan pada frame. Bit yang digunakan sepanjang 5-bit, dimana menyebabkan nilai penunjuk berkisar antara 1 hingga 31.
B-5
Picture Layer GOB Layer Macroblock Layer
Macroblock Layer
Macroblock Layer
Block Layer Y 1
Block Layer Y 1
Block Layer Y 1
Block Layer Y 2
Block Layer Y 2
Block Layer Y 2
Block Layer Y 3
Block Layer Y 3
Block Layer Y 3
Block Layer Y 4
Block Layer Y 4
Block Layer Y 4
Block Layer Cb
Block Layer Cb
Block Layer Cb
Block Layer Cr
Block Layer Cr
Block Layer Cr
...
GOB Layer Macroblock Layer
Macroblock Layer
Macroblock Layer
Block Layer Y 1
Block Layer Y 1
Block Layer Y 1
Block Layer Y 2
Block Layer Y 2
Block Layer Y 2
Block Layer Y 3
Block Layer Y 3
Block Layer Y 3
Block Layer Y 4
Block Layer Y 4
Block Layer Y 4
Block Layer Cb
Block Layer Cb
Block Layer Cb
Block Layer Cr
Block Layer Cr
Block Layer Cr
...
... Gambar B–2 Pembagian layer pada frame video H.263
2. GOB Layer Isi dari tiap GOB layer adalah nomor index dari GOB, nomor identitas GOB terhadap frame, dan matriks kuantisasi yang khusus digunakan dalam GOB ini. Penulisan GOB layer boleh untuk tidak dilakukan, tergantung dari encoder masing-masing. a. Group of Block Start Code (GBSC) Merupakan kode tetap sepanjang 17-bit yang tetap, sebagai header dari setiap GOB layer, yaitu. 0000 0000 0000 0000 1. b. Group Number (GN) Merupakan nomor index sepanjang 5-bit yang menunjukkan urutan GOB pada frame tersebut.
B-6 c. GOB Frame ID (GFID) Merupakan nomor identitas dari GOB, dimana GOB pada frame yang sama akan bernilai sama. Nilai ini memiliki panjang 2-bit. d. Quantizer Information (GQUANT) Merupakan nilai sepanjang 5-bit, untuk menandakan mana matriks kuantisasi yang digunakan pada frame. 3. Macroblock Layer Isi dari masing-masing layer ini adalah informasi mengenai pola nilai koefisien pada semua block layer di dalamnya, nilai motion vector, beserta matriks kuantisasi yang digunakan. a. Coded Macroblock Indication (COD) Khusus terdapat pada P-frame, yang menandakan apakah macroblock ini memiliki informasi lanjutan atau tidak. Jika bernilai 0, berarti terdapat informasi di dalam macroblock. Jika bernilai 1, maka tidak ada lagi informasi, dan layer ini dianggap sebagai P-frame dengan semua nilai motion vector adalah 0. b. Macroblock Type & Coded Block Pattern for Chrominance (MCBPC) Merupakan nilai VLC yang menunjukkan tipe macroblock, dan pola dari dua jenis blok chrominance. Tabel kode VLC MCBPC pada I-frame dan P-frame dapat dilihat pada Tabel-B1. dan Tabel B-2. Tipe macroblock akan menandakan ada atau tidaknya DQUANT, atau MVD. Sedangkan 2 bit pada kolom CBPC menandakan apakah terdapat koefisien TCOEF pada block layer, yaitu bit pertama untuk blok Cb dan bit kedua untuk blok Cr. Apabila bit bernilai 0, maka tidak terdapat TCOEF, sedangkan akan terdapat nilai TCOEF apabila bit bernilai 1. Tabel B-1 Kode VLC untuk MCBPC (I-frame)
c. Coded Block Pattern for Luminance (CBPY) Merupakan nilai VLC yang menunjukkan pola dari empat buah blok luminance, yang ditunjukkan pada Tabel B-3. 4-bit pada kolom CBPY menandakan apakah terdapat koefisien TCOEF pada block layer, yaitu bit pertama untuk blok Y1, bit kedua untuk blok Y2, bit ketiga untuk blok Y3, dan bit keempat untuk blok Y4. Apabila bit bernilai 0, maka tidak terdapat TCOEF, sedangkan akan terdapat nilai TCOEF apabila bit bernilai 1.
d. Motion Vector (MVD) Merupakan nilai VLC yang menunjukkan data motion vector pada frame, dan hanya terdapat pada P-frame. Pada video, nilai MVD disimpan dua kali, yaitu motion vector untuk arah horizontal dan vertikal. Tabel kode VLC dapat dilihat pada Tabel B-4. Vector berarti perbedaan letak antara blok pada frame referensi dengan frame saat ini; positif berarti ke kanan atau ke bawah, dan negatif berarti ke kiri atau ke atas. Tabel B-4 Kode VLC untuk MVD
e. Quantizer Information (DQUANT) Merupakan penanda dari matriks kuantisasi yang digunakan khusus pada macroblock ini, dan jika tidak diisi berarti menggunakan matriks kuantisasi yang didefinisikan pada layer di atasnya.
4. Block Layer Isi dari layer ini adalah kode dari hasil kompresi pada blok tersebut. Pada layer inilah terdapat nilai-nilai yang berhubungan langsung dengan bagian yang tampak pada frame.
a. DC Coefficient for INTRA Blocks (INTRA-DC) Merupakan kode FLC yang mengandung nilai koefisien DC, dengan panjang tetap sebanyak 8-bit. Koefisien DC yang disimpan berkisar antara -1024 hingga 1023, dan untuk dapat mendekati kisaran nilai koefisien ini, maka INTRA-DC hanya menyimpan setiap 8 nilai. INTRA-DC yang disimpan akan dibulatkan ke kelipatan 8 yang terdekat. Tabel kode FLC untuk INTRA-DC ditunjukkan pada Tabel B-5, dengan Reconstruction level adalah nilai koefisien DC. Dan untuk menghindari kesalahan proses decode, kode FLC „0000 0000‟ dan „1000 0000‟ tidak digunakan. Tabel B-5 Kode FLC untuk INTRA-DC
b. Transform Coefficent (TCOEF) Merupakan kode VLC yang menunjukkan nilai transform (koefisien AC) pada blok, yang dikodekan menggunakan entropy coding dengan zig-zag scanning. Ada atau tidaknya koefisien ini tergantung pada nilai MCBPC atau CBPY, untuk masing-masing blok chrominance dan luminance. Tabel kode VLC dapat dilihat pada Tabel B-6. Kode TCOEF merupakan gabungan dari 3 buah komponen, yaitu LAST, RUN, dan LEVEL. LAST merupakan penanda apakah koefisien bukan 0 yang terakhir (ditandai dengan bit 1) atau tidak (ditandai dengan bit 0). RUN menunjukkan berapa angka 0 yang mendahului koefisien ini, sedangkan LEVEL adalah nilai absolut dari koefisien AC. Nilai LEVEL nantinya juga akan dipetakan ke dalam kisaran -1024 hingga 1023. Bit terakhir dari kode VLC menunjukkan tanda positif/negatif nilai LEVEL; 0 untuk positif dan 1 untuk negatif. Terdapat sebuah kode VLC khusus yang dinamakan dengan ESCAPE, dimana komponen LAST, RUN, dan LEVEL harus didefinisikan secara manual. LAST dikodekan dengan 1-bit, sedangkan RUN dan LEVEL menggunakan kode VLC, seperti pada Tabel B-7 dan Tabel B-8. Tabel B-6 Kode VLC untuk TCOEF
Code Tidak dipakai pada Baseline Profile 1000 0001 1000 0010 .. 1111 1110 1111 1111 Tidak dipakai 0000 0001 0000 0010 .. 0111 1111
LAMPIRAN C KELAS PERANCANGAN Tabel C-1 Kelas XGPMIDlet
Atribut
Keterangan
embed extract form fileBrowser textField list textBox alert wait command task
Embed Extract Form FileBrowser TextField List TextBox Alert WaitScreen Command SimpleCancellableTask Keterangan Konstruktor Prosedur yang dijalankan saat aplikasi mulai diaktifkan Prosedur yang dijalankan saat aplikasi sedang terinterupsi
Prosedur yang dijalankan saat aplikasi dinonaktifkan Prosedur untuk menanggapi aksi yang terjadi bila Command dijalankan Prosedur untuk mengganti layar tampilan Prosedur untuk memberikan nilai awal pada atribut Prosedur untuk menghilangkan data yang sudah dimasukkan
Tabel C-2 Kelas Embed
Nama Atribut messageReady videoReady video message key
Tipe Boolean Boolean Video Message Key
Nama Operasi Embed() setVideoFileName(address: String)
Keterangan Konstruktor Prosedur untuk menyimpan alamat video
Keterangan Fungsi untuk mendapatkan alamat video Prosedur untuk menyimpan nama video keluaran Fungsi untuk mendapatkan nama video keluaran Prosedur untuk menyimpan informasi overwrite video keluaran Fungsi untuk mendapatkan informasi overwrite video keluaran Fungsi untuk mendapatkan pesan error pada saat validasi format Fungsi untuk mendapatkan alamat pesan Prosedur untuk menyimpan alamat pesan Prosedur untuk menyimpan teks pesan Fungsi untuk mendapatkan teks pesan Fungsi untuk mengetahui apakah pesan berbentuk file atau teks Prosedur untuk menyimpan string kunci Fungsi untuk mendapatkan string kunci Prosedur untuk menghilangkan data masukan Fungsi untuk mengetahui apakah semua input sudah dimasukkan Fungsi untuk melakukan validasi format video, yang mengembalikan true apabila valid Prosedur untuk membatalkan proses penyisipan, karena ukuran video yang tidak mencukupi Prosedur untuk menyelesaikan proses penyisipan Fungsi untuk melakukan penyisipan pesan, yang mengembalikan status proses
Tabel C-3 Kelas Extract
Nama Atribut
Tipe
video message key videoReady
Video Message Key Boolean
Nama Operasi Extract() setVideoFileName(address: String) getVideoFileName(): String getVideoMsgError(): Vector
Keterangan Konstruktor Prosedur untuk menyimpan alamat video Fungsi untuk mendapatkan alamat video Fungsi untuk mendapatkan pesan error pada saat validasi format
C-3 Nama Operasi getMessageText(): String getPassword(): String setPassword(nPassword: String) clear() allReady(): Boolean
Keterangan Fungsi untuk mendapatkan teks pesan Fungsi untuk mendapatkan string kunci Prosedur untuk menyimpan string kunci Prosedur untuk menghilangkan data masukan Fungsi untuk mengetahui apakah semua input sudah dimasukkan Fungsi untuk melakukan ekstraksi pesan, yang mengembalikan status proses ekstraksi Fungsi untuk melakukan validasi format video, yang mengembalikan true jika valid
videoExtract(): String videoAnalyze(): Boolean
Tabel C-4 Kelas Message
Nama Atribut type url fileName filePath status text messageBit headerBit fileConnection dataInputStream dataOutputStream sizeTotalMessage byteWritten counterMessageBit counterHeaderBit counterTotal Message Header Nama Operasi Message() openFileRead() closeFileRead() openFileWrite(nPath: String, nName: String): boolean closeFileWrite() writeText(x: Char)
Tipe Short String String String String StringBuffer StringBuffer StringBuffer FileConnection DataInputStream DataOutputStream Integer Integer Integer Integer Integer Byte[] Byte[] Keterangan Konstruktor Prosedur untuk membuka koneksi file pesan sebagai masukan Prosedur untuk menutup koneksi file masukan Fungsi untuk membuka koneksi file pesan sebagai keluaran, yang mengembalikan true jika berhasil terbuka Prosedur untuk menutup koneksi file keluaran Prosedur untuk menambahkan sebuah karakter ke dalam teks pesan keluaran
Keterangan Prosedur untuk menambahkan sebuah karakter ke dalam file pesan keluaran Prosedur yang mengatur penulisan sebuah karakter ke dalam pesan keluaran Fungsi yang mengembalikan sebuah karakter dari file pesan masukan Prosedur yang mempersiapkan data sebelum proses penyisipan pesan Prosedur yang mengatur nilai data setelah proses penyisipan pesan Prosedur yang mempersiapkan data sebelum proses ekstraksi pesan Prosedur yang mengatur nilai data setelah proses ekstraksi pesan Prosedur yang mengatur pembangkitan pesan acak Prosedur yang mengatur pembangkitan header dari pesan Prosedur yang mengatur pembangkitan status proses dari proses pembukaan file keluaran Fungsi yang mengembalikan sebuah bit dari pesan masukan Fungsi yang mengembalikan tipe pesan Prosedur untuk menyimpan tipe pesan Prosedur untuk menyimpan ukuran pesan Fungsi untuk mendapatkan ukuran pesan Fungsi yang mengembalikan ukuran total pesan seluruhnya (dengan header) Prosedur untuk menyimpan alamat pesan Fungsi yang mengembalikan nama file pesan Fungsi yang mengembalikan jumlah karakter yang sudah diekstraksi Fungsi yang mengembalikan status proses pembukaan file keluaran Fungsi yang mengembalikan isi teks pesan Prosedur yang menyimpan teks pesan
Tabel C-5 Kelas Video
Nama Atribut bufferBit messageResult messageBit nPict bitLSB
Tipe StringBuffer StringBuffer StringBuffer Integer Integer
Tipe Integer Integer [] Integer [] Byte [] Long String String String String Boolean Boolean FileConnection FileConnection DataInputStream DataOutputStream Vector Keterangan Konstruktor Prosedur untuk membuka koneksi file video sebagai masukan Prosedur untuk menutup koneksi file video sebagai masukan Prosedur untuk membuka koneksi file video sebagai keluaran Prosedur untuk menutup koneksi file video sebagai keluaran Fungsi untuk membaca angka sebesar 1 byte dari buffer Fungsi untuk membaca „len‟ bit dari buffer Fungsi untuk membaca sebuah karakter dari buffer Prosedur untuk membaca isi video sebanyak „len‟ byte ke dalam buffer Prosedur untuk melewati isi video sebanyak „len‟ bit Prosedur untuk melewati isi video sebanyak „len‟ byte Prosedur untuk melewati isi video hingga ke posisi masukan Prosedur untuk meng-copy video masukan menjadi video sementara Prosedur untuk menghapus video dengan nama file masukan Prosedur untuk melakukan penamaan ulang video keluaran dengan nama file tertentu
Keterangan Prosedur untuk memindahkan semua isi buffer ke dalam video Prosedur yang melakukan penyisipan pesan ke dalam video Prosedur yang mempersiapkan data sebelum proses penyisipan pesan Prosedur yang mengatur nilai data setelah proses penyisipan pesan Fungsi yang mengatur penyisipan pesan ke dalam video, dan mengembalikan status hasil penyisipan Prosedur yang mempersiapkan data sebelum proses ekstraksi pesan Prosedur yang mengatur nilai data setelah proses ekstraksi pesan Fungsi yang mengatur ekstraksi pesan dari video, dan mengembalikan status hasil ekstraksi Prosedur untuk mengambil nama file dari header pada proses ekstraksi Prosedur untuk mengambil ukuran pesan dari header pada proses ekstraksi Prosedur yang mempersiapkan data sebelum proses validasi format video Prosedur yang melakukan validasi format video Prosedur untuk menyimpan alamat video Prosedur untuk menyimpan alamat video keluaran Fungsi untuk mendapatkan alamat video keluaran Fungsi yang mengembalikan nama file video Fungsi yang mengembalikan nama file video keluaran Fungsi yang mengembalikan pesan error, saat validasi format Fungsi untuk mengetahui apakah ada kesalahan pada saat validasi, penyisipan, atau ekstraksi Fungsi untuk memeriksa apakah video keluaran sudah ada atau belum Fungsi untuk memeriksa apakah memori yang disediakan cukup atau tidak
C-7 Tabel C-6 Kelas Key
Nama Atribut password rand counterKey theKey
Tipe String Random Integer Integer []
Nama Operasi Key() startUp() generateTheKey(sizeKey: Integer) generateSeedMD5() getNextInt():Integer setPassword(nPassword: String) getPassword(): String
Keterangan Konstruktor Prosedur yang mempersiapkan nilai data sebelum pembangkitan bilangan acak Prosedur yang mengatur pembangkitan bilangan acak Prosedur yang mengatur pembangkitan nilai seed dari string kunci Fungsi yang mengembalikan bilangan acak berikutnya Prosedur untuk menyimpan string kunci Fungsi yang mengembalikan string kunci Tabel C-7 Kelas Lib
C-8 Nama Atribut vlcTcoefLast vlcTcoefLevel maxBit TYPE_FILE TYPE_TEXT STATUS_SUCCEED STATUS_MEMORY_ERROR Nama Operasi bitToInt(bit: String): Integer byteToBit(x: Integer): String hexToInt(hex: String): Integer
Tipe Integer [] Integer [] Integer Short Short Short Short Keterangan Fungsi untuk mengubah string biner ke dalam bilangan desimal Fungsi untuk mengubah bilangan desimal ke dalam string biner Fungsi untuk mengubah string heksadesimal ke dalam bilangan desimal
LAMPIRAN D FRAME VIDEO HASIL PENGUJIAN Berikut ini adalah frame pertama dari masing-masing video hasil penyisipan dengan video yang asli, yang dilakukan pada Kasus uji 2. Tabel D-1 Frame Video “Take-off.3gp” dan Video Hasil Penyisipan
Nama file yang disisipkan
Video asli
“file.txt”
“Readme.txt”
“Pic.jpg”
“Pic2.jpg”
D-1
Video hasil penyisipan
D-2
Tabel D-2 Frame Video “snagItNarration.3gp” dan Video Hasil Penyisipan
Nama file yang disisipkan
“file.txt”
“Readme.txt”
“Pic.jpg”
“Pic2.jpg”
Video asli
Video hasil penyisipan
D-3
Tabel D-3 Frame Video “MacVsPc.3gp” dan Video Hasil Penyisipan