Đề tài Phân tích và ứng dụng chuẩn MP3

Tài liệu Đề tài Phân tích và ứng dụng chuẩn MP3: MỤC LỤC Mục lục…….. 1 Lời mở đầu 5 Các thuật ngữ thường dùng 6 PHẦN 1 : LÝ THUYẾT 7 CHƯƠNG I: CÁC ĐẶC ĐIỂM CƠ BẢN CỦA ÂM THANH 7 I. Các đặc tính cơ bản của âm thanh 7 1. Tần số sóng âm 7 2. Biên độ sóng âm 8 II. Khái quát về âm thanh số 9 1. Lấy mẫu rời rạc thời gian, tín hiệu audio tương tự 9 2. Lượng tử hoá và các mẫu rời rạc thời gian 9 3. Tỉ số tín hiệu trên sai số (Signal-to-error ratio) 10 CHƯƠNG II: GIỚI THIỆU VỀ MPEG 11 I. GIỚI THIỆU 11 1. MPEG là gì? 11 2. So sánh các chuẩn MPEG: 11 3. Âm thanh MPEG 12 4. Hoạt động: 13 II. CÁC KHÁI NIỆM CƠ BẢN VỀ MPEG. 14 1. Lược đồ mã hóa Perceptual Subband. 14 2. Giải thích về hiệu qủa che (masking effect). 14 a. Nén âm thanh MPEG. 15 b. Hiệu quả che. 16 3. Các lớp âm thanh MPEG. 17 a. Lớp I (Layer I) 18 b. Lớp II (Layer II) 18 c. Lớp III (Layer III). 19 III. CÁC THÔNG SỐ DÙNG TRONG MPEG. 20 ...

doc73 trang | Chia sẻ: hunglv | Lượt xem: 1107 | Lượt tải: 0download
Bạn đang xem trước 20 trang mẫu tài liệu Đề tài Phân tích và ứng dụng chuẩn MP3, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
MUÏC LUÏC Muïc luïc…….. 1 Lôøi môû ñaàu 5 Caùc thuaät ngöõ thöôøng duøng 6 PHAÀN 1 : LYÙ THUYEÁT 7 CHÖÔNG I: CAÙC ÑAËC ÑIEÅM CÔ BAÛN CUÛA AÂM THANH 7 I. Caùc ñaëc tính cô baûn cuûa aâm thanh 7 1. Taàn soá soùng aâm 7 2. Bieân ñoä soùng aâm 8 II. Khaùi quaùt veà aâm thanh soá 9 1. Laáy maãu rôøi raïc thôøi gian, tín hieäu audio töông töï 9 2. Löôïng töû hoaù vaø caùc maãu rôøi raïc thôøi gian 9 3. Tæ soá tín hieäu treân sai soá (Signal-to-error ratio) 10 CHÖÔNG II: GIÔÙI THIEÄU VEÀ MPEG 11 I. GIÔÙI THIEÄU 11 1. MPEG laø gì? 11 2. So saùnh caùc chuaån MPEG: 11 3. AÂm thanh MPEG 12 4. Hoaït ñoäng: 13 II. CAÙC KHAÙI NIEÄM CÔ BAÛN VEÀ MPEG. 14 1. Löôïc ñoà maõ hoùa Perceptual Subband. 14 2. Giaûi thích veà hieäu quûa che (masking effect). 14 a. Neùn aâm thanh MPEG. 15 b. Hieäu quaû che. 16 3. Caùc lôùp aâm thanh MPEG. 17 a. Lôùp I (Layer I) 18 b. Lôùp II (Layer II) 18 c. Lôùp III (Layer III). 19 III. CAÙC THOÂNG SOÁ DUØNG TRONG MPEG. 20 1. Mode. 20 2. Sampling Frequency (toác ñoä laáy maãu). 21 3. Bit Rate. 21 CHÖÔNG III: MAÕ HOÙA THUÏ CAÛM 23 I. CÔ SÔÛ AÂM TAÂM LYÙ. 23 1. Ngöôõng nghe tuyeät ñoái (absolute threshold of hearing) . 23 2. Caùc baêng tôùi haïn(critical bands) . 23 3. Hieän töôïng che (masking) . 24 II. MAÕ HOÙA BAÊNG PHUÏ . 26 III. MAÕ HOAÙ BIEÁN ÑOÅI . 26 IV. MAÕ HOAÙ MP3 ( MP3 ENCODING) . 27 1. Phaân tích pheùp bieán ñoåi Fourier nhanh (FFT analysis) . 27 2. Ngöôõng che(Masking Threshold) . 28 3. Baêng loïc phaân tích (Analysis Filterbank) . 28 4. MDCT vôùi cöûa soå ñoäng . 28 5. Chia tæ leä vaø löôïng töû hoùa (Scaling vaø Quantization) . 29 6. Maõ hoùa Huffman vaø sinh ra doøng bit (Huffman Coding and Bitstream Generation) . 30 7. Thoâng tin (Side Information) . 32 CHÖÔNG IV: GIAÛI MAÕ MPEG1 LÔÙP 3 33 I. GIAÛI MAÕ MP3 (MP3 DECODING) . 33 1. Ñònh daïng khung (Frame Format) . 33 a. Tieâu ñeà . 34 b. Thoâng tin (side infomation). 38 c. Döõ lieäu chính (main data) 39 d. Döõ lieäu phuï (Ancillary Data) . 40 2. Giaûi maõ Huffman 40 3. Löôïng töû hoaù laïi (requantization) . 41 4. Saép xeáp laïi thöù töï ( reordering) . 42 5. Giaûi maõ stereo . 42 a.Giaûi maõ Stereo MS . 42 b.Giaûi maõ cöôøng ñoä stereo . 43 6. Giaûm bieät danh (Alias Redution) . 43 7. IMDCT . 44 8. Khoái loïc ña pha toång hôïp ( Synthesis Polyphase Filterbank) . 46 II. NHÌN CHUNG VEÀ HIEÄU QUAÛ CAÙC GIAÛI THUAÄT GIAÛI MAÕ MP3 . 46 1 . Giaûi maõ Huffman . 46 2 . Boä löôïng töû hoùa laïi (Requantizer) . 48 3. Pheùp bieán ñoåi cosin rôøi raïc caûi tieán ñaûo ngöôïc (IMDCT) 51 4. Baêng loïc ña pha ( Polyphase Filterbank) . 53 PHAÀN 2: XAÂY DÖÏNG PHAÀN MEÀM 57 CHÖÔNG I:GIAO DIEÄN VAØ THUYEÁT MINH CHÖÔNG TRÌNH 57 1. Thanh SkinProgress 58 2. Nuùt Minimize 58 3. Nuùt Colse 58 4. Timer 58 5. Toång thôøi gian 58 6 .Nuùt Open 58 7 .Nuùt Play 58 8. Nuùt Pause 59 9. Nuùt Stop 59 10. Thanh tieán trình 59 11. Nuùt Volume 59 CHÖÔNG II : LÖU ÑOÀ GIAÛI THUAÄT VAØ CAÁU TRUÙC DÖÕ LIEÄU 60 I. SÔ ÑOÀ KHOÁI 60 II. LÖU ÑOÀ GIAÛI THUAÄT 61 III. CAÁU TRUÙC DÖÕ LIEÄU 63 1. File Agrs.h 63 a. Lôùp MPArgs 63 b. Caáu truùc MPInfo 66 c. Caáu truùc frame 66 2. File Common.h 67 a. Caáu truùc ID3TagStruct 67 b. Caáu truùc gr_info_s 67 c. Caáu truùc bandInfoStruct 68 d. Caáu truùc III_sideinfo 68 3. File Elsound.h 69 a. Caáu truùc esInputMode 69 b. Caáu truùc esOutputMode 69 c. Caáu truùc esPlayerMode 69 d. Caáu truùc esPlayerError 69 4. File Huffman.h 70 IV. ÑÒNH NGHÓA 70 1. Caùc ñònh nghóa duøng trong taäp tin 70 2. Caùc ñònh nghóa duøng trong Player.h 71 3. Caùc ñònh nghóa duøng trong Resource.h 71 PHAÀN 3 : TOÅNG KEÁT 72 Taøi lieäu tham khaûo 73 LÔØI MÔÛ ÑAÀU Trong thôøi ñaïi buøng noå cuûa coâng ngheä thoâng tin, vieäc truyeàn taûi döõ lieäu laø nhu caàu caàn thieát. Ñaëc bieät laø vieäc gôûi döõ lieäu theo ñöôøng Internet, vì chaát löôïng ñöôøng truyeàn thaáp neân caàn phaûi neùn döõ lieäu nhoû goïn ñeå thuaän lôïi cho vieäc upload hay download. Ñoái vôùi lónh vöïc aâm nhaïc cuõng vaäy, nhu caàu gôûi taëng baøi haùt cho nhau , nghe nhaïc tröïc tuyeán treân maïng raát phoå bieán vì vaäy vieäc neùn file nhaïc voâ cuøng caàn thieát ñeå tieát kieäm ñöôøng truyeàn, thôøi gian vaø tieàn baïc. Ñeå giaûi quyeát vaán ñeà naøy MPEG coù raát nhieàu chuaån ñeå neùn nhö MPEG 1, MPEG 2,… duøng ñeå neùn file theo nhieàu caùch khaùc nhau. Moät trong nhöõng chuaån phoå bieán laø chuaån MPEG 1, trong khuoân khoå ñeà taøi naøy chuùng em chæ tìm hieåu veà chuaån MPEG 1 Layer 3 hay coøn goïi laø mp3 vaø minh hoaï baèng moät chöông trình giaûi maõ file mp3, sau ñoù phaùt ra loa. CAÙC THUAÄT NGÖÕ THÖÔØNG DUØNG MDCT Modified Discrete Cosine Transform. IMDCT Inverse Modified Discrete Cosine Transform. Sample rate Toác ñoä laáy maãu. FFT Fast Fourier Transform. DFT Discrete Fourier Transform. Signal-to-noise (S/N) Tæ soá giöõa tín hieäu vaø nhieãu. CRC Cyclic Redundancy Check . ADC Analog to Digital Converter. CODEC CODer/DECoder. CPU Central Processing Unit. DCT Discrete Cosine Transform . DSP Digital Signal Processor. FS Sampling Frequency, e.g. 44100 Hz for CD audio. FIFO First in, first out. FLOP Floating-point operation. FPU Floating point unit. Hardware math acceleration. inside a CPU. ISO International Standards Organisation. MFLOPS Million floating-point operations per second. MPEG Motion Picture Expert Group. Working group within ISO. PCM Pulse Code Modulation. Output from an ADC. PHAÀN I : LYÙ THUYEÁT CHÖÔNG I : CAÙC ÑAËC ÑIEÅM CÔ BAÛN CUÛA AÂM THANH AÂm thanh ñöôïc taïo bôûi moät thöïc theå dao ñoäng. Khoâng coù dao ñoäng thì khoâng coù aâm thanh. Thöïc theå dao ñoäng thì ñöôïc goïi laø nguoàn aâm. Nguoàn aâm laøm cho caùc phaàn töû cuûa moâi tröôøng beân caïnh noù dao ñoäng. Caùc phaàn töû naøy laïi laøm cho caùc phaàn töû keá noù dao ñoäng. Baèng caùch naøy caùc phaàn töû cuûa moâi tröôøng truyeàn ñeán tai cuûa ngöôøi nghe. Khi chuùng ta caûm nhaän moät aâm thanh naøo ñoù, caùc phaàn töû dao ñoäng laøm cho maøng nhó cuûa chuùng ta cuõng dao ñoäng. Caùc dao ñoäng naøy ñöôïc tieáp nhaän vaø phaân tích bôûi boä naõo cuûa chuùng ta. AÂm thanh coù theå truyeàn qua moâi tröôøng khoâng khí, nöôùc hoaëc caùc caáu truùc xaây döïng… aâm thanh truyeàn ñi döôùi daïng soùng aâm, söï truyeàn aâm thanh thöïc chaát laø söï truyeàn naêng löôïng töø nôi naøy ñeán nôi khaùc. I. CAÙC ÑAËC TÍNH CÔ BAÛN CUÛA AÂM THANH Baát kyø aâm thanh ñôn giaûn naøo chaúng haïn nhö moät noát nhaïc ñeàu coù theå hoaøn toaøn ñöôïc moâ taû bôûi 3 ñaëc tính caûm nhaän sau: cao ñoä (pitch ), cöôøng ñoä (intensity), aâm saéc (timbre). Nhöõng ñaëc tính naøy laàn löôït töông öùng vôùi caùc ñaëc tính vaät lyù sau cuûa aâm thanh: taàn soá (frequency), bieân ñoä (amplitude), söï caáu thaønh cuûa caùc haøi (harmonic constitution). Taàn soá soùng aâm AÂm thanh ñöôïc truyeàn ñi döôùi daïng soùng aâm. Khi soùng aâm truyeàn ñi söï truyeàn dao ñoäng cuûa caùc phaàn töû dao ñoäng theo höôùng truyeàn soùng. Söï dòch chuyeån cuûa caùc phaàn töû cuûa moâi tröôøng taïo ra caùc vuøng coù maät ñoä phaàn töû cao thaáp khaùc nhau. Caùc vuøng coù maät ñoä phaàn töû cao ñöôïc goïi laø caùc vuøng ñaäm ñaëc (compression). Caùc vuøng coù maät ñoä phaàn töû thaáp ñöôïc goïi laø vuøng loaõng (rarefaction). Caùc vuøng loaõng vaø vuøng ñaäm ñaëc lan truyeàn theo höôùng truyeàn cuûa soùng. Caùc phaàn töû dao ñoäng khoâng lan truyeàn theo höùông truyeàn soùng, chuùng dao ñoäng xung quanh vò trí caân baèng cuûa chuùng. Moãi moät dao ñoäng hoaøn chænh ñöôïc goïi laø chu kyø dao ñoäng (töø ñieåm baét ñaàu cuûa noù, tôùi moät khoaûng caùch toái ña theo moät höùông, sau ñoù trôû veà vò trí ban ñaàu, tôùi moät khoaûng caùch theo höôùng ngöôïc laïi, vaø cuoái cuøng laø trôû veà vò trí ban ñaàu ). Soá chu kyø dao ñoäng ñöôïc thöïc hieän trong moät giaây ñöôïc goïi laø taàn soá dao ñoäng, ñaây cuõng chính laø taàn soá cuûa aâm thanh. Moät trong nhöõng khaùc bieät chính giöõa hai aâm thanh laø söï khaùc bieät veà cao ñoä, vaø cuõng chính taàn soá cuûa aâm thanh quyeát ñònh cao ñoä cuûa noù . Taàn soá ñöôïc tính baèng Hertz (Hz), KiloHertz (kHz,1kHz=1000Hz)…Moät ngöôøi bình thöôøng coù theå nghe ñöôïc caùc nguoàn aâm coù daûi taàn soá töø 20Hz ñeán 20kHz. Bieân ñoä soùng aâm Bieân ñoä soùng aâm chính laø khoaûng caùch dòch chuyeån toái ña cuûa caùc phaàn töû dao ñoäng. Töông quan giöõa bieân ñoä soùng aâm vôùi caùc vuøng loaõng vaø vuøng ñaäm ñaëc . Bieân ñoä cuûa soùng aâm theå hieän möùc ñoä dao ñoäng cuûa caùc phaàn töû cuûa moâi tröôøng taïo neân soùng aâm. Bieân ñoä soùng aâm caøng lôùn thì caùc phaàn töû dao ñoäng coù naêng löôïng caøng lôùn vaø aâm thanh seõ coù cöôøng ñoä caøng lôùn. Cöôøng ñoä aâm thanh tæ leä nghòch vôùi khoaûng caùch tính töø nguoàn aâm. Caøng xa nguoàn aâm cöôøng ñoä aâm thanh caøng giaûm, keát quaû laø tai ta nghe caøng khoù . Cöôøng ñoä aâm ñöôïc bieåu dieãn bôûi möùc aùp suaát aâm thanh SPL (Sound Pressure Level). Möùc SPL cuûa moät nguoàn aâm naøo ñoù ñöôïc tính nhö sau: SPL(dB)= 20 log(P/P0) Trong ñoù P : aùp suaát cuûa nguoàn aâm (N/m2) P0: aùp suaát chuaån qui chieáu, Po =2* 10-5 N/m2 Aâm thanh SPL(dB) Ngöôõng im laëng 0 Tieáng thì thaàm 10 Phoøng thu aâm 20 Noùi bình thöôøng 60 Tieáng la heùt 80 Tieáng xe taûi 90 Nhaïc rock 100 Ngöôõng caûm nhaän 120 Ngöôõng ñau 140 Moät soá möùc SPL cuûa vaøi daïng aâm thanh. II. KHAÙI QUAÙT VEÀ AÂM THANH SOÁ Laáy maãu rôøi raïc thôøi gian, tín hieäu Audio töông töï Tín hieäu audio töông töï thay ñoåi lieân tuïc theo thôøi gian, nghóa laø bieân boä cuûa tín hieäu thay ñoåi lieân tuïc theo thôøi gian. Laáy maãu tín hieäu audio töông töï laø xaùc ñònh bieân ñoä cuûa tín hieäu ôû nhöõng thôøi ñieåm theo nhöõng khoaûng thôøi gian caùch ñieàu nhau vì vaäy caùc maãu laø caùc xung coù bieân ñoä nhaát ñònh. Khoaûng thôøi gian caùch ñeàu naøy goïi laø chu kyø laáy maãu Ts , taàn soá laáy maãu (toác ñoä laáy maãu ) fs = (1 / Ts). Löôïng töû hoaù vaø caùc maãu rôøi raïc thôøi gian Löôïng töû hoaù laø bieåu dieãn bieân ñoä cuûa caùc xung tín hieäu thaønh 1 giaù trò soá söû duïng heä thoáng soá nhò phaân. Ngöôøi ta duøng moät töø ( word) coù ñoä daøi n bit ñeå bieåu dieãn caùc giaù trò ñoù. Soá bits n ñöôïc choïn tuøy thuoäc vaøo giaù trò cuûa caùc maãu vaø n ñöôïc goïi laø ñoä phaân giaûi löôïng töû hoaù( quantization resolution). Giaù trò cuûa 1 word xaùc ñònh 1 möùc luôïng töû hoaù (quantization level) vaø ñoä cheânh leäch giöõa 2 möùc lieân tieáp goïi laø khoaûng löôïng töû hoaù (quantization interval). Ví duï: ta söû duïng n=8 bit ñeå bieåu dieãn caùc giaù trò ñieän theá lieân tuïc töø 0 -> 25,5 V nhö sau: V1=0 thì word= 0000 0000 ( möùc 0) V2=0,1 thì word= 0000 0001 ( möùc 1) V3 = 0,2 thì word= 0000 0010 ( möùc 2) ……………………………………………………………………. V255= 25,5 thì word =1111 1111 (möùc 255) Giaû söû ta coù Va =0,15 V thì word ôû möùc 1 (0000 0001 ) hoaëc möùc 2 (0000 0010) tuyø thuoäc vaøo söï löïa choïn cuûa chuùng ta. Nhöng neáu V a =0.12 thì noù thuoäc möùc 1 vì gaàn giaù trò ôû möùc 1 hôn. Caùc giaù trò löôïng töû hoaù chæ laø xaáp xæ gaàn baèng giaù trò thöïc teá cuûa caùc maãu. Ñoä sai bieät giöõa giaù trò löôïng töû hoaù vaø giaù trò thöïc ñöôïc goïi laø sai soá löôïng töû hoaù ( quantization error). Tæ soá tín hieäu treân sai soá (Signal-to-error ratio) Ñeå ñaùnh giaù chaát löôïng cuûa heä thoáng löôïng töû hoùa, moät thoâng soá quan troïng ñöôïc ñònh nghóa laø tæ soá cuûa bieân ñoä tín hieäu cöïc ñaïi treân sai soá löôïng töû hoùa cöïc ñaïi, tæ soá naøy ñöôïc goïi laø tæ soá tæ hieäu treân sai soá (S/E). CHÖÔNG II: GIÔÙI THIEÄU VEÀ MPEG GIÔÙI THIEÄU 1. MPEG laø gì? MPEG, vieát taét cuûa cuïm töø ‘ Moving Picture Experts Group’, laø 1 nhoùm chuyeân nghieân cöùu phaùt trieån caùc tieâu chuaån veà hình aûnh soá vaø neùn aâm thanh theo chuaån ISO/IEC. Ngaøy nay, nhoùm laøm vieäc MPEG ñaõ phaùt trieån vaø phaùt haønh caùc tieâu chuaån MPEG-1, MPEG-2 vaø MPEG-4. Chuaån MPEG-3 ñöôïc keát hôïp vaøo MPEG-2 vaø khoâng coøn taùch rieâng nöõa. Nhoùm MPEG hieän nay ñaõ phaùt trieån ñeán chuaån MPEG-7. MPEG chæ laø moät teân rieâng, teân chính thöùc cuûa noù laø : ISO/IEC JTC1 SC29 WG11. ISO : International Organization for Standardization (Toå chöùc chuaån quoác teá) IEC : International Electro-technical Commission (Hoäi ñoàng kyõ thuaät ñieän töû quoác teá ) JTC1 : Joint Technical Committee 1 (Hoäi ñoàng kyõ thuaät lieân hôïp 1) SC29 : Sub-committee 29 (Hoäi ñoàng phuï 29) WG11: Work Group 11 (moving picture with audio). (Nhoùm laøm vieäc 11) 2. So saùnh caùc chuaån MPEG MPEG-1 ñònh nghóa moät tieâu chuaån cho vieäc löu tröõ vaø phuïc hoài caùc hình aûnh ñoäng vaø aâm thanh treân caùc thieát bò löu tröõ. Tieâu chuaån naøy ñònh nghóa raèng hình aûnh ñöôïc phaùt laïi ôû toác ñoä 30 frames moät giaây vaø aâm thanh ñöôïc phaùt laïi ôû chaát löôïng nhö CD-audio, ñoä phaân giaûi hình aûnh laø 352 x 240. Chuaån MPEG-1 ñöôïc duøng ñieån hình trong caùc phaàn meàm huaán luyeän baèng maùy tính, caùc game haønh ñoäng trong maùy tính, video chaát löôïng VHS, Karaoke.. MPEG-2 ñònh nghóa cho moät tieâu chuaån kyõ thuaät truyeàn hình soá. Chuaån MPEG-2 khaéc phuïc moät vaøi nhöôïc ñieåm cuûa chuaån MPEG-1. Ví duï, MPEG-2 coù theå taïo hình aûnh lôùn gaáp 4 laàn MPEG-1 vôùi ñoä neùt cao hôn vaø roõ hôn (720 x 480 vaø 1280 x 720). Caùc ñaëc tính cuûa MPEG-2 bao goàm hình aûnh chaát löôïng cao vaø aâm thanh noåi.. MPEG-3 ñònh nghóa moät tieâu chuaån cho High Difinition Television (HDTV), laø theá heä tieáp theo cuûa coâng ngheä truyeàn hình theo ñònh daïng soá ñaàu ñuû. Tieâu chuaån naøy ñaõ khoâng ñöôïc phaùt trieån hoaøn thieän vaø cuoái cuøng ñöôïc keát hôïp vaøo vôùi chuaån MPEG-2. MPEG-3 nhaém ñeán muïc tieâu laø caùc öùng duïng HDTV vôùi kích thöôùc maãu leân ñeán 1920x1080x30 Hz vaø ñöôïc maõ hoaù ôû toác ñoä bit 20 ñeán 40 Mbits/s. Cuoái cuøng ngöôøi ta ñaõ nhaän ra raèng vôùi moät vaøi ñieàu chænh thích hôïp, MPEG-1 vaø MPEG-2 laøm vieäc raát toát ñoái vôùi HDTV. MPEG-4 ñònh nghóa moät tieâu chuaån cho caùc öùng duïng Multi-media. Ñaëc bieät noù ñònh nghóa tieâu chuaån truyeàn cho doøng phöùc taïp caùc hình aûnh, aâm thanh vaø döõ lieäu ñoà hoaï vaø vieäc taùi hôïp chuùng treân thieát bò thu. MPEG-4 ñöôïc phaùt trieån theo 2 giai ñoaïn, 1 vaø 2. Chuaån MPEG-4 ñònh nghóa caùc ñoái töôïng hình aûnh maø trong ñoù caùc phaàn cuûa moät caûnh coù theå ñöôïc thao taùc trong khi nhöõng phaàn khaùc vaãn khoâng ñoåi. MPEG-5 vaø MPEG-6 vaãn chöa ñöôïc coâng boá. MPEG-7 ñònh nghóa moät tieâu chuaån veà vieäc bieåu dieãn noäi dung cho caùc nghieân cöùu thoâng tin hình aûnh vaø aâm thanh. Teân chính thöùc laø “Multimedia Content Description Interface”. Muïc tieâu cuûa MPEG-7 laø chuaån hoaù vieäc bieåu dieãn caùc moâ taû veà noäi dung nghe nhìn. Tuy nhieân chuaån khoâng ñònh nghóa caùc coâng cuï ñeå nhaän ra noäi dung nghe nhìn thaät söï. 3. AÂm thanh MPEG Veà cô baûn, aâm thanh MPEG seõ laøm giaûm kích thöôùc löu tröõ 1 taâp tin aâm thanh ñi raát nhieàu. Moät ñóa Audio-CD löu tröõ ñöôïc khoaûng 650 Mbyte döõ lieäu aâm thanh thoâ vôùi caùch maõ hoùa 16 bit (bitdepth) vaø taàn soá laáy maãu (sample rate) 44.1 kHz. Neáu ñem phaùt ra thì cuõng chæ ñöôïc 60 ñeán 72 phuùt. bitdepth: moâ taû möùc bieân ñoä lôùn nhaát maø moät maãu aâm thanh coù theå ñaït tôùi. Ví duï : 8 bit = 256 möùc, 16 bit = 65.536 möùc, veà hình aûnh thì ñoù chính laø ñoä phaân giaûi. sample rate: moâ taû soá maãu aâm thanh ñöôïc laáy trong 1 giaây. Ví duï : 22 kHz = 22.000 maãu / 1giaây. Phöông phaùp coå ñieån ñeå giaûm kích thöôùc löu tröõ laø giaûm löôïng thoâng tin. Neáu ñoåi caùch löu tröõ aâm thanh töø 16 bit sang 8 bit chuùng ta coù theå giaûm kích thöôùc löu tröõ ñi 1 nöûa, tuy nhieân nhö theá chaát löôïng aâm thanh cuõng seõ giaûm ñi 1 nöûa. 4. Hoaït ñoäng Khi ñöa ra phöông phaùp maõ hoùa aâm thanh, neàn taûng vaãn laø yeáu toá “heä thoáng nghe” cuûa con ngöôøi. Thaät khoâng may ñoù khoâng phaûi 1 thieát bò hoaøn haûo ñeå nhaän bieát aâm thanh nhöng laø thieát bò duy nhaát chuùng ta coù ñöôïc. Nhöng chuùng ta coù theå chuyeån nhöõng khuyeát ñieåm cuûa noù thaønh öu ñieåm : ñoù laø ñaëc tính phi tuyeán cuûa ngöôõng nghe vaø khaû naêng thích hôïp cuûa noù. MPEG hoaït ñoäng döïa treân heä thoáng nghe cuûa con ngöôøi, ñoù laø caûm giaùc veà aâm mang ñaëc tính sinh lyù vaø taâm lyù. AÂm thanh CD ghi laïi taát caû taàn soá, keå caû nhöõng taàn soá bò ‘che’. AÂm thanh MPEG chæ ghi laïi nhöõng taàn soá maø tai ngöôøi coù theå nghe. Nhö vaäy, MPEG seõ boû qua nhöõng thoâng tin khoâng quan troïng. Döïa treân nghieân cöùu veà nhaän thöùc aâm thanh cuûa con ngöôøi, boä maõ hoùa seõ quyeát ñònh nhöõng thoâng tin naøo laø caên baûn vaø nhöõng thoâng tin naøo coù theå boû qua. Hieäu quaû naøy ñaëc bieät quan troïng trong aâm nhaïc. Neáu trong moät daøn nhaïc coù moät nhaïc cuï chôi cöïc maïnh, laøm aùt tieáng cuûa caùc nhaïc cuï khaùc ta khoâng theå nghe ñöôïc. Nhöng maùy thaâu aâm vaãn ghi laïi ñaày ñuû taát caû taàn soá cuûa taát caû nhaïc cuï, nghóa laø thieát bò thaâu aâm hoaøn toaøn khoâng coù khaû naêng thích nghi ñoäng nhö con ngöôøi. Nhöng khi phaùt laïi, ta vaãn khoâng nghe ñöôïc aâm thanh cuûa nhöõng nhaïc cuï bò aùt. Vì vaäy vieäc löu tröõ / ghi laïi nhöõng taàn soá naøy laø thöøa, laøm chieám dung löôïng khaù nhieàu. Caùch ghi aâm tuyeán tính treân ñóa CD laø hoaøn toaøn khoâng hieäu quaû veà khía caïnh naøy. Do ñoù thay vì phaûi ghi laïi thoâng tin cuûa nhöõng aâm khoâng nghe ñöôïc, ta seõ daønh choã cho caùc aâm coù theå nghe ñöôïc. Theo caùch naøy, dung löôïng cuûa thieát bò ghi aâm caàn thieát coù theå xem nhö giaûm ñi maø khoâng laøm giaûm chaát löôïng aâm thanh. Tröôùc khi chuùng ta nghe ñöôïc ñieàu gì, thoâng tin seõ ñöôïc phaân tích bôûi boä naõo cuûa chuùng ta. Naõo boä seõ dòch aâm thanh vaø loïc boû nhöõng thoâng tin khoâng caàn thieát. Kyõ thuaät aâm thanh MPEG laøm vieäc naøy thay theá cho naõo boä. Nhö vaäy, nhöõng thoâng tin leõ ra phaûi ñöôïc loïc bôûi naõo boä baây giôø khoâng coøn caàn phaûi löu tröõ chieám giöõ khoâng gian ñóa nöõa. II. CAÙC KHAÙI NIEÄM CÔ BAÛN VEÀ MPEG 1. Löôïc ñoà maõ hoùa Perceptual Subband Boä maõ hoùa aâm thanh theo “perceptual subband” phaân tích lieân tuïc caùc tín hieäu vaøo vaø xaùc ñònh ra ñöôøng cong che (masking curve), ñoù laø möùc ngöôõng maø nhöõng aâm thanh ôû döôùi noù khoâng theå nghe ñöôïc bôûi heä thoáng nghe cuûa con ngöôøi. Tín hieäu vaøo ñöôïc chia thaønh 1 soá daõi taàn soá, goïi laø “subband”. Moãi tín hieäu “subband” ñöôïc löôïng töû hoùa theo caùch maø söï löôïng töû hoùa tieáng oàn ñöôïc baét ñaàu bôûi vieäc maõ hoùa seõ khoâng vöôït quaù ñöôøng cong che cuûa subband ñoù. Söï löôïng töû hoùa phoå tieáng oàn vì theá thích nghi ñoäng vôùi phoå cuûa tín hieäu. Thoâng tin treân boä soá hoùa ñöôïc duøng trong moãi subband ñöôïc truyeàn doïc theo caùc maãu subband ñöôïc maõ hoùa. Boä giaûi maõ seõ giaûi maõ doøng bit (bitstream) maø khoâng caàn phaûi bieát caùch maø boä maõ hoùa xaùc ñònh nhöõng thoâng tin naøy. Ñieàu naøy cho pheùp boä maõ hoùa hoaït ñoäng vôùi nhöõng möùc ñoä khaùc nhau veà chaát löôïng vaø ñoä phöùc taïp, vaø cuõng cho pheùp söï phaùt trieån trong töông lai cuûa boä maõ hoùa. 2. Giaûi thích veà hieäu quaû che (masking effect) a. Neùn aâm thanh MPEG MPEG coù theå neùn 1 doøng bit 32 kbit/s ñeán 384 kbit/s. Moät doøng bit aâm thanh PCM thoâ thì khoaûng 705 kbit/s, do ñoù tæ soá neùn toái ña coù theå laø 22. Tæ soá neùn bình thöôøng laø 1:6 hay 1:7. 96 kbit/s laø xem nhö trong suoát cho haàu heát caùc muïc ñích thöïc teá. Coù nghóa raèng ta khoâng caàn phaûi löu taâm ñeán baát kyø söï khaùc bieät naøo giöõa tín hieäu goác vaø tín hieäu neùn ñoái vôùi nhaïc pop hay nhaïc rock’n roll. Ñoái vôùi moät soá öùng duïng khaùc nhö laø hoøa taáu piano, toác ñoä bit coù theå leân tôùi 128 kbit/s. Ñeå ñaït ñöôïc tæ soá neùn naøy, ñoái vôùi aâm thanh, veà cô baûn ta coù hai choïn löïa: hoaëc giaûm soá laàn laáy maãu, hoaëc giaûm soá bit ñeå löôïng töû hoaù. Con ngöôøi coù theå nghe aâm thanh vôùi taàn soá töø 20 Hz ñeán 20 kHz. Theo thuyeát cuûa Nyquist, ta phaûi laáy maãu aâm thanh ôû taàn soá toái thieåu laø hai laàn taàn soá cao nhaát maø ta muoán phaùt laïi. Taàn soá laáy maãu 44,1 kHz laø thích hôïp. Vaán ñeà coøn laïi laø phaûi choïn soá bit cho moät maãu maõ hoùa laø bao nhieâu. Thoâng thöôøng laø 16 bit. Lyù do ñeå choïn con soá 16 bit baét nguoàn töø tæ soá tín hieäu vaø nhieãu (S/N). Nhieãu noùi ôû ñaây sinh ra do quùa trình soá hoùa. Cöù moãi bit theâm vaøo, ta coù tæ soá S/N toát hôn 6dB (ñoái vôùi tai ngöôøi, 6 dB töông öùng vôùi möùc to gaáp ñoâi). AÂm thanh CD ñaït tôùi khoaûng 90 dB S/N. Möùc naøy phuø hôïp vôùi phaïm vi ñoäng cuûa tai ngöôøi coøn toát. Nghóa laø ta khoâng theå nghe ñöôïc baát kyø nhieãu naøo ñeán töø baûn thaân heä thoáng. Ñieàu gì xaûy ra neáu ta laáy maãu vôùi 8 bit? Ta seõ nghe thaáy raát nhieàu tieáng soâi trong baûn ghi. Deã daøng nghe thaáy nhieãu trong khoaûng nghæ cuûa baûn nhaïc hoaëc giöõa caùc töø neáu ta ghi aâm moät gioïng noùi. b. Hieäu quaû che Giaû söû coù moät aâm maïnh vôùi taàn soá 1000Hz, vaø moät aâm keøm theo coù taàn soá 1100Hz nhöng vôùi cöôøng ñoä aâm nhoû hôn 18dB. Ta seõ khoâng theå nghe thaáy aâm naøy vì noù ñaõ bò che hoaøn toaøn bôûi aâm chuû 1000Hz. Noùi moät caùch khaùc, moät aâm thanh yeáu gaàn moät aâm thanh maïnh seõ bò che. Neáu coù moät aâm thanh khaùc taàn soá 2000Hz cuõng coù möùc to thaáp hôn aâm 1000Hz laø 18dB thì ta seõ nghe ñöôïc aâm naøy. Ñeå khoâng nghe ñöôïc aâm naøy ta phaûi giaûm möùc to cuûa aâm naøy xuoáng coøn thaáp hôn 45dB so vôùi aâm chuû 1000Hz. Hieäu quûa che coù yù nghóa raèng ta coù theå gia taêng möùc oàn neàn xung quanh moät aâm maïnh maø vaãn khoâng nghe ñöôïc tieáng oàn vì chuùng seõ bò che hoaøn toaøn. Taêng möùc oàn neàn coøn coù nghóa laø duøng ít bit ñeå soá hoùa. Vaø ñieàu naøy cuõng gioáng nhö laø ta ñaõ neùn aâm thanh vaäy. Baây giôø haõy xem boä maõ hoaù aâm thanh MPEG hoaït ñoäng nhö theá naøo. Boä maõ hoùa chia phoå taàn soá (20Hz ñeán 20kHz) thaønh 32 daõi nhoû (sub-band). Moãi sub-band giöõ 1 phaàn nhoû cuûa phoå. Trong vuøng treân cuûa sub-band 8 ta phaùt moät aâm coù taàn soá 1000Hz vôùi möùc to 60dB. Boä maõ hoùa seõ tính toaùn hieäu quûa che cuûa aâm naøy vaø nhaän ra raèng coù moät ngöôõng che cho toaøn boä sub-band thöù 8 (taát caû nhöõng aâm coù cuøng taàn soá). Ngöôõng che naøy thaáp hôn aâm phaùt ra 35 dB. Tæ soá S/N coù theå chaáp nhaän ñöôïc laø 60 - 35 = 25 dB, töông ñöông vôùi 4 bit. Ngoaøi ra noù coøn aûnh höôûng treân caùc sub-band 9-13 vaø 5-7 vôùi hieäu quûa che giaûm daàn töø sub-band 8. Hôn nöõa, boä maõ hoùa cuõng xem xeùt möùc ñoä nhaïy caûm cuûa tai ñoái vôùi caùc taàn soá khaùc nhau. Tai ngöôøi ít nhaïy caûm vôùi caùc taàn soá cao vaø thaáp. Noù nhaïy caûm nhaát ñoái vôùi taàn soá 2-4 kHz, cuøng daõi taàn soá vôùi tieáng noùi con ngöôøi. Caùc sub-band neân phuø hôïp vôùi tai ngöôøi, nghóa laø moãi sub-band caàn coù caùc taàn soá coù cuøng caùc tính chaát aâm hoïc taâm lyù. Trong MPEG layer II, moãi sub-band coù ñoä roäng 625Hz, do ñoù caàn phaûi coù nhöõng boä loïc baêng thoâng phöùc taïp. Ñeå caùc boä loïc ñôõ phöùc taïp, ngöôøi ta theâm FFT (Fast Fourier Transform) vaøo song song vôùi boä loïc vaø söû duïng caùc thaønh phaàn phoå töø FFT nhö laø caùc thoâng tin theâm vaøo boä maõ hoùa. Baèng caùch naøy ta seõ laáy maät ñoä bit cao hôn ñoái vôùi caùc taàn soá thaáp maø tai ngöôøi nhaïy caûm hôn. Coøn nhieàu vaán ñeà caàn phaûi baøn tôùi. Chuùng ta chæ môùi giaûi thích söï che ñoàng boä, hieäu quûa che coøn xaûy ra tröôùc vaø sau moät aâm maïnh. Caùc lôùp aâm thanh MPEG Coù nhieàu söï nhaàm laãn veà lôùp aâm thanh MPEG. Taát caû caùc lôùp ñeàu döïa treân cuøng moät löôïc ñoà maõ hoùa (maõ hoùa theo nhaän thöùc). Möùc ñoä phöùc taïp cuûa boä maõ hoùa vaø giaûi maõ tuyø thuoäc vaøo moãi lôùp. Sau ñaây laø hình aûnh cho thaáy tæ soá neùn maø ta caàn phaûi ñaït tôùi 100% chaát löôïng CD vôùi caùc boä maõ hoùa vaø giaûi maõ khaùc nhau. Sau ñaây laø chi tieát veà caùc lôùp. a. Lôùp I (Layer I) Ñaây laø lôùp ñôn giaûn nhaát phuø hôïp cho öùng duïng cuûa ngöôøi duøng. Moâ hình aâm hoïc taâm lyù cuûa lôùp naøy chæ söû duïng caùc taàn soá che. Ñieàu naøy coù nghóa raèng noù seõ boû qua caùc taàn soá bò khuaát sau caùc taàn soá khaùc. Phaïm vi toác ñoä bit töø 32 kbit/s (mono) ñeán 448 kbit/s (stereo). Tuøy thuoäc vaøo möùc ñoä phöùc taïp cuûa boä maõ hoùa, moät aâm thanh chaát löôïng cao (gaàn vôùi aâm thanh CD) yeâu caàu toác ñoä bit khoaûng 256 - 384 kb/s treân moät chöông trình stereo. Khoâng neân maõ hoùa vôùi möùc neùn cao hôn 384 kb/s. Ñoä phöùc taïp cuûa boä giaûi maõ thaáp, ñoä phöùc taïp cuûa boä maõ hoùa cao hôn 1.5 - 3 laàn. Lôùp I ñöôïc duøng nhieàu trong DDC vaø Solid State Audio. b. Lôùp II (Layer II) Lôùp II ñeà nghò möùc ñoä neùn cao hôn lôùp I vaø möùc ñoä loïc saâu hôn. Noù coù nhöõng öùng duïng soá cho caû aâm thanh chuyeân nghieäp vaø nghieäp dö, nhö qua ñaøi phaùt thanh, TiVi…Phaïm vi toác ñoä bit töø 32 - 192 kb/s cho aâm thanh mono, vaø töø 64 - 384 kb/s cho aâm thanh stereo. Tuøy thuoäc vaøo möùc ñoä phöùc taïp cuûa boä maõ hoùa, moät aâm thanh chaát löôïng cao (gaàn vôùi aâm thanh CD) yeâu caàu toác ñoä bit khoaûng 256 - 384 kb/s treân moät chöông trình stereo. Möùc ñoä phöùc taïp cuûa boä giaûi maõ 25% cao hôn so vôùi lôùp I, vaø boä maõ hoùa coù möùc phöùc taïp cao hôn 2 - 4 laàn. c. Lôùp III (Layer III) Lôùp III coøn ñöa ra möùc ñoä neùn vaø loïc cao hôn caû lôùp II vaø söû duïng moät boä maõ hoùa Huffman. Layer Complexity Encoder Decoder I 1.5 – 3 1 II 2 – 4 1.25 III > 7.5 2.5 Trong baûng treân, ñoä phöùc taïp cuûa boä giaûi maõ lôùp I ñöôïc duøng ñeå so saùnh vôùi lôùp II vaø III. Lôùp III laø chuaån hieäu quaû nhaát vaø ñaõ trôû thaønh chuaån trong thöïc teá cho vieäc maõ hoaù chaát löôïng aâm thanh. Laäp luaän naøy daønh rieâng cho vieäc thöïc thi lôùp III cuûa chuaån MPEG 1 ñöôïc goïi laø MP3. Nhöõng caûi thieän cuûa lôùp 3 so vôùi lôùp 1 vaø lôùp 2 : Giaûm söï choàng phoå :Lôùp 3 cung caáp phöông phaùp xöû lyù caùc giaù trò MDCT ñeå loaïi boû söï dö thöøa do söï choàng laáp giöõa caùc baêng. Löôïng töû hoùa phi tuyeán :Boä löôïng töû hoùa lôùp 3 naâng caùc loái vaøo cuûa noù leân ¾ naêng löôïng tröùôc khi löôïng töû hoùa ñeå cung caáp tæ soá tín hieäu treân nhieãu (SNR) cao hôn. Maõ hoùa entropy caùc giaù trò döõ lieäu : Lôùp 3 söû duïng maõ Huffman ñeå maõ hoùa caùc maãu löôïng töû hoùa cho vieäc neùn döõ lieäu toát hôn . Söû duïng moät boä döõ tröõ bit (bit reservoir): Doøng bit lôùp 3 phuø hôïp hôn vôùi ñoä daøi thay ñoåi cuûa döõ lieäu ñöôïc neùn. Cuõng gioáng nhö lôùp 2, khung döõ lieäu lôùp 3 coù 1152 maãu. Lôùp 3 khoâng gioáng lôùp 2 ôû choã döõ lieäu maõ hoùa khoâng nhaát thieát phaûi vöøa vaën trong moät khung coá ñònh. Boä maõ hoùa coù theå laáy hoaëc möôïn caùc bit töø boä döï tröõ bit neáu caàn thieát . Söï phaân boá nhieãu hay söï phaân boá bit : Quaù trình phaân boá bit trong lôùp 1 vaø lôùp 2 chæ xaáp xæ löôïng nhieãu gaây bôûi löôïng töû hoùa theo soá bit cho tröôùc. Boä maõ hoùa lôùp 3 söû duïng moät voøng laëp phaân boá nhieãu. Theo caùch naøy , caùc boä löôïng töû hoùa ñöôïc thay ñoåi theo thöù töï , vaø löôïng töû hoùa coù ñöôïc laø do tính toaùn vaø ñöôïc phaân boá cho moãi baêng phuï. III. CAÙC THOÂNG SOÁ DUØNG TRONG MPEG Chuaån MPEG cho pheùp ta choïn löïa caùc thoâng soá cho vieäc neùn aâm thanh toát nhaát phuø hôïp vôùi öùng duïng maø ta söû duïng. Löôïc ñoà maõ hoùa cho caùc loaïi laø toång quaùt. Caùc thoâng soá coù theå choïn löïa trong boä maõ hoùa MPEG bao goàm : Mode, Sampling frequency, bitrate, vaø Layer. 1. Mode Chuaån MPEG coù 4 cheá ñoä: Mono. Dual channel. Stereo. Intensity Stereo (coøn goïi laø Joint Stereo). Cheá ñoä Mono roõ raøng ñöôïc duøng cho aâm thanh 1 keânh. Ñeå choïn cheá ñoä cho caùc öùng duïng 2 keânh, ñaàu tieân ta phaûi xaùc ñònh ñaâu laø tín hieäu traùi vaø ñaâu laø tín hieäu phaûi ñeå chia chuùng ra thaønh 2 files khaùc nhau, nhaèm sau naøy ta coù theå laøm vieäc ñoäc laäp treân keânh traùi hoaëc phaûi. Luùc ñoù ta seõ choïn cheá ñoä Mono. Neáu 2 keânh khoâng caàn hoaït ñoäng ñoäc laäp, ta choïn Stereo, Dual hay Intensity Stereo ñeå taïo moät file duy nhaát. Cheá ñoä Stereo hay keânh Dual laø hoaøn toaøn ñoàng nhaát khi chuùng cuøng sinh ra moät file duy nhaát cho tín hieäu stereo. Tuy nhieân moät bit chæ thò seõ nhaän daïng xem moät file laø ôû cheá ñoä naøo vaø coù theå ñöôïc duøng cho nhöõng aùp duïng naøo. Cheá ñoä Intensity Stereo xem xeùt söï dö thöøa giöõa caùc keânh traùi vaø phaûi nhaèm toái öu maõ. Chaát löôïng cuûa Intensity Stereo thay ñoåi theo noäi dung cuûa tín hieäu ñaõ maõ hoùa. Tuy nhieân noù ñaëc bieät thích hôïp cho toác ñoä truyeàn bit thaáp. 2. Sampling Frequency (toác ñoä laáy maãu) Moät soá toác ñoä laáy maãu: 32 kHz, 44.1 kHz vaø 48 kHz ñoái vôùi MPEG 1 (Tieâu chuaån ISO/IEC 11172-3). 16 kHz, 22.05 kHz vaø 24 kHz ñoái vôùi MPEG 2 (Tieâu chuaån ISO/IEC 13818-3). Khi choïn löïa toác ñoä laáy maãu caàn xem xeùt caùc vaán ñeà: Taàn soá laáy maãu caøng lôùn thì caøng nghe thuaän tai (ñoä daøi frame nhoû hôn). Baêng thoâng tín hieäu giôùi haïn ôû möùc 15 kHz khi laáy maãu ôû toác ñoä 32 kHz vaø 8 kHz ôû toác ñoä 16 kHz. Taàn soá laáy maãu (kHz) vaø toác ñoä cuûa aâm thanh maõ hoùa (kbps) coù theå choïn ñoäc laäp. Taàn soá laáy maãu 44.1 kHz hay 22.05 kHz laø khoâng thieát thöïc cho vieäc choïn loïc vì ñoä daøi frame (byte) laø thay ñoåi. Nhöõng file ñöôïc laáy maãu ôû nhöõng taàn soá khaùc nhau thì raát khoù khaên khi hoøa troän. Khi duøng ngoõ nhaäp soá AES/EBU, taàn soá laáy maãu bò coá ñònh bôûi tín hieäu nhaäp. Neáu khoâng baét buoäc, Digigram yeâu caàu laáy maãu ôû 48 kHz hoaëc 44.1 kHz cho phaùt thanh hay öùng duïng multimedia. Neáu ta phaûi söû duïng toác ñoä bit thaáp cho söï truyeàn coù hieäu quaû, toác ñoä 24 kHz laø thích hôïp. 3. Bit Rate Moãi Layer vaø cheá ñoä coù nhieàu caùch choïn löïa toác ñoä bit (bit rate). Vieäc choïn toác ñoä bit tuøy thuoäc tröôùc tieân vaøo chaát löôïng aâm yeâu caàu. Baêng thoâng tín hieäu laø heïp hôn neáu toác ñoä bit thaáp, khieán cho noù khoâng thöïc teá ñoái vôùi moät soá öùng duïng. Toác ñoä bit ñöôïc ño theo kilobits / sec(kbps). Khi choïn löïa toác ñoä bit caàn xem xeùt caùc vaán ñeà: Taïi 128 kbps treân moãi keânh (hay 256 kbps stereo), chaát löôïng aâm thanh CD seõ ñaït ñöôïc vôùi Layer I hay Layer II. Taïi 192 kbps treân moãi keânh, chaát löôïng aâm thanh laø hoaøn toaøn trong suoát. Toác ñoä 128 kbps / keânh ñöôïc duøng phoå bieán nhaát trong phaùt thanh. Noù töông öùng vôùi tæ soá neùn 1:6 ôû toác ñoä laáy maãu 48 kHz. Toác ñoä thaáp hôn 128 kbps / keânh ñöôïc duøng trong caùc öùng duïng yeâu caàu tæ soá neùn lôùn hôn do giôùi haïn cuûa baêng thoâng truyeàn hay thieát bò löu tröõ. Moät soá toác ñoä bit cung caáp bôûi chuaån aâm thanh MPEG : MPEG 1: 32 kHz, 44.1 kHz and 48 kHz - Layer I : 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448 kbps. Nhöõng toác ñoä naøy laø coù theå ôû cheá ñoä Mono hay stereo.. - Layer II : 32, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384 kbps. 32, 48, 56, 80 kbps chæ coù theå ôû cheá ñoä Mono; •64, 96, 112, 128, 160, 192 kbps coù theå ôû caû hai cheá ñoä Mono vaø Stereo;•224, 256, 320, 384 kbps chæ coù theå ôû cheá ñoä Stereo. CHÖÔNG III: MAÕ HOÙA THUÏ CAÛM I . CÔ SÔÛ AÂM TAÂM LYÙ Caùc thuaät toaùn maõ hoaù thuï caûm ñeàu döïa treân moâ hình tieáp nhaän aâm thanh ñeå toái öu hieäu quûa maõ hoaù. Ñoù chính laø tai ngöôøi , söï caûm nhaän aâm thanh bò aûnh höôûng bôûi caùc tính chaát che. Aâm taâm lyù hoïc laø 1 lónh vöïc khoa hoïc nghieân cöùu vaø giaûi thích söï caûm nhaän aâm thanh cuûa tai ngöôøi ñoái vôùi söï kích thích cuûa nguoàn aâm. Caùc phöông phaùp maõ hoaù thuï caûm ñeàu döïa vaøo caùc nguyeân lyù cô baûn cuûa aâm taâm lyù hoïc nhö :ngöôõng nghe, caùc baêng tôùi haïn, hieän töôïng che. Caùc phöông phaùp naøy loaïi boû caùc thaønh phaàn dö thöøa khoâng nghe ñöôïc cuûa tín hieäu audio ñeå giaûm bôùt döõ lieäu trong quaù trình neùn. Ngöôõng nghe tuyeät ñoái (absolute threshold of hearing) Ngöôõng nghe tuyeät ñoái laø möùc naêng löôïng caàn thieát cuûa moät tone thuaàn (ôû möùc ñoä cho tröôùc ) ñeå maø noù coù theå nghe ñöôïc trong moät moâi tröôøng khoâng coù tieáng oàn. Caùc baêng tôùi haïn (critical bands) Caùc nghieân cöùu thöïc teá cho thaáy tai ngöôøi coù theå caûm nhaän ñöôïc caùc nguoàn aâm coù taàn soá töø 20 Hz ñeán 20KHz. Ngoaøi ra , tai ngöôøi coøn ñöôïc coi laø boä phaân tích phoå ñoái vôùi phoå taàn nghe ñöôïc. Tai ngöôøi ñöôïc coi laø 1 baêng loïc (filter bank) goàm nhieàu maïch loïc thoâng daõi vôùi caùc baêng thoâng coù ñoä roäng khaùc nhau, noù ñaëc tröng cho khaû naêng phaân giaûi aâm thanh cuûa tai ngöôøi. Caùc baêng naøy ñöôïc goïi laø baêng tôùi haïn, chuùng coù ñoä roäng thay ñoåi theo taàn soá töø thaáp ñeán cao. Treân thöïc teá coù 25 baêng tôùi haïn ñöôïc qui öôùc theo baûng caùc baêng tôùi haïn döôùi , moãi baêng coù moät taàn soá trung taâm. Ñoä roäng cuûa moãi baêng coù theå ñöôïc tính xaáp xæ nhö sau : BWc (f)=25+75[1+1.4(f/1000)2]0.69 (HZ) Moät baêng tôùi haïn coù ñoä roäng laø moät Bark(ñaët theo teân cuûa nhaø khoa hoïc Barkhausen). Haøm sau ñaây cho pheùp chuyeån töø giai taàn soá sang giai Bark: Z(f) = 13arctan(0.00076f) + 3.5arctan[(f/75000)2] (Bark) Tai ngöôøi coù khaû naêng phaân tích thôøi gian taàn soá, khaû naêng naøy taïo ra caùc hieän töôïng che ñoàng thôøi vaø khoâng ñoàng thôøi. Caùc hieän töôïng naøy ñöôïc söû duïng bôûi caùc boä maõ hoùa ñeå xaùc ñònh caùc thaønh phaàn dö thöøa nhaèm loaïi boû, khoâng maõ hoùa chuùng. Baêng tôùi haïn Taàn soá trung taâm Ñoä roäng (Hz) Taàn soá döôùi (Hz) Taàn soá treân (Hz) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 50 150 250 350 450 570 700 840 1000 1170 1370 1600 1850 2150 2500 2900 3400 4000 4800 5800 7000 8500 10500 13500 18755 - 100 100 100 110 120 140 150 160 190 210 240 280 320 380 450 550 700 900 1100 1300 1800 2500 3500 6550 - 100 200 300 400 510 630 770 920 1080 1270 1470 1720 2000 2320 2700 3150 3700 4400 5300 6400 7700 9500 12000 15500 100 200 300 400 510 630 770 920 1080 1270 1470 1720 2000 2320 2700 3150 3700 4400 5300 6400 7700 9500 12000 15500 22050 Baûng caùc baêng tôùi haïn Hieän töôïng che( masking) Hieän töôïng che xaûy ra khi moät hoaëc nhieàu nguoàn aâm bò laøm cho khoâng nghe ñöôïc do söï coù maët cuûa moät nguoàn aâm khaùc. Tín hieäu che caùc tín hieäu khaùc ñöôïc goïi laø caùc thaønh phaàn che (masker), caùc tín hieäu bò che thì goïi laø caùc thaønh phaån bò che (maskee). Ñoä cheânh leäch giöõa thaønh phaàn che vaø ngöôõng che (do taàn soá vaø möùc aùp suaát aâm thanh cuûa thaønh phaàn che quyeát ñònh) goïi laø tæ soá tín hieäu treân che SMR (Signal-to-masking ratio). Thoâng soá naøy raát quan troïng trong phöông phaùp maõ hoùa thuï caûm. Hieän töôïng che coù 2 loaïi : che ñoàng thôøi vaø che khoâng ñoàng thôøi. Hieän töôïng che ñoàng thôøi : xaûy ra khi nhieàu nguoàn aâm taùc ñoäng vaøo tai ngöôøi. Maëc duø phoå taàn aâm thanh coù theå chöùa nhieàu hieän töôïng che ñoàng thôøi phöùc taïp, vì muïc tieâu ñònh daïng saùi daïng maõ hoùa, ta chæ caàn quan taâm ñeán 3 loaïi che ñoàng thôøi : nhieãu che tone , tone che nhieãu, nhieãu che nhieãu. Nhieãu che tone (Noise-Masking-Tone, NMT) : ví duï nhö 1 nhieãu baêng thoâng heïp (coù baêng thoâng laø 1 Bark) che moät tone vôùi ñieàu kieän laø tone bò che coù möùc SPL nhoû hôn ngöôõng do nhieãu che quyeát ñònh. Tone che nhieãu (Tone – Masking - Noise, TMN): Ví duï nhö 1 tone ôû taàn soá trung taâm cuûa 1 baêng nhieãu (baêng thoâng laø 1 Bark) che baêng nhieãu ñoù khi möùc SPL cuûa baêng nhieãu thaáp hôn möùc ngöôõng do tone che quyeát ñònh . Nhieãu che nhieãu (Noise - Masking – Noise, NMN): Ñaây laø tröôøng hôïp maø 1 nhieãu baêng thoâng heïp bò che bôûi 1 baêng nhieãu khaùc. Hieän töôïng che khoâng ñoàng thôøi :xaûy ra khi caùc tone (hoaëc nhieãu) ñöôïc phaùt leân ñoàng thôøi nhöng gaàn nhau theo thôøi gian. Hieän töôïng tieàn che xaûy ra khi moät tone (hoaëc nhieãu) bò che bôûi moät tone (hoaëc nhieãu) xaûy ra sau. Töông töï, hieän töôïng haäu che khi moät tone xaûy ra tröôùc che moät tone xaûy ra sau ñoù. Boä maõ hoaù thuï caûm phaân tích thaønh phaàn taàn soá vaø bieân ñoä cuûa tín hieäu audio vaøo vaø so saùnh vôùi moâ hình aâm sinh lyù cuûa tai ngöôøi. Boä maõ hoaù loaïi boû caùc thaønh phaàn dö thöøa khoâng caàn thieát ( phaàn tai ngöôøi khoâng caûm nhaän ñöôïc) vì vaäy giaûm 1 löôïng ñaùng keå döõ lieäu caàn maõ hoaù. Veà maët lyù thuyeát, phöông phaùp naøy laøm hao huït thoâng tin nhöng tai ngöôøi vaãn khoâng caûm thaáy ñöôïc söï suy giaûm chaát löôïng tín hieäu audio. II. MAÕ HOÙA BAÊNG PHUÏ Trong phöông phaùp maõ hoaù baêng phuï tín hieäu Audio ñöôïc cho vaøo 1 baêng loïc goàm M maïch loïc thoâng daõi chieám ñaày phoå taàn nghe ñöôïc. Moâ hình aâm taâm lyù ñöôïc söû duïng ñeå tính toaùn ngöôõng che cho moãi baêng phuï. Loái ra cuûa moãi maïch loïc ñöôïc laáy maãu tôùi haïn, vaø ñöôïc löôïng töû hoaù vaø maõ hoaù moät caùch rieâng bieät. Vieäc löôïng töû hoaù cuûa moãi baêng phuï ñöôïc döïa treân tæ soá naêng löôïng ñænh treân möùc che (ñoä cheânh leäch giöõa thaønh phaàn caùc möùc SPL cao nhaát vaø ngöôõng che) tính ñöôïc cho moãi baêng phuï. Tæ soá naøy ñöôïc söû duïng bôûi boä phaân phoái bit ñeå phaân boá soá bit caàn thieát cho vieäc löôïng töû hoaù moãi baêng phuï, caùc thaønh phaàn thaáp hôn ngöôõng che thì khoâng ñöôïc maõ hoaù. Cuoái cuøng caùc maãu löôïng töû hoaù ñöôïc ñoùng thaønh caùc khung döõ lieäu, trong khung coù keøm theo caùc döõ lieäu phuï khaùc. Phaàn maïch giaûi maõ thì ñôn giaûn hôn do noù khoâng caàn moâ hình aâm taâm lyù. Caùc khung döõ lieäu ñöôïc môû ra, caùc maãu baêng phuï thì ñöôïc giaûi maõ vaø ñuôïc phaân tích taàn soá thôøi gian ñeå taïo laïi tín hieäu audio ban ñaàu. MAÕ HOAÙ BIEÁN ÑOÅI Trong phöông phaùp maõ hoaù bieán ñoåi caùc maãu Audio trong mieàn thôøi gian ñöôïc chuyeån sang mieàn taàn soá nhôø caùc pheùp bieán ñoåi toaùn hoïc. Caùc boä maõ hoaù coù theå söû duïng caùc pheùp bieán ñoåi nhö pheùp bieán ñoåi Fourier rôøi raïc DFT (Discrete Fourier Transform) hoaëc MDCT. Caùc heä soá coù ñöôïc töø caùc pheùp bieán ñoåi ñöôïc löôïng töû hoaù vaø maõ hoaù döïa treân moâ hình aâm taâm lyù, caùc thaønh phaàn bò che ñöôïc loaïi boû. Ñöùng treân quan ñieåm thoâng tin, söï bieán ñoåi laøm giaûm Entropy cuûa tín hieäu cho pheùp maõ hoaù hieäu quaû hôn. Trong caùc boä maõ hoaù bieán ñoåi thích nghi, moät moâ hình ñöôïc söû duïng ñeå löôïng töû hoaù thích nghi moãi baêng phuï, nhöng caùc heä soá trong moãi baêng ñöôïc löôïng töû hoaù vôøi cuøng soá bit. Thuaät toaùn phaân phoái bit tính toaùn nhieãu löôïng töû hoaù trong moãi baêng ñeå coù ñöôïc tæ soá S/N caàn thieát cho vieäc che. Trong vaøi tröôøng hôïp toác ñoä bit loái ra coù theå thay ñoåi. Tröôùc khi truyeàn ñi , döõ lieäu thöôøng ñöôïc neùn vôùi phöông phaùp maõ hoaù Entropy, chaúng haïn nhö maõ hoaù Huffman. Moâ hình maõ hoùa thích nghi ñöôïc minh hoïa nhö hình sau: Maõ hoaù Entropy Löôïng töû hoaù thích nghi Boä ñeäm, Bieán ñoåi Audio_vaøo Audio ra FFT vaø moâ hình aâm taâm lyù Tính toaùn ngöôõng che Boä maõ hoaù bieán ñoåi thích nghi MAÕ HOAÙ MP3 ( MP3 ENCODING) Tín hieäu vaøo boä maõ hoùa laø boä ñieàu bieán maõ xung bình thöôøng (PCM) ñöôïc phaân chia vaøo khung coù 1152 maãu. Khung naøy ñöôïc chia laøm hai granules, moãi granule laø 576 maãu. Khung ñöôïc gôûi ñeán caû hai khoái bieán ñoåi Fourier nhanh (FFT) vaø baêng loïc phaân tích. Phaân tích pheùp bieán ñoåi Fourier nhanh (FFT analysis) Khoái FFT chuyeån 576 maãu ñeán mieàn taàn soá söû duïng pheùp bieán ñoåi Fourier. Ngöôõng che (Masking Threshold) Thoâng tin taàn soá töø khoái FFT ñöôïc söû duïng ñeå lieân keát moâ hình aâm taâm lyù ñeå xaùc ñònh ngöôõng che cho taát caû caùc taàn soá. Ngöôõng che ñöôïc aùp duïng vaøo boä löôïng töû hoùa ñeå xaùc ñònh soá bit caàn thieát maõ hoùa cho moãi maãu. Chuùng thöôøng xem xeùt lieäu söï chuyeån ñoåi cöûa soå coù caàn thieát trong khoái bieán ñoåi cosin rôøi raïc caûi tieán (MDCT). Baêng loïc phaân tích (Analysis Filterbank) Baêng loïc phaân tích bao goàm 32 baêng thoâng loïc baèng nhau. Ñaàu ra cuûa baêng loïc laø 1 maãu tôùi haïn. Nghóa laø moãi granules goàm 576 maãu, coù 18 maãu ra töø 32 baêng thoâng loïc, maø ñöa ra toång coäng laø 576 maãu subband. MDCT vôùi cöûa soå ñoäng Maãu subband ñöôïc bieán ñoåi ñeán mieàn taàn soá thoâng qua MDCT. MDCT thöïc hieän 18 maãu (khoái daøi ) cuøng thôøi ñieåm ñeå ñaït ñoä phaân giaûi taàn soá cao, thöïc hieän 6 maãu (khoái ngaén ). Do coù söï choàng cöûa soå leân nhau 50% neân kích thöôùc cöûa soå laø 36 maãu cho khoái daøi vaø 12 maãu cho khoái ngaén. Khoái ngaén caûi thieän ñoä phaân thôøi gian toát hôn ñeå duøng cho caùc tín hieäu chuyeån tieáp vaø laøm nhoû tieáng vang laïi. Khoái daøi cho pheùp ñoä phaân giaûi taàn soá toát hôn. Lôùp 3 coù 3 mode choïn khoái : 2 mode khi taát caû caùc loái ra cuûa baêng loïc ñeàu qua ñöôïc bieán ñoåi MDCT, vaø 1 mode hoãn hôïp khi 2 baêng taàn thaáp söû duïng khoái daøi coøn 30 baêng taàn cao söû duïng khoái ngaén . Tröôùc moãi ñôït MDCT xuaát ra subband, moãi subband cuõ phaûi nghòch ñaûo taàn soá (nhaân -1) ñeå doøng phoå xuaát hieän theo thöù töï taêng daàn. Khi maõ hoùa thuï caûm entropy vöôït quaù giaù trò 1800 seõ xaùc ñònh haèng soá. Khoái loïc MDCT seõ ñöôïc chuyeån ñeán cöûa soå ngaén. Ñeå duy trì thuoäc tính taùi taïo laïi cuûa MDCT, söï chuyeån ñoåi giöõa khoái ngaén vaø khoái daøi khoâng theå töùc thì, vì vaäy coù cöûa soå chuyeån ñoåi töø daøi ñeán ngaén, töø ngaén ñeán daøi. Chieàu daøi cuûa khoái ngaén baèng 1/3 khoái daøi. Trong cheá ñoä khoái ngaén, 3 khoái ngaén thay theá 1 khoái daøi maø khoâng keå ñeán loaïi cöûa soå aùp duïng, soá doøng MDCT coøn laïi khoâng ñoåi. Cho 1 khoái rieâng bieät cuûa döõ lieäu, taát caû caùc keânh khoái loïc coù theå cuøng kieåu khoái MDCT ( daøi hoaëc ngaén) hoaëc 1 mode khoái hoãn hôïp nôi maø subband taàn soá nhoû hôn 2 cho pheùp khoái daøi trong khi coøn laïi daõi treân 30 coù khoái ngaén. Cheá ñoä hoãn hôïp cung caáp ñoä phaân giaûi taàn soá toát hôn cho taàn soá thaáp hôn trong khi duy trì ñoä phaân giaûi thôøi gian cao hôn. MDCT bieán ñoåi tín hieäu aâm thanh vaøo mieàn taàn soá, sinh ra bieät danh ñöôïc ñöa vaøo bôûi maãu con trong khoái loïc coù theå thoaùt khoûi töøng phaàn (partially cancelled). Chia tæ leä vaø löôïng töû hoùa (Scaling vaø Quantization) Ngöôõng che ñöôïc söû duïng ñeå tính toaùn coù bao nhieâu bit caàn thieát trong moãi baêng tôùi haïn ñeå maõ hoùa maãu sao cho nhieãu löôïng töû hoùa khoâng theå nghe ñöôïc. Boä maõ hoaù thöôøng söû duïng toác ñoä bit phuø hôïp vôùi yeâu caàu. Maõ hoaù Huffman laø moät phaàn cuûa pheùp laëp bôûi vì noù khoâng coù khaû naêng xaùc ñònh soá bit caàn thieát cho vieäc maõ hoaù. Maõ hoùa Huffman vaø sinh ra doøng bit (Huffman Coding and Bitstream Generation) Maãu löôïng töû hoaù laø löu tröõ vaø maõ hoaù Huffman trong doøng bit doïc theo heä soá tæ leä vaø thoâng tin (side infomation). Huffman laø phöông phaùp maõ hoaù khoâng maát döõ lieäu duøng töø maõ (codeword) ñeå löu tröõ bit nhò phaân cuûa “symbol”. Ví duï caùc symbol A, B, C, D ñöôïc maõ hoaù thoâng qua caùc code word nhö sau: Symbol Code word A B C D 0 10 110 111 Symbol A vaø B ñöôïc phaân bieät thoâng qua chieàu daøi cuûa töø maõ töông öùng laø “0” vaø “10”. Theá maïnh cuûa cuûa maõ hoaù Huffman laø taát caû code word coù khaû naêng giaûi maõ ñoàng nhaát ( uniquely decodable). Vì vaäy trình töï maõ hoaù cuûa caùc bit laø: 01101110100 töông öùng vôùi chuoãi döõ lieäu: “ACDABA” Giaûi thuaät maõ hoaù Huffman döïa treân moâ hình caây maõ hoaù (coding tree) duøng ñeå phaân bieät caùc symbol thoâng qua code word. Symbol naøo coù xaùc suaát cao thì code word ngaén, ngöôïc laïi symbol coù xaùc suaát thaáp thì code daøi hôn. Trình töï thöïc hieän theo caùc böôùc sau: Saép xeáp soá laàn xuaát hieän ( xaùc suaát) caùc symbol theo thöù töï giaûm daàn. Noái 2 symbol laïi vôùi nhau theo thöù töï töø treân xuoáng ñeå taïo symbol môùi. Tieáp tuïc böôùc 2 cho ñeán khi coøn laïi 1 symbol vôùi xaùc suaát laø 1. Tieán haønh ñaùnh soá cho caây maõ hoaù, baét ñaàu töø goác (symbol coù xaùc suaát laø 1) trôû leân phía treân thì ñaùnh soá “0” ngöôïc laïi töø goác ñi xuoáng ta ñaùnh soá “1”. Ví duï ta coù chuoãi caàn maõ hoaù laø “ EXAMPLE OF HUFFMAN CODING”. Ñaàu tieân ta tính xaùc suaát cuûa töøng symbol trong chuoãi kyù töï. Symbol Xaùc suaát E X A M P L O F H U C D I N G space 2/25 1/25 2/25 2/25 1/25 1/25 2/25 3/25 1/25 1/25 1/25 1/25 1/25 2/25 1/25 3/25 Tieáp tuïc saép xeáp caùc symbol theo xaùc xuaát giaûm daàn. Thoâng tin (Side Information) Thoâng tin chöùa caùc thoâng soá ñieàu khieån thao taùc giaûi maõ nhö laø söï löïa choïn baûng Huffman, chuyeån ñoåi cöûa soå, ñieàu khieån ñoä lôïi (gain control). CHÖÔNG IV: GIAÛI MAÕ MPEG1 LÔÙP 3 I. GIAÛI MAÕ MP3 (MP3 DECODING) Sô ñoà caáu truùc : Ñònh daïng khung (Frame Format) Khung laø moät khaùi nieäm trung taâm khi giaûi maõ doøng bit MP3. Noù bao goàm 1152 maãu ñôn hoaëc maãu mieàn taàn soá, ñöôïc chia hai granules moãi granules goàm 576 maãu. Moãi granules ñöôïc chia laøm 32 khoái subband coù 18 doøng taàn soá. Phoå taàn soá dao ñoäng töø 0 tôùi FS/2 Hz. Subband phaân chia phoå thaønh 32 phaàn baèng nhau. Moãi subband chöùa 18 maãu maø ñaõ ñöôïc bieán ñoåi ñeán mieàn taàn soá baèng pheùp bieán ñoåi MDCT. 576 doøng taàn soá trong moät “granule” ñöôïc phaân chia vaøo trong 21 heä soá tæ leä ñöôïc thieát keá ñeå phuø hôïp taàn soá baêng tôùi haïn caøng gaàn caøng toát. Daõi heä soá tæ leä ñöôïc söû duïng chính cho vieäc löôïng töû hoùa laïi (requantization) cuûa caùc maãu. Khung (frame) bao goàm 4 phaàn: tieâu ñeà (header), thoâng tin (side infomation), döõ lieäu chính (main data), döõ lieäu phuï thuoäc (ancillary data): Chieàu daøi cuûa khung coá ñònh cho toác ñoä bit phuø hôïp ,vôùi ñoä leäch coù theå laø moät byte ñeå duy trì ñoä chính xaùc toác ñoä bit. Tieâu ñeà File MPEG ñöôïc xaây döïng töø nhöõng phaàn töû nhoû hôn goïi laø khung, khung laø 1 muïc ñoäc laäp. Moãi khung goàm header vaø thoâng tin aâm thanh. Vì vaäy baïn coù theå caét 1 phaàn naøo ñoù cuûa file MPEG vaø haùt tröïc tieáp. Nhöng ôû lôùp III thì khoâng ñuùng nhö vaäy. Höôùng ñeán toå chöùc döõ lieäu beân trong MPEG Version 1 Layer III, khung thöôøng leä thuoäc vaøo nhöõng thaønh phaàn khaùc vaø khoâng theå caét ra haùt tröïc tieáp ñöôïc. Khi baïn muoán ñoïc thoâng tin veà file MPEG thoâng thöôøng chæ ñoïc veà khung ñaàu tieân, veà header vaø cho raèng nhöõng khung khaùc cuõng töông töï. Ñieàu naøy coù theå khoâng ñuùng trong moïi tröôøng hôïp. File MPEG coù toác ñoä bit khaùc nhau coù theå ñöôïc söû duïng thì goïi laø chuyeån ñoåi toác ñoä bit (bitrate switching) coù nghóa laø toác ñoä bit chuyeån ñoåi doïc theo noäi dung cuûa khung. Vôùi caùch naøy toác ñoä bit thaáp hôn coù theå ñöôïc söû duïng trong khung maø khoâng laøm giaûm chaát löôïng aâm thanh. Khung coù cô cheá kieåm tra loãi CRC. Boä kieåm tra loãi daøi 16 bit . Neáu coù loãi xaûy ra thì ñöôïc löu tröõ trong phaàn header. Sau khi kieåm tra loãi, coù theå tính chieàu daøi cuûa khung vaø söû duïng noù neáu caàn nhöõng thoâng tin khaùc veà header hay tính CRC cuûa khung. Tieâu ñeà coù chieàu daøi 4 bytes (32 bits) vaø chöùa thoâng tin veà lôùp , toác ñoä bit, taàn soá maãu vaø cheá ñoä stereo ñöôïc moâ taû cuï theå nhö sau: AAAAAAAA AAABBCCD EEEEFFGH IIJJKLMM Sign Length (bits) Position (bits) Description A 11 (31-21) Ñoàng boä khung( taát caû caùc bit ñeàu ñöôïc ñaët ôû traïng thaùi 1) B 2 (20,19) MPEG Audio version ID 00 - MPEG Version 2.5 01 – Bit döï tröõ 10 - MPEG Version 2 (ISO/IEC 13818-3) 11 - MPEG Version 1 (ISO/IEC 11172-3) C 2 (18,17) Phaàn moâ taû Layer 00 – döï tröõ 01 - Layer III 10 - Layer II 11 - Layer I D 1 (16) Bit baûo veä 0 – kieåm tra loãi CRC (16bit CRC follows header) 1 - khoâng kieåm tra. E 4 (15,12) Chæ soá toác ñoä bit 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 V1 - MPEG Version 1 V2 - MPEG Version 2 vaø Version 2.5 L1 - Layer I L2 - Layer II L3 - Layer III "free" : format tuyø yù. "bad" :giaù trò khoâng ñöôïc pheùp söû duïng. File MPEG coù toác ñoä bit thay ñoåi (VBR). Moãi khung coù theå ñöôïc taïo ra vôùi toác ñoä bit khaùc nhau vaø ñöôïc söû duïng trong taát caû caùc lôùp( giaûi maõ lôùp 3 cuõng duøng phöông phaùp naøy). F 2 (11,10) Chæ soá taàn soá toác ñoä maãu bits MPEG1 MPEG2 MPEG2.5 00 44100 Hz 22050 Hz 11025 Hz 01 48000 Hz 24000 Hz 12000 Hz 10 32000 Hz 16000 Hz 8000 Hz 11 Reserv. reserv. reserv. G 1 (9) Bit ñeäm (padding bit) 0 - khung khoâng söû duïng bit ñeäm 1 - khung söû duïng bit ñeäm vôùi 1 khe caém môû phuï. Caùch tính chieàu daøi khung : tröôùc tieân ta haõy phaân bieät kích thöôùc khung vaø chieàu daøi khung. Kích thöôùc khung laø soá maãu coù trong 1 khung . thoâng thöôøng ôû lôùp I coù 384 maãu, lôùp II vaø III coù 1152 maãu. Chieàu daøi khung laø chieàu daøi cuaû khung khi ñaõ neùn xong vaø ñöôïc tính treân slot. Ôû lôùp I , 1 slot coù 4 byte coøn ôû lôùp II vaø III chæ coù 1 byte. Chieàu daøi khung coù theå thay ñoåi thoâng qua boä ñeäm hoaëc söï bieán ñoåi toác ñoä bit. Lôùp I : FrameLengthIn Bytes = (12 * BitRate / SampleRate + Padding) * 4 Lôùp II vaø III: FrameLengthIn Bytes = 144 * BitRate / SampleRate + Padding H 1 (8) Bit daønh rieâng. I 2 (7,6) Channel Mode 00 - Stereo 01 - Joint stereo (Stereo) 10 - Dual channel (2 mono channels) 11 – Single channel (Mono) J 2 (5,4) Mode môû roäng (chæ söû duïng trong Joint stereo) K 1 (3) Baûn quyeàn 0 - Audio khoâng baûn quyeàn 1 – Audio coù baûn quyeàn L 1 (2) Nguyeân baûn 0 – baûn phuï media 1 – baûn goác media M 2 (1,0) Taàm quan troïng (Emphasis) 00 - none 01 - 50/15 ms 10 – bit döï tröõ 11 - CCIT J.17 Thoâng tin (side infomation) Phaàn thoâng tin chöùa thoâng tin caàn thieát ñeå giaûi maõ döõ lieäu chính nhö : löïa choïn baûng Huffman, heä soá tæ leä, caùc thoâng soá löôïng töû hoaù laïi vaø söï löïa choïn cöûa soå. Thoâng tin phuï daøi 17 byte ôû keânh ñôn, 32 byte ôû keânh ñoâi. Main data begin (1) ( 2) SI granules 0 SI granules 1 Main data begin: Ñieåm baét chöùa nhöõng döõ lieäu chính cuûa khung SI granules 0 : thoâng tin veà frame ôû vò trí thöù 0 SI granules 1 : thoâng tin veà frame ôû vò trí thöù 1 (1): Bit duøng rieâng ( private bits) do ngöôøi söû duïng ñònh nghóa. (2): Thoâng tin veà vieäc löïa choïn heä soá tæ leä. c. Döõ lieäu chính (main data) Chöùa nhöõng thoâng tin veà heä soá tæ leä (scale factor), maãu subband ñöôïc maõ hoaù (coded subband samples), döõ lieäu hoã trôï (auxiliary data). Phaàn döõ lieäu chính chöùa heä soá tæ leä maõ hoaù vaø doøng taàn soá maõ hoaù Huffman, chieàu daøi phuï thuoäc vaøo toác ñoä bit vaø chieàu daøi cuûa döõ lieäu phuï. Chieàu daøi cuûa phaàn heä soá tæ leä phuï thuoäc vaøo heä soá tæ leä coù ñöôïc söû duïng laïi hay khoâng vaø töông töï ñoái vôùi chieàu daøi cöûa soå (daøi hay ngaén). Heä soá tæ leä ñöôïc söû duïng trong boä löôïng töû hoaù cuûa maãu. Yeâu caàu bit maõ hoaù Huffman bieán ñoåi theo thôøi gian trong suoát tieán trình maõ hoaù. Ñònh daïng toác ñoä bit bieán ñoåi coù theå ñöôïc söû duïng ñeå xöû lyù ñieàu naøy nhöng toác ñoä bit phuø hôïp thì thöôøng yeâu caàu cho moät öùng duïng. Boä maõ hoaù thöïc hieän treân khoái döõ lieäu daøi 1152 maãu. Khi chieàu daøi döõ lieäu maõ hoaù nhoû hôn trung bình soá bit caàn thieát, boä maõ hoaù ñöa phaàn kích thöôùc dö ra naøy vaøo boä döï tröõ ( reservoir). Khi kích thöôùc boä maõ hoaù quaù lôùn seõ möôïn laïi nhöõng bit dö naøy. Boä maõ hoaù chæ coù theå möôïn bit dö töø khung tröôùc noù (past frame), khoâng theå möôïn ñöôïc töø khung sau noù (future frame) . Vì vaäy coù moät kyõ thuaät döï tröõ bit ñöôïc ñònh nghóa maø khoâng cho pheùp söû duïng kho döõ lieäu chính trong moät khung ñeå ñöôïc duøng trong 2 khung lieân tieáp nhau : Trong ví duï naøy frame 1 söû duïng bit töø frame 0 vaø frame 1. Frame 2 söû duïng bit töø frame1. Frame 3 yeâu caàu cao hôn söû duïng bit töø frame1, 2vaø 3. Cuoái cuøng frame 4 chæ söû duïng bit taïi frame 4. Tham soá “main _data_begin” trong thoâng tin cho bieát nhöõng bit töø khung phía tröôùc caàn thieát hay khoâng. Taát caû döõ lieäu cho moät khung ñöôïc löu tröõ trong khung tröôùc ñoù. Kích thöôùc lôùn nhaát cuûa kho löu tröõ bit laø 511 byte. Döõ lieäu phuï (Ancillary Data) Phaàn döõ lieäu naøy do ngöôøi duøng ñònh nghóa , khoâng caàn thieát ñeå giaûi maõ döõ lieäu audio. Giaûi maõ Huffman Ñeå giaûi maõ Huffman chuùng ta baét ñaàu ñi töø goác cuûa caây nhò phaân Huffman. Neáu gaëp bit “1” thì ñi sang beân phaûi, ngöôïc laïi gaëp bit “0” thì sang beân traùi cho ñeán khi gaëp nuùt laù thì döøng. Ví duï ta coù 1 chuoãi bit “00110”, bit ñaàu laø “0” neân ta ñi sang traùi ñeán nuùt F4. Vì chöa laø nuùt laù neân tieáp tuïc bit thöù 2 (cuõng ñi sang traùi) ñeán nuùt F2 , bit thöù 3 laø “1” neân chuyeån höôùng sang phaûi. Taïi ñaây vì ñeán nuùt laù neân xuaát ra kí töï “i”. Tieáp tuïc giaûi maõ 2 bit coøn laïi “10”, tröôùc tieân vì laø bit “1” neân ta ñi sang phaûi ñeán nuùt F3, tieáp tuïc bit “0” ñi sang traùi ñeán nuùt laù => xuaát ra kyù töï “a”. Thöïc thi quaù trình giaûi maõ byte huffman_decode_byte ( pointer to binary tree node ) { //tröôùc tieân chuùng ta kieåm tra xem nuùt hieän taïi laø nuùt laù hay nuùt trung gian //neáu laø nuùt trung gian thì kieåm tra chieàu daøi bit tìm kieám phaûi nhoû hôn 8 if( node->value != 256 )  {  // Neáu laø nuùt laù thì xuaát ra kyù töï  return node->value;  } else  { //chuùng ta ñang ñuùng taïi node trung gian ( fictive node), tieáp tuïc ñi sang //phaûi hay traùi tuyø thuoäc vaøo bit keá tieáp  //traû veà giaù trò byte ñöôïc giaûi maõ  if( get_bit() == 0)   {   // ñi sang beân traùi   return ( huffman_decode_byte( node->left_node ) );   }  else   {   // ñi sang beân phaûi   return ( huffman_decode_byte( node->right_node ) );   }  } } Löôïng töû hoaù laïi (requantization) Khoái löôïng töû hoaù laïi söû duïng heä soá tæ leä ñeå bieán ñoåi giaù trò maõ hoaù Huffman isi thaønh giaù trò phoå xri söû duïng coâng thöùc sau: C: daûi toaøn cuïc vaø daûi heä soá tæ leä phuï thuoïâc heä soá ñaït ñöôïc töø thoâng tin phuï vaø heä soá tæ leä. Saép xeáp laïi thöù töï ( reordering) “Boä löôïng töû hoaù laïi” phaûi saép xeáp laïi thöù töï theo baêng heä soá tæ leä söû duïng cöûa soå ngaén. Trong ví duï sau ñaây coù 1 baêng goàm 18 maãu chöùa 3 cöûa soå cuûa 6 maãu. Nhöõng cöûa soå ngaén ñöôïc saép xeáp laïi theo thöù töï trong boä maõ hoaù ñeå maõ hoùa Huffman hieäu quaû hôn, bôûi vì maãu gaàn nhau (sample close) trong mieàn taàn soá( thaáp hoaëc cao) coù cuøng giaù trò. Giaûi maõ stereo Doøng bit neùn coù theå hoå trôï 1 hoaëc 2 keânh audio trong 4 cheá ñoä: Moät cheá ñoä “monophonic” cho keânh aâm thanh ñôn. Moät cheá ñoä“dual_momophonic” cho 2 keânh aâm thanh ñoäc laäp. Moät cheá ñoä“stereo” cho nhöõng keânh “stereo” maø nhöõng bit duøng chung nhöng khoâng ñöôïc söû duïng maõ hoaù joint_stereo. Moät cheá ñoä “joint_stereo” maø coù nhöõng thuaän lôïi veà moái töông quan giöõa nhöõng keânh stereo (MS stereo) hoaëc khoâng thích hôïp ñoái vôùi nhöõng pha khaùc nhau giöõa caùc keânh (cöôøng ñoä stereo) hoaëc caû hai. Giaûi maõ Stereo MS Trong cheá ñoä keânh traùi vaø phaûi ñöôïc chuyeån ñoåi vaøo toång (M), sai phaân (difference) (S) cuûa 2 keânh. Trong ñoù toång tín hieäu coù nhieàu thoâng tin hôn tín hieäu sai phaân. Ñeå giaûi maõ keânh traùi vaø phaûi coù theå ñöôïc taùi taïo laïi baèng coâng thöùc: Giaûi maõ aâm thanh (stereo) Trong ñoù: i laø chæ soá doøng taàn soá. Vaø vieäc xöû lyù MS stereo laø neùn khoâng toån thaát. Giaûi maõ cöôøng ñoä stereo Boä giaûi maõ taùi taïo laïi keânh traùi vaø phaûi döïa treân tín hieäu ñôn L+R (L‘ i) ñöôïc chuyeån ñoåi trong keânh traùi vaø söï caân baèng maø ñöôïc chuyeån ñoåi thay vì duøng heä soá tæ leä (isratio sfb ) cho keânh phaûi. Giaûi maõ joint stereo Trong ñoù : ispossfb : giôùi haïn trong khoaûng 0 ->6. Vì theá tan() ñöôïc thay theá baèng baûng coù saún. Giaûm bieät danh (Alias Redution) Giaûm bieät danh ñöôïc yeâu caàu ñeå loaïi boû hieäu öùng bieät danh cuûa khoái loïc ña pha trong boä maõ hoaù (khoâng öùng duïng cho granule söû duïng khoái ngaén). Giaûm bieät danh goàm 8 buttrefly cho moãi subband. Moãi butterfly choáng bieät danh luaân phieân (rotation) ñöôïc aùp duïng ñeán 1 trong 8 caëp thieát keá cuûa doøng quang phoå. Noù khoâng aûnh höôûng hoaøn toaøn ñeán thuoäc tính taùi caáu truùc (reconstructor) cuûa khoái loïc, nhöng caûi tieán heä soá neùn cuûa boä maõ hoaù baèng caùch coá gaéng chöùa naêng löôïng trong moãi subband. Moät granule aùnh xaï ñeán mieàn thôøi gian - taàn soá cuûa ½ khung döõ lieäu vaøo. Khoâng gioáng nhö vuøng thôøi gian - taàn soá thoâng thöôøng noù ñöôïc saép xeáp laïi cho giaûm bieät danh , ñaàu tieân saép xeáp trong mieàn taàn soá vaø sau ñoù tieáp tuïc trong mieàn thôøi gian. Vì vaäy 18 maãu trong mieàn thôøi gian cuûa moãi subband ñöôïc nhoùm laïi vôùi nhau. Butterfly ñöôïc aùp duïng cho moãi maãu luaân phieân trong moãi subband luaân phieân. Boä maõ hoaù ñaõ gôõ boû ñieåm naøy ñeå ñaûo ngöôïc MDCT ñeå taùi caáu truùc maãu subband trong heä thoáng giaûm alias cho taùi caáu truùc baèng khoái loïc toång hôïp. Boä giaûi maõ butterfly cuõng töông töï tröø phi coù söï bieán ñoåi trong kí hieäu. IMDCT IMDCT( Inverse Modified Discrete Cosine Transform)bieán ñoåi vaïch phoå (Xk) thaønh khoái loïc ña pha maãu subband (Si ) Bieán ñoåi IMDCT n=12 : khoái ngaén n=36: khoái daøi. Trong khoái daøi IMDCT xuaát ra 36 giaù trò cho 18 giaù trò vaøo. Ñaàøu xuaát ñöôïc laáy cöûa soå phuï thuoäc vaøo kieåu khoái (baét ñaàu, löôïng trung bình, keát thuùc), nöûa ñaàu (first haft) ñöôïc choàng leân nhau, nöûa sau ñöôïc löu vaøo khoái. Ñoái vôùi khoái ngaén 3 laàn bieán ñoåi ñöôïc thöïc hieän ñeå sinh ra 12 giaù trò xuaát. Ba vector ñöôïc laáy cöûa soå vaø choàng leân nhau. Coù 6 giaù trò “0” noái vaøo vector keát quaû cho neân vector coù ñoä daøi 36. Boä xuaát ra töø IMDCT laø 18 maãu mieàn thôøi gian cho 32 khoái subband. Khoái loïc ña pha toång hôïp ( Synthesis Polyphase Filterbank) Khoái loïc ña pha toång hôïp bieán ñoåi 32 khoái subband cuûa 18 maãu mieàn thôøi gian trong moãi granule ñeán 18 khoái cuûa 32 maãu PCM. Khoái loïc hoaït ñoäng treân 32 maãu taïi cuøng 1 thôøi ñieåm, 1 trong soá khoái subband ñöôïc minh hoaï theo hình döôùi ñaây: 32 giaù trò subband ñöôïc bieán ñoåi thaønh 64 giaù trò vector V söû duïng bieán theå cuûa IMDCT (ma traän). Vector V ñöôïc ñaët vaøo haøng ñôïi FIFO löu tröõ 16 vector cuoái cuøng. Vector U ñöôïc taïo ra töø 32 khoái thaønh phaàn trong FIFO, cöûa soå D ñöôïc aùp vaøo vector U ñeå sinh ra vector W. Maãu taùi taïo laïi seõ thu ñöôïc töø vector W baèng caùch phaân tích noù thaønh 16 vector coù kích côõ 32 vaø tính toång caùc vector ñoù. II. NHÌN CHUNG VEÀ HIEÄU QUAÛ CAÙC GIAÛI THUAÄT GIAÛI MAÕ MP3 1 . Giaûi maõ Huffman Ñònh nghóa : Boä giaûi maõ Huffman chuyeån ñoåi caùc maõ coù chieàu daøi thay ñoåi trong doøng bit thaønh caùc vaïch phoå. Giaûi maõ duøng 32 baûng coá ñònh töø chuaån ([1]) chöùa thoâng tin veà quaù trình maõ hoùa ñaõ ñöôïc tieán haønh nhö theá naøo. Doøng bit trong vuøng thoâng tin ñöôïc duøng ñeå choïn löïa caùc baûng cho caùc phaàn khaùc nhau cuûa phoå taàn soá. Coù moät cô cheá ñaëc bieät trong boä giaûi maõ duøng cho vieäc giaûi maõ caùc giaù trò lôùn. Töø maõ coù chieàu daøi thay ñoåi daøi nhaát cho moïi baûng laø 19 bit. Chæ coù 16 baûng khaùc nhau ñöôïc ñònh nghóa theo chuaån . Tìm kieám caây nhò phaân : Caùc baûng giaûi maõ Huffman coù theå chuyeån thaønh trong caùc caây nhò phaân. Moãi caây theå hieän moät baûng cuï theå. Nhöõng caây ñöôïc duyeät qua theo töøng bit trong doøng bit , trong ñoù ‘0’ ñi beân ‘traùi’ vaø ‘1’ ñi beân ‘phaûi’. Toaøn boä töø maõ ñöôïc giaûi maõ moät caùch ñaày ñuû khi gaëp moät nuùt laù. Caùc nuùt laù chöùa caùc giaù trò cuûa ñöôøng phoå . Baûng tìm kieám tröïc tieáp (Direct Table Lookup) : Ñoái vôùi phöông phaùp baûng tìm kieám tröïc tieáp, boä giaûi maõ söû duïng caùc baûng lôùn. Chieàu daøi cuûa moãi baûng laø 2b , trong ñoù b laø soá bit lôùn nhaát trong töø maõ daøi nhaát cuûa baûng ñoù . Ñeå giaûi maõ moät töø maõ, boä giaûi maõ ñoïc “b” bit, caùc bit naøy ñöôïc duøng nhö moät chæ soá tröïc tieáp troû vaøo baûng. Trong baûng, moãi muïc chöùa moät giaù trò ñöôøng phoå vaø thoâng tin veà chieàu daøi thöïc cuûa töø maõ. Giaûi maõ theo cuïm (Clustered Decoding) : Phöông phaùp giaûi maõ theo cuïm keát hôïp phöông phaùp caây nhò phaân vaø baûng tìm kieám tröïc tieáp . Moät soá bit coá ñònh (ví duï nhö 4) ñöôïc ñoïc töø doøng bit vaø ñöôïc duøng nhö moät chæ soá tìm kieám trong moät baûng. Moãi phaàn töû baûng chöùa moät “miss” bit hay moät “hit” bit cho bieát lieäu töø maõ ñaõ ñöôïc giaûi maõ ñaày ñuû chöa . Neáu moät “hit” bit ñöôïc phaùt hieän giaù trò ñöôïc ñoïc töø phaàn töû baûng cuõng nhö soá bit maø ñöôïc duøng cho töø maõ. Neáu laø “miss” bit giaûi maõ tieáp tuïc baèng caùch duøng thoâng tin töø phaàn töû baûng ñeå xaùc ñònh caàn bao nhieâu bit theâm nöõa ñeå ñoïc töø doøng bit duøng cho chæ soá tieáp theo, cuõng nhö ñòa chæ baét ñaàu cuûa baûng keá tieáp ñöôïc duøng. 2 . Boä löôïng töû hoùa laïi (Requantizer) Ñònh nghóa : Coâng thöùc cuûa löôïng töû hoùa laïi moâ taû vieäc xöû lyù ñeå ñònh tæ leä laïi ñoái vôùi döõ lieäu ñaõ ñöôïc maõ hoùa Huffman. Ñoä lôïi toaøn cuïc vaø ñoä lôïi cuûa khoái con aûnh höôûng taát caû caùc giaù trò trong moät cöûa soå thôøi gian. Ngoaøi ra, caùc heä soá tæ leä vaø côø hieäu chænh ñoä lôïi trong moãi baêng heä soá tæ leä . Sau ñaây laø phöông trình löôïng töû hoùa laïi cuûa caùc cöûa soå ngaén. Giaù trò ñöôïc maõ hoùa Huffman taïi chæ soá taïi boä ñeäm thöù i ñöôïc goïi laø isi , ngoõ vaøo cuûa khoái saép thöù töï laïi thöù i ñöôïc goïi laø xri : Duøng cho khoái ngaén : A=global_gain [gr]-210 –(8)*subblock_gain[window][gr] B=scalefac_multiplier*scalefac_s[gr][ch][sfb][window] Cho khoái daøi, coâng thöùc laø: A=global_gain [gr]-210 B=scalefac_multiplier*scalefac_l[gr][ch][sfb]+ preflag[gr]*pretab[sfb] preflag[sfb], ñöôïc söû duïng cho vieäc khuyeách ñaïi baêng heä soá tæ leä ôû taàn soá cao. Giaù trò 210 laø moät haèng soá caàn ñeå chia tæ leä caùc maãu. Giaù trò cao nhaát cuûa isi laø 8206, khoâng laø 8191 nhö ñaõ ñònh bôûi chuaån [1]. Nguyeân nhaân laø do boä giaûi maõ caáp theâm 15 vaøo giaù trò cuûa linbits. Linbits coù theå daøi 13 bit do ñoù coù gía trò cao nhaát laø 213 – 1 = 8191 cho moãi phaàn linbits . Thöïc hieän : Caû hai haøm muõ isi4/3 vaø 2A,B raát khoù tính neáu duøng haøm thö vieän toaùn hoïc chuaån pow(). Ngay caû khi duøng ñôn vò xöû lyù daáu chaám ñoäng (FPU) hay DSP vieäc tính toaùn cuõng khoâng phaûi ñôn giaûn . Haøm isi4/3 trong boä löôïng töû hoùa laïi chaáp nhaän 8207 giaù trò khaùc nhau. Baûng tìm kieám seõ nhanh, nhöng ñoøi hoûi khoaûng 256 kbits boä nhôù, chuùng ta seõ tìm moät thuaät toaùn ñöôïc ñeà caäp trong muïc phöông phaùp Newton döôùi ñaây. Haøm 2 0.25 * A * 2 -B khoâng chaáp nhaän hôn 384 giaù trò khaùc nhau. Ñieàu ñoù coù nghóa laø baûng tìm kieám seõ laø söï löïa choïn toát nhaát, löu yù raèng baûng coù theå taïo ra thaäm chí nhoû hôn (196 giaù trò ) baèng caùch laøm troøn giaù trò nhoû (< 2-35) khi haøm giaûm xuoáng gaàn zero bôûi vì khoâng aûnh höôûng ñeán keát quaû cuoái cuøng. Tieäm caän döïa treân baûng y=x4/3( Table-based Approach for y=x4/3): Baûng tìm kieám cho haøm y=x4/3 coù theå thöïc hieän deã daøng. Baûng naøy coù theå goäp vaøo nhö moät phaàn cuûa döõ lieäu khôûi taïo, hoaëc noù coù theå ñöôïc taïo ra taïi thôøi ñieåm thöïc thi neáu haøm pow() coù saün . Neáu coù ñuû boä nhôù baûng tìm kieám coù theå bao goàm giaù trò aâm cuûa isi . Ñieàu naøy seõ taêng toác ñoä vieäc giaûi maõ . Phöông phaùp Newton cho y=x4/3 (Newton’s Method for y=x4/3): Haøm y= x4/3 ñöôïc vieát laïi thaønh y3-x4=0. Daïng naøy coù theå thích hôïp vôùi phöông phaùp Newton tìm kieám noù seõ cho giaù trò y xaáp xæ vôùi x4/3. Keát quaû cuûa haøm ñöôïc tính thoâng qua vieäc laëp ñi laëp laïi quaù trình giaûm sai soá | y-x4/3| : Coâng thöùc ñöôïc vieát laïi thaønh daïng thöù hai ñeå traùnh söï öôùc luôïc daáu chaám ñoäng. Giaù trò baét ñaàu laø y0 cuûa coâng thöùc laëp aûnh höôûng ñeán soá laàn laëp caàn thieát ñeå ñaït ñöôïc ñoä chính xaùc mong muoán. Vôùi öùng duïng, ñoä chính xaùc lôùn hôn 16 bits xem nhö coù hieäu quaû. Moät giaù trò khôûi ñaàu toát cuûa y0 ñöôïc tính toaùn thoâng qua haøm ña thöùc y0  = a0 + a1 * x + a2 * x2 . Haøm naøy ñöôïc thieát keá töông töï vôùi y=x4/3 caøng gaàn caøng toát vôùi 0< x < 8207. Pheùp bieán ñoåi cosin rôøi raïc caûi tieán ñaûo ngöôïc (IMDCT) Ñònh nghóa : IMDCT bieán ñoåi caùc maãu subband töø mieàn taàn soá sang mieàn thôøi gian. Bieåu thöùc phaân tích cuûa IMDCT laø : Giaù trò cuûa n trong bieåu thöùc coù theå laø 12 cho khoái ngaén hoaëc laø 36 cho khoái daøi. Ñaàu ra töø IMDCT phaûi ñöôïc laáy cöûa soå vôùi moät haøm coá ñònh ñöôïc naïp choàng vôùi döõ lieäu töø khoái tröôùc. Thöïc hieän : Thao taùc IMDCT thì raát khoù tính toaùn ñeå tieán haønh nhö ñöôïc ñònh nghóa bôûi chuaån. Moät baûng tìm kieám coù theå ñöôïc duøng ñeå thay theá cho haøm cos() , nhöng voøng laëp beân trong phöông trình vaãn coøn ñoøi hoûi vieäc xöû lyù. Thay vì chuùng ta seõ khaûo saùt giaûi thuaät nhanh hôn cho IMDCT ôû muïc döôùi. Caùc haøm cöûa soå ñöôïc thay theá baèng moät baûng tìm kieám 4 kbits. Tính toaùn tröïc tieáp ( Direct calculation) : Töï tính toaùn tröïc tieáp IMDCT deã thöïc hieän bôûi vì noù chæ bao goàm hai voøng laëp for ñôn giaûn. Moät baûng tìm kieám coù theå ñöôïc duøng ñeå thay theá cho haøm cos() goïi beân trong voøng laëp. Thöïc hieän IMDCT nhanh ( Fast IMDCT implementation ): Marovich ñaõ neâu ra trong [2] raèng phöông phaùp cuûa Konstantinides veà vieäc taêng toác ñoä tính toaùn cuûa ma traän baêng loïc ña pha cuõng coù theå duøng cho IMDCT 12 vaø 36 ñieåm : Keát quaû N ñieåm töông ñoàng vôùi IMDCT N ñieåm nhö ñöôïc ñònh nghóa trong chuaån. Ñieàu naøy chæ caàn tính 6 vaø 8 ñieåm töông öùng. Nhöõng ñieåm naøy coù theå ñöôïc tính toaùn töø caùch tính IDCT söûa ñoåi baèng caùch söû duïng phöông phaùp Lee-style : phaân tích caùc bieán ñoåi 6 vaø 18 ñieåm thaønh caùc nhaân IDCT 3, 4 vaø 5 ñieåm. Pheùp bieán ñoåi 6 ñieåm cuûa khoái ngaén ñöôïc phaân tích thaønh 2 pheùp bieán ñoåi 3 ñieåm coù theå ñöôïc öôùc löôïng tröïc tieáp . Pheùp bieán ñoåi 18 ñieåm cho khoái daøi cuõng ñöôïc phaân tích theo moâ hình töông töï thaønh hai phaàn 9 ñieåm. Caùc phaàn 9 ñieåm naøy sau ñoù ñöôïc taùch ra nöõa thaønh moät phaàn 4 ñieåm vaø moät phaàn 5 ñieåm ñeå ñöôïc öôùc löôïng caùch tröïc tieáp. Baêng loïc ña pha ( Polyphase Filterbank) Ñònh nghóa : Taàn loïc ña pha chuyeån ñoåi caùc maãu trong mieàn thôøi gian töø pheùp bieán ñoåi IMDCT trong moãi subband thaønh maãu PCM. Söï chuyeån ñoåi gaàn 3 böôùc sau ñaây: Ma traän caùc maãu cuûa 32 subband sinh ra 64 giaù trò vector V Tieán haønh cöûa soå cuûa maãu ñöôïc choïn töø cô cheá vaøo tröôùc ra tröôùc (FIFO) cuûa vector V vôùi moät cöûa soå khoâng ñoåi D sinh ra moät vector W Toång coäng vector W vôùi chính noù sinh ra 32 maãu PCM ñaàu ra . Böôùc 2 vaø 3 ôû treân thì deã thöïc hieän, ñaëc bieät trong DSP do noù coù khaû naêng ñònh vò ñòa chæ ñaëc bieät. Böôùc 1 cuõng deã thöïc hieän do noù ñöôïc ñònh nghóa bôûi chuaån : Döôùi ñaây laø hai caùch tính duøng cho böôùc 1 Tính toaùn tröïc tieáp : Söï tính toaùn tröïc tieáp cuûa thao taùc ma traän thì deã thöïc hieän bôûi noù chæ bao goàm hai voøng laëp for. Thöïc hieän DCT nhanh 32 ñieåm ( 32 – point fast DCT implementation): Konstantinides ñaõ chæ ra trong chuaån [2] raèng thao taùc ma traän trong böôùc 1 coù theå ñöôïc caûi tieán thöïc teá baèng caùch duøng bieán ñoåi DCT nhanh 32 ñieåm vaø moät vaøi thao taùc sao cheùp döõ lieäu : Söï theå hieän ñoái xöùng trong thao taùc ma traän 32 ñieåm DCT cho söï toång hôïp subband. Moät trong nhöõng giaûi thuaät DCT nhanh thoâng duïng duøng cho 2m ñieåm ñöôïc moâ taû bôûi taùc giaû Lee trong [3]. Pheùp bieán ñoåi ñöôïc phaân tích thaønh 2 phaàn chaún leû: Giaûi thuaät DCT nhanh cuûa Lee Caùc phaàn chaún vaø leû laïi coù theå ñöôïc phaân tích theo caùch töông töï cho ñeán khi caùc phaàn ñuû nhoû ñeå coù theå tính toaùn thoâng qua söï öôùc löôïng tröïc tieáp. Ví duï nhö khi N = 2. PHAÀN 2: XAÂY DÖÏNG PHAÀN MEÀM CHÖÔNG I : GIAO DIEÄN VAØ THUYEÁT MINH CHÖÔNG TRÌNH Giao dieän laø coâng cuï trôï giuùp ñaéc löïc cho ngöôøi söû duïng. Nhöõng phaàn meàm coù giao dieän toát luoân ñöôïc öa chuoäng. Ñoù cuõng chính laø öu ñieåm tuyeät vôøi cuûa Windows. Laäp trình trong Windows hoã trôï nhöõng coâng cuï cho pheùp ta taïo ra nhöõng giao dieän raát deã daøng vaø baét maét. Tuy nhieân, thieát keá giao dieän ñeå cho ai cuõng coù theå söû duïng ñöôïc vaø khoâng bò nhaàm laãn khoâng phaûi laø chuyeän deã daøng. Noù ñoøi hoûi ta phaûi coù moät caùi nhìn bao quaùt, thaäm chí phaûi hieåu saâu veà giaûi thuaät cuûa chöông trình thì môùi coù theå loaïi tröø nhöõng sai laàm khi söû duïng. Laäp trình trong Windows laø laäp trình theo tình huoáng. Moïi nuùt nhaán, oâ ñoái thoaïi treân giao dieän ñeàu coù theå ñöôïc truy caäp tôùi baát kyø luùc naøo maø khoâng theo moät trình töï nhaát ñònh. Giao dieän bao goàm caùc phaàn nhö hình veõ sau: Thanh SkinProgress Thanh naøy duøng ñeå hieån thò teân baøi haùt vaø teân ca só haùt baøi haùt naøy, bôûi vì ñaây laø chöông trình nghe nhaïc mp3 neân ñuoâi maëc ñònh laø “.mp3” . 2. Nuùt Minimize Nuùt naøy coù taùc duïng thu nhoû cöûa soå chöông trình vaø hieån thò treân thanh Toolbars. Khi caàn phoùng to cöûa soå leân chæ caàn nhaáp chuoät vaøo phaàn thu nhoû treân thanh Toolbars . 3. Nuùt Colse Duøng ñeå ñoùng cöûa soå chöông trình . 4. Timer Hieån thò thôøi gian ñaõ thöïc thi chöông trình döôùi daïng “phuùt : giaây”. 5. Toång thôøi gian Hieån thò toång soá thôøi gian maø chöông trình phaûi thöïc thi, döôùi daïng “phuùt : giaây”. 6 .Nuùt Open Môû ra danh saùch caùc baøi haùt cho ngöôøi söû duïng choïn löïa (chæ choïn ñöôïc 1 baøi haùt). Do coù söû duïng hieäu öùng di chuyeån chuoät neân khi raø chuoät ñeán nuùt Open seõ chuyeån sang maøu vaøng . Khi ñaõ choïn 1 baøi haùt cuï theå naøo ñoù thì 3 nuùt coøn laïi Play, Pause, Stop môùi coù taùc duïng ( luùc khôûi ñoäng chöông trình do chöa choïn baøi haùt neân 3 nuùt naøy khoâng nhaán ñöôïc). 7 .Nuùt Play Thöïc hieän giaûi maõ file “.mp3” vaø phaùt ra loa baøi haùt ñoù. 8. Nuùt Pause Taïm döøng chöông trình ñang haùt , ñeå tieáp tuïc haùt ta nhaán nuùt Play. 9. Nuùt Stop Döøng chöông trình ñang haùt, ñeå phaùt laïi baøi haùt môùi ta choïn teân baøi haùt töø nuùt Open, sau ñoù nhaán nuùt Play. 10. Thanh tieán trình Hieån thò tieán trình thöïc thi baøi haùt. Luùc baøi haùt keát thuùc cuõng laø luùc thanh tieán trình naøy laáp ñaày. Khi kích chuoät ñeán ñaâu thì thöïc thi baøi haùt taïi thôøi ñieåm vöøa kích chuoät . 11. Nuùt Volume Duøng ñeå ñieàu chænh aâm thanh lôùn hay nhoû tuyø theo nhu caàu cuûa ngöôøi söû duïng( ñieàu chænh voøng troøn caøng to thì aâm thanh caøng lôùn). CHÖÔNG II : LÖU ÑOÀ GIAÛI THUAÄT VAØ CAÁU TRUÙC DÖÕ LIEÄU SÔ ÑOÀ KHOÁI Laáy vaøo caáu hình maëc ñònh Thay ñoåi hay giöõ nguyeân caáu hình Ñaët input file; Môû input file vaø kieåm tra OpenNew(); Start Init_ MPEGDecoder() InitStream() Khôûi taïo input stream record memset() Chuaån bò vuøng ñeäm AudioFlush() Chuaån bò thieát bò phaùt ReadFrame()0 S Reset vò trí doøng bit veà zero Reset_Stream() Ñ do_layer3() Duøng baûng maõ Huffman ñeå giaûi maõ doøng bit,thoâng tin döõ lieäu vaø heä soá tæ leä III_scale_factor_1() III_scale_factor_2() III_side_info_1() III_side_info_2() Reset thieát bò phaùt Keát thuùc Löôïng töû hoùa laïi vaø saép xeáp laïi thoâng tin döõ lieäu III_dequantize_sample() III_dequantize_sample_ms() Giaûi maõ aâm thanh III_i_stereo() Giaûm bôùt bieät danh III_antialias() Qua bieán ñoåi IMDCT Toång hôïp laïi caùc taàng loïc ña pha SynthesisFilterInit() Ñöa ra thieát bò phaùt (right+left) II. LÖU ÑOÀ GIAÛI THUAÄT Löu ñoà giaõi thuaät cuûa taàn loïc ña pha khi toång hôïp subband (Subband Synthesis) duøng pheùp bieán ñoåi cosin rôøi raïc nhanh 32_ñieåm (32_point Fast DCT ) Begin End i<31 k=0 i=0 S i++ k<31 Ñ k++ V’i =kcos[π/64(2k-1)i] S Ñ Sk = Caùc maãu subband (Subband Samples) Sô ñoà giaûi thuaät cuûa taàn loïc ña pha sau khi toång hôïp 32 subband : Begin End i< 64 k=0 i=0 S i++ k<31 Ñ k++ S Ñ Vi =kcos[(16+i)(2k+i)π/64] Sk = Caùc maãu subband (Subband Samples) III. CAÁU TRUÙC DÖÕ LIEÄU File Agrs.h Lôùp MPArgs Söû duïng : khai baùo caùc bieán caàn thieát cho quaù trình laáy file vaøo , xuaát file ra thieát bò phaùt , truy xuaát caùc thoâng tin veà caáu hình file. Vò trí player hieän taïi trong frame, vò trí baét ñaàu khung, keát thuùc khung. Ngoaøi ra coøn löu tröõ toác ñoä laáy maãu, kích thöôùc buffer. class MPArgs { public: unsigned long CurrentPos; // Vò trí player hieän taïi trong frames unsigned long StartFrame, StartPos, EndFrame, EndPos; unsigned long SampleRate; // Toác ñoä laáy maãu unsigned long BufferSize; // Kích thöôùc cuûa buffer xuaát unsigned long Buffers; // Soá buffers long Channels; // Channels(1=mono;2=stereo) long AudioBits; // Soá Bits treân sample(maãu) ví duï 16 bit long AudioDevice; // Soá thieát bò audio seõ ñöôïc môû ra long AudioMode; // Kieåu Audio (ví duï 16bit tín hieäu) long ScaleFactor; // Heä soá tæ leä output long ForceFreq; bool TryResync; // Resync on bad data? bool Seekable; bool IsVBR; //Duøng xaùc ñònh chieàu daøi cuûa stream bool UseHdrCB; // Duøng xuaát ra header char *InName; // Ñöa teân file vaøo stream char *OutName; // Xuaát ra teân file long OutDeviceNum; // Soá thieát bò xuaát ra MMSystem long ForceMono; // Force mono output? long Force8bit; // Force 8-Bit output? long ForceStereo; // Force stereo output? long DownSample; // long PlayPriority; // thöïc thi thread öu tieân void *Player; void *Decoder; esInputMode InputMode; esOutputMode OutputMode; WaveOutCB BufferCB; WaveOutActionCB OutActionCB; InFileOpenCB InOpenCB; InFileCloseCB InCloseCB; InFileGetSizeCB InGetSizeCB; InFileSeekCB InSeekCB; InFileReadCB InReadCB; // Ngöôøi duøng ñònh nghóa döõ lieäu xuaát unsigned long OutCBData; // Ngöôøi duøng ñònh nghóa döõ lieäu nhaäp unsigned long InCBData1; unsigned long InCBData2; HWND wnd; //Gaùn caùc haèng cho caùc ñoái töôïng MPArgs() { InName = NULL; OutName= NULL; OutDeviceNum = 0; BufferedInput = true; CurrentPos = 0; StartPos = 0; EndPos = 0; DownSample = 0; ForceStereo = 0; AudioBits = 16; SampleRate = 44100; Channels = 2; AudioMode = 1; AudioDevice = 0; BufferSize = 16384; Buffers = 8; BufferCB = NULL; UseHdrCB = false; TryResync = TRUE; Seekable = true; Force8bit = 0; ForceFreq = -1; ForceMono = 0; ScaleFactor = 32768; PlayPriority= THREAD_PRIORITY_NORMAL; OutCBData = 0; InCBData1 = 0; InCBData2 = 0; OutActionCB = NULL; BufferCB = NULL; wnd = 0; } ~MPArgs() { if (InName) free(InName); if (OutName) free(OutName); } }; Caáu truùc MPInfo Löu tröõ caùc thoâng tin veà header cuûa frame. struct MPInfo { long stereo_mode; long layer; long bitrate; long frequency; }; Caáu truùc frame Söû duïng löu tröõ caùc thoâng tin veà header cuûa file nhö: syncword, id, layer, error protection,bitrare index, sampling frequency, padding bit, private bit, mode, mode extension, copyright, emphasis, original/copy. struct frame { synthProc synth; synth_monoProc synth_mono; long stereo; long jsbound; long single; long II_sblimit; long lsf; long mpeg25; long down_sample; long header_change; unsigned long block_size; long lay; long WhatLayer; long error_protection; long bitrate_index; long sampling_frequency; long padding; long extension; long mode; long mode_ext; long copyright; long original; long emphasis; }; File Common.h Trong chöông trình caùc caáu truùc naøy duøng ôû giai ñoaïn laáy thoâng tin döõ lieäu vaøo giaûi maõ thoâng tin caùc thoâng tin caàn thieát nhö :heä soá tæ leä ,löôïng töû hoùa laïi caùc maãu , aâm thanh (stereo), giaûm bôùt bieät danh. Caáu truùc ID3TagStruct struct ID3TagStruct { char TagHeader[3]; char Title[30]; char Artist[30]; char Album[30]; char Year[4]; char Comment[30]; unsigned char Genre; }; Caáu truùc gr_info_s Löu tröõ caùc thoâng soá veà phöông phaùp maõ hoaù Huffman. struct gr_info_s { int scfsi; unsigned part2_3_length; unsigned big_values; unsigned scalefac_compress; unsigned block_type; unsigned mixed_block_flag; unsigned table_select[3]; unsigned subblock_gain[3]; unsigned maxband[3]; unsigned maxbandl; unsigned maxb; unsigned region1start; unsigned region2start; unsigned preflag; unsigned scalefac_scale; unsigned count1table_select; real *full_gain[3]; real *pow2gain; }; Caáu truùc bandInfoStruct struct bandInfoStruct { int longIdx[23]; int longDiff[22]; int shortIdx[14]; int shortDiff[13]; }; Caáu truùc III_sideinfo struct III_sideinfo { unsigned main_data_begin; unsigned private_bits; struct { struct gr_info_s gr[2]; } ch[2]; }; File Elsound.h Duøng caùc caáu truùc naøy trong chöông trình ñeå löu tröõ caùc bieán ñieàu khieån vaø caùc bieán duøng ñeå löu tröõ loãi. Ngoaøi ra coøn löu tröõ mode hieän taïi laø Closed, Opened,Ready, Stopped, Playing, Change, Paused ñeå hieåu ñöôïc chöông trình ñang xöû lyù ôû traïng thaùi naøo. Caáu truùc esInputMode enum esInputMode { imFile, imCallback }; Caáu truùc esOutputMode enum esOutputMode { omMMSystem, omWaveFile, omDirectSound, omCallback }; Caáu truùc esPlayerMode enum esPlayerMode { pmClosed, pmOpened, pmReady, pmStopped, pmPlaying, pmChange, pmPaused }; Caáu truùc esPlayerError enum esPlayerError { peNoError, peNotImplemented, // khoâng thöïc thi peIncorrectMode, // khoâng ñuùng mode cho vieäc thöïc thi hoaït ñoäng peInternalError, // khoâng caáp phaùt ñöôïc nguoàn taøi nguyeân hoaëc resource peInvalidHandle, // xöû lyù ñoái töôïng player sai peInputError, peOutputError, peNoMemory, peNoResources, peNoCallback }; File Huffman.h Söû duïng trong quaù trình giaûi maõ theo giaûi thuaät Huffman goàm: baûng Huffman, linbit. struct newhuff { unsigned int linbits; short *table; }; IV. ÑÒNH NGHÓA Caùc ñònh nghóa duøng trong taäp tin #define COMMON_H #define real double #define NEW_DCT9 #define M_PI 3.14159265358979323846 #define M_SQRT2 1.41421356237309504880 #define SBLIMIT 32 #define SCALE_BLOCK 12 #define SSLIMIT 18 Caùc ñònh nghóa duøng trong Player.h //Ñònh nghóa che header #define HDRCMPMASK 0xfffffd00 //Kích thöôùc toái ña cuûa frame #define MAXFRAMESIZE 1792 #define MPG_MD_STEREO 0 #define MPG_MD_JOINT_STEREO 1 #define MPG_MD_DUAL_CHANNEL 2 #define MPG_MD_MONO 3 3. Caùc ñònh nghóa duøng trong Resource.h #define BUTTON_PLAY 1 #define BUTTON_EJECT 2 #define BUTTON_STOP 3 //#define BUTTON_SAVE 4 #define BUTTON_PAUSE 4 #define BUTTON_EXIT 5 #define BUTTON_MINIMIZE 6 #define BUTTON_PLAYLIST 7 #define TEXT_SONG 8 #define TEXT_LEN 9 #define TEXT_POS 10 #define IDD_MPEGPLAYER_DIALOG 102 #define IDR_MAINFRAME 128 #define ID_LOADSKIN 32771 PHAÀN 3 :TOÅNG KEÁT Ñaây laø chöông trình phaân tích vaø vieát öùng duïng veà chuaån mp3, nhöng chöông trình chæ ôû giai ñoaïn giaûi maõ file mp3 vaø phaùt ra loa , chuùng em chæ tìm hieåu ñöôïc nhöõng chöùc naêng ñôn giaûn nhö : Môû file mp3, phaùt ra loa file ñoù. Taïm döøng file mp3 ñang phaùt . Ngöøng file ñang phaùt vaø choïn file môùi ñeå phaùt chaúng haïn. Ngöôøi söû duïng chöông trình chæ môû vaø phaùt ra loa ñöôïc moät file duy nhaát vaø sau ñoù ngöôøi söû duïng phaûi môû laïi moät file mp3 khaùc. Ñieàu chænh ñöôïc volume . Ñieàu khieån ñöôïc tieán trình cuûa baøi haùt. Hieän ñöôïc toång thôøi gian vaø vò trí thôøi gian hieän taïi cuûa moãi baøi haùt . Haïn cheá Vì thôøi gian coù haïn neân chöông trình coøn nhieàu haïn cheá : Chöa coù chöùc naêng bass, treble hay ñieàu chænh ñoä caân baèng (balance). Chöa choïn ñöôïc danh saùch nhieàu baøi haùt vaø phaùt lieân tuïc caùc baøi haùt ñoù . Chöa coù chöùc naêng laëp laïi moät baøi haùt, vv… Höôùng phaùt trieån Trong töông lai chuùng em seõ phaùt trieån thaønh chöông trình nghe nhaïc mp3 hoaøn thieän hôn , seõ coù nhieàu chöùc naêng hôn nhö : Choïn ñöôïc moät danh saùch caùc file mp3 vaø phaùt lieân tuïc caùc file mp3 ñoù. Hay ñieàu chænh ñöôïc bass, treble, hay ñieàu chænh ñöôïc ñoä caân baèng cuûa volume. Laëp laïi moät baøi haùt hay caùc chöùc naêng khaùc nhö trong nhöõng chöông trình nghe nhaïc phoå bieán hieän nay nhö :Winamp, Herosoft ,.. TAØI LIEÄU THAM KHAÛO Ken C. Pohlmann, “ Principles of Digital Audio” , McGraw Hill – 2000. Trang web K.Lagerström, “Design and Implementation of MPEG-1 Layer III Audio Decoder” , April 2001. [1] ISO/IEC 11 172-3, “Information technology - Coding of moving pictures and associated audio for digital storage media at up to about 1,5 Mbit/s - Part 3: Audio,” .rst edition, Aug. 1993. [2] S. Marovich, “Faster MPEG-1 Layer III Audio Decoding,” HP Laboratories Palo Alto, June 2000. [3] B.G. Lee, “FCT - A Fast Cosine Transform,” IEEE International Conference on Acoustics, Speech and Signal Processing San Diego 1984, pp. 28A.3.1-28A3.4, March 1984. Design and Implementation of an MP3 Decoder May 2001 44 .

Các file đính kèm theo tài liệu này:

  • doclvtn.doc