Xu Li Tin Hieu Amthanh Hinhanh
-
Upload
ngoc-chien -
Category
Documents
-
view
227 -
download
7
description
Transcript of Xu Li Tin Hieu Amthanh Hinhanh
-
z
Lun vn
M ha tn hiu s
m thanh
-
Khoa CNTT HBKHN
SVTH: Vn Tun Trang 1
L THUYT C BN CHUNG 1. CC KIN THC C BN V M THANH. I. NHNG KHI NIM C BN - SNG C 1.1. S hnh thnh sng trong mi trng n hi.
a. nh ngha: Cc mi trng cht kh, cht lng, cht rn l mi trng n hi. Mi trng n hi c th coi l nhng mi trng lin tc gm nhng phn t lin kt cht ch vi nhau, lc bnh thng mi phn t c mt v tr cn bng bn. b. S hnh thnh sng trong mi trng n hi:
Do tnh cht ca mi trng n hi, cho nn nu tc dng ln phn t no ca mi trng th phn t ny ri khi v tr cn bng bn.
Do tng tc, cc phn t ln cn mt mt ko phn t A v v tr cn bng, mt khc nhn mt phn nng lng do phn t A truyn sang, do cng dao ng theo, hin tng ny xy ra lin tip to thnh sng. Sng n hi (sng c) l s lan truyn dao ng trong mi trng n hi. Sng c khng th truyn c trong chn khng, v chn khng khng phi l mi trng n hi.
Cn lu trong khi truyn dao ng, cc phn t ca mi trng khng di chuyn theo cc dao ng c lan truyn m ch dao ng quanh v tr cn bng ca n. c. Mt s khi nim v sng:
Ngun sng: l ngoi vt gy ra kch ng sng. Tia sng: l phng truyn sng. Mi trng sng: l khng gian m sng truyn qua. Mt sng: l mt cha nhng im (phn t) c cng trng thi dao ng ti mt thi im no . Tia sng lun vung gc vi mt sng.
-
Khoa CNTT HBKHN
SVTH: Vn Tun Trang 2
Sng cu: mt sng l nhng mt cu phn b u trong khng gian, tm l ngun sng. Trong mi trng ng cht v ng hng s c sng cu. i vi sng cu tia sng trng vi bn knh ca mt cu.
Sng phng: mt sng l nhng mt phng song song nhau, tia sng vung gc vi mt sng. Nu ngun sng rt xa mi trng ang xt th mt sng c th coi l nhng mt phng song song.
Sng dc: l sng trong cc phn t ca mi trng dao ng quanh v tr cn bng trn phng trng vi tia sng. Khi c sng dc, trn phng ca tia sng cc phn t ca mi trng khi th b nn cht, khi th gin ra lm cho cc phn t ca mi trng c ch dy ch tha.
Sng ngang: l sng trong cc phn t ca mi trng dao ng quanh v tr cn bng trn phng vung gc vi tia sng. d. Nguyn nhn gy ra sng ngang v sng dc:
Ty tnh cht ca mi trng n hi m trong c th xut hin sng ngang hay sng dc. - Khi mt lp ca mi trng b lch i vi lp khc lm xut hin cc lc n hi c xu hng ko lp b lch v v tr cn bng th trong mi trng c th truyn c sng ngang. Vy vt rn l mt mi trng c tnh cht . - Nu trong mi trng khng c cc lc n hi khi cc lp song song b lch i vi nhau th sng ngang khng th hnh thnh c. Cht lng v cht kh l nhng mi trng . - Khi b bin dng nn hay cng m trong mi trng c cc lc n hi xut hin th trong mi trng c th truyn c sng dc. Chng hn khi b nn, cht lng hay cht kh s tng p sut, lc nn gi vai tr lc n hi.
Nh vy trong cht lng v cht kh ch c sng dc truyn c, cn trong cht rn c th truyn c c hai loi sng.
1.2. Cc c trng ca sng. a. Vn tc truyn sng (C) : L qung ng m sng truyn c trong mt n v thi gian.
b. Bc sng : L qung ng m sng truyn c sau mt thi gian bng 1 chu k T. Nh vy l khong cch b nht gia cc phn t dao ng cng pha. Theo nh ngha ta c : = CT. c. Chu k v tn s:
Chu k T l thi gian cn thit sng truyn c 1 bc sng .
-
Khoa CNTT HBKHN
SVTH: Vn Tun Trang 3
Tn s f l s chu k thc hin c trong 1 giy : F = 1/T (Hz)
1.3. Phng trnh sng.
Sng phng truyn dc theo phng OY vi vn tc C th phng trnh sng biu th mi quan h gia chuyn di X ca phn t dao ng k t v tr cn bng vi thi gian t v khong cch y n cc v tr cn bng cc phn t dao ng trn phng truyn sng nh sau :
X = asin(t y/c) Nu sng phng truyn theo hng ngc vi hng tnh khong cch y th :
X = asin(t + y/c) i vi sng cu th bin a ca dao ng sng ti v tr cch ngun bng bn knh r, t l nghch vi r, phng trnh sng c dng:
X = a/r sin(t r/c) II. SNG M. 2.1. Dao ng m v s truyn dao ng.
Sng m l mt loi sng c c bin dao ng nh m thnh gic nhn bit c. Th d dao ng pht ra t dy n, mt trng.. ang rung ng. Sng m l mt loi sng c nn mi khi nim v hin tng v dao ng v sng c trn y u p dng cho sng m.
Trong khng kh cng nh trong mi cht kh khc, nhng dao ng truyn i di dng sng dc, khi n tai ngi nhng dao ng c tn s t 16 n 20000 Hz s gy cm gic c bit v m.
Cc dao ng n hi c tn s f>20.000 Hz l sng siu m. Cc dao ng n hi c tn s f
-
Khoa CNTT HBKHN
SVTH: Vn Tun Trang 4
ng mng nh tai gy cm gic v m, do cn phn bit hai loi i lng v m: - i lng m khch quan: nhng i lng thun ty vt l, khng ph thuc vo tai ngi. - i lng m ch quan: nhng i lng tm l vt l ph thuc vo tai ngi.
2.2.1. n v m khch quan: a. Ap sut m:
Khi sng m ti mt mt no , do cc phn t mi trng dao ng tc dng ln mt mt lc gy ra p sut. Ap sut y l p sut d do sng m gy ra ngi p sut kh quyn.
Trong phm vi nghe c, p sut m trong khong t 2.10-4 n 2.102 bar, chnh lch 106 ln, l mt phm vi rt rng. b. Cng m (I): - Cng m mt im no trn phng cho trong trng m l s nng lng m i qua n v din tch ca mt S vung gc vi phng truyn m, ti im trong n v thi gian. - Mt vi cng m ng ch : Ngi ni thng I = 2.10-3 W/m2
Ci -t I = 5 W/m2 Ci bo ng I = 3.000 W/m2
- Trong iu kin chun (to = 20oC, p sut 760mmHg): Vn tc m trong khng kh : C = 340 m/s
= 0,00121 gr/cm3. = Cp/Cv = 1,4 - Trong tnh tn ngi ta quy c ly m n tn s f = 1000 Hz lm chun so snh (gi l m chun). - i vi m chun, trong phm vi nghe c
p sut m nh nht Pmin = 2.10-4 bar Cng m nh nht Imin = 10-16 W/cm2. - Ap sut m v cng m ln nht m tai ngi c th chu c l:
Pmax = 2.102 bar Imax = 10-4 W/cm2. - Cng sut m nh nht c th nghe thy c Wmin = 10-12 Watt.
2.2.2. n v m ch quan:
-
Khoa CNTT HBKHN
SVTH: Vn Tun Trang 5
Tai ngi trung bnh c th nhn c nhng sng m c tn s t 16 n 20000 Hz, hiu qa ny c lin quan ti kh nng sinh l ca tai ngi.
Nh vy, m thanh l mt hin tng tm l vt l, khng phi bt c sng m no ti tai cng gy ra cm gic m thanh nh nhau. Am c tn s khc nhau gy ra cm gic khc nhau.
Cng m nh nht ca mt sng m xc nh m tai ngi nghe thy c gi l Ngng nghe. Am c tn s khc nhau gi tr ngng nghe cng khc nhau. Tai ngi thnh nht vi m c tn s trong khong t 1000 n 3000 Hz, trong phm vi ny cng m ngng nghe nh nht. Nhng tn s khc, tai km thnh hn, ngng nghe c gi tr ln hn.
i vi m chun, cng v p sut ngng nghe bng: Po = 2.10-5 N/ m2. Io = 10-12 W/m2.
Do cm gic m thanh ph thuc vo c tnh sinh l ca tai ngi, cho nn phi c mt s i lng c trng cho cm gic m thanh ph thuc vo tai ngi, nhng i lng nh vy gi l i lng m ch quan. a. Bel v decibel (db): Theo nh l sinh l ca Vebe-Fcne, cm gic nghe to i vi mt m khng t l thun vi cng m ca m . Khi cng m tng t Io ti I th cm gic nghe to tng t l vi lg(I/Io). Do ngi ta dng thang l-ga-rt c s 10 o mc cm gic so vi mc ngng. Mc ngng gi l mc zero qui c : lg(I/Io) = lg(10-12/ 10-12) = 0 bel. n v l Bel hay db. 10db = 1 bel. b. Mc cng m (LI): Nu gi I l cng m ca m ang xt v Io l cng m ca mc zero qui c ca m chun th mc cng m LI bng : LI = 10lg(I/Io) db
I tnh bng W/m2. c. Mc p sut m (Lp): Mc p sut m suy dn t mc cng m Lp = 20lg(P/Po) db. Trong : P :p sut m c ch ca m ang xt (N/m2) Po:p sut m ca m chun ngng nghe.
-
Khoa CNTT HBKHN
SVTH: Vn Tun Trang 6
Thc t p sut m l i lng c bn hn cng m, nn thng dng mc p sut m sau suy ra mc cng m. n v chung l bel hay db. n v ny cng dng o mc cng sut, mc nng lng m. Vi mc p sut m ng ch : Ni chuyn thng : 30db. Ni chuyn to : 70db.
2.2.3. Qung cao (qung tn s):
Qung tn s ca hai m l khong cch tn s ca hai m . Nu mt m tn s l f1, mt m khc tn s l f2 (f2 > f1) th f2 / f1 = 2x. Khi x=1 tc f2 / f1 = 2 gi l 1 qung tn s (hay 1 c-ta). Khi x=1/2 tc f2 / f1 = 1.41 gi l na c-ta. Khi x=1/3 tc f2 / f1 = 1.26 gi l 1/3 c-ta. - Mc p sut m ca 1 c-ta bng mc p sut m ca 1/2 c-ta cng thm 3db. - Mc p sut m ca 1 c-ta bng mc p sut m ca 1/3 c-ta cng thm 5db.
V qung tn s ca mt m qui nh cao ca m nn cn gi l qung cao. Theo tp qun m nhc th qung cao gi l qung 8 (bt ).
Chng hn m LA, tn s f=440 Hz tng 1 bt l tng gp i tn s, tc l 880 Hz.
Trong thc t thng gp nhng m phc tp bao gm nhiu tn s. Tp hp tt c nhng tn s cu to trong mt m thanh gi l tn ph ca m , tn ph c th gin on hay lin tc. Mt m c tn ph lin tc c c trng bng Mc tn ph B vi nh ngha: - Mc tn ph l mc p sut m trong chiu rng ca di tn s bng 1. - Mt m c mc tn ph B khng i vi mi tn s gi l ting n trng. - Mt m c tn ph gin on c c trng bng mc di tn s vi nh ngha: mc di tn s l mc p sut m trong chiu rng ca di tn s ln hn 1 Hz.
2.3. c tnh sinh l v s cm th m thanh. 2.3.1. Mc to, to, mc m cm gic:
Mc p sut m, mc cng m trn y va mang tnh cht ch quan va mang tnh cht khch quan v nhng i lng ny xc nh t nhng i lng thun ty vt l. Vn c ngha to ln trong thc t l cn bit c sc mnh ca m thanh o bng tai ngi.
-
Khoa CNTT HBKHN
SVTH: Vn Tun Trang 7
Mc to, to ca mt m l sc mnh cm gic do m thanh gy nn trong tai ngi, n khng nhng ph thuc vo p sut m m cn ph thuc vo tn s ca m . Th d 2 m c tn s 100 Hz v 1000 Hz p sut m u bng 0,02 bar nhng nghe to nh khc nhau, m 1000 Hz nghe to hn m 100 Hz. Mun nghe to bng m 1000 Hz th m 100 Hz phi c p sut bng 0,25 bar. Nh vy tai ngi khng nhy i vi m 100 Hz bng m 1000 Hz. Tn s cng thp tai ngi cng km nhy. a. Mc to: - biu th mc to trn cm gic ch quan, ta dng i lng mc to, n v l Fn vi nh ngha nh sau : Fn l mc to ca m chun, v gi tr bng mc p sut m ca m chun tc l : L = 20lg P/Po (Fn). - Vy mc to ca mt m bt k o bng Fn, v gi tr bng mc p sut m ca m chun o bng db c cng mc to vi m . Th d: m c tn s 500 Hz mc p sut m bng 25 db v m c tn s 50 Hz mc p sut m bng 64 db s c cng mc to bng 20 Fn, bng mc to ca m 1000 Hz mc p sut bng 20 db. - Mun bit mc to ca mt m bt k phi so snh vi m chun. - i vi m chun, mc to ngng nghe l 0 Fn, ngng chi tai l 120 Fn. - Cng mt gi tr p sut, m tn s cng cao, mc to cng ln. b. to: - Khi so snh m ny to hn m kia bao nhiu ln, dng khi nim to n v l Sn vi nh ngha nh sau: S lng Sn biu th s ln mnh hn ca mt m no so vi m chun m tai ngi c th phn bit c. - to l mt thuc tnh ca thnh gic, cho php phn n tnh cht mnh yu ca m thanh. Cn c vo to m sp xp m t nh ti to. - Mc to tng 10 Fn th to tng gp i v ngc li.
2.3.2. Am iu v m sc:
m iu ch m cao hay thp, trm hay bng. m iu ch yu ph thuc vo tn s ca m, tn s cng cao, m nghe cng cao, tn s cng thp m nghe cng trm.
m sc ch sc thi ca m du dng hay th kch, thanh hay r, trong hay c. m sc ph thuc vo cu to ca sng m iu ha, biu th bng s lng cc loi tn s, cng v s phn b ca chng quanh
-
Khoa CNTT HBKHN
SVTH: Vn Tun Trang 8
m c bn. m sc c quan h mt thit vi cng , m iu v thi gian m vang, s trng thnh v tt dn ca trng m.
Khi hai ca s cng ht mt cu cng mt cao, ta vn phn bit c ging ht ca tng ngi. Khi n ghi-ta, so, kn.. cng tu ln mt on nhc cng mt cao, ta vn phn bit c ting ca tng nhc c. Mi ngi, mi nhc c pht ra nhng m c sc thi khc nhau m tai ta phn bit c. c tnh ca m chnh l m sc.
m sc l mt c tnh sinh l ca m, c hnh thnh trn c s cc c tnh vt l ca m l tn s v bin . Thc nghim chng t rng khi mt nhc c pht ra mt m c tn s f1 th ng thi cng pht ra cc m c tn s f2=2f1, f3=3f1...
m c tn s f1 gi l m c bn hay ha m th nht, cc m c tn s f2 , f3 .. gi l cc ha m th hai, th ba... m c bn bao gi cng mnh nht, cc ha m c tc dng quyt nh m sc ca m c bn, gip ta phn bit cc ngun m khc nhau. Chng hn ting n Pi-a-n v ting so tuy cng mt m c bn nhng li rt d phn bit, nguyn nhn l do s lng, cu trc nhng ha m quanh m c bn ca chng khc nhau. Ha m cng nhiu m nghe cng du dng phong ph.
3. Thnh gic nh v (hiu ng Stereo):
Khi nghe m tuy mt khng nhn thy ngun m nhng c th xc nh chnh xc v tr ca ngun m. c im ny l kt qa ca hai tc dng: - Do cng , to, m sc ca m n hai tai khng ging nhau. - Do m n hai tai lch pha nhau, v thi gian n hai tai khng ging nhau.
Cng , to ca m n hai tai chnh lch nhau l do nhiu x gy ra. m c tn s f < 1000 Hz s chnh lch cng do nhiu x gy ra rt b nhng nhng tn s cao, s chnh lch ny c th t ti 20 - 30 db.
Do kh nng nh v ca tai nh vy cho nn khi nghe m c th tp trung ch vo ngun m cn nghe, b qua mt cch t nhin nhng m khng cn nghe. Nh hiu qa ny m ting n b ph lp hoc gim nh mt cch t nhin. Nu ch nghe m mt tai th hiu qa ny mt.
4. Nghe m v chnh lch thi gian:
Tng t nh tc dng lu nh ca mt, tai ngi cng c tc dng lu m. Th nghim vi nhiu thnh gic bnh thng cho thy rng, nu hai m nh nhau n tai ngi cch nhau < 50 ms th tai ngi khng phn bit c, nghe nh mt m duy nht.
-
Khoa CNTT HBKHN
SVTH: Vn Tun Trang 9
CHNG 2. TP TIN DNG SNG (WAVE FILE).
I. MULTIMEDIA WINDOWS
T phin bn Windows 3.1, Multimedia tr thnh mt tnh nng ca Windows. Multimedia Windows b sung mt tnh nng mi: l s c lp thit b trong vic x l m thanh. S c lp thit b ny th hin qua b API (Applycation Program Interface B giao din lp trnh ng dng). B API c lp v thit b i vi phn cng v l mt chc nng quan trng ca Windows. Ngi lp trnh s lp trnh iu khin phn cng trn Windows da trn chc nng ca phn cng hn l cc chi tit c th ca n. Cc nh cung cp phn cng ch cn cung cp mt b iu khin thit b (device driver) cho Windows, nh mt ng dng trn Windows c th iu khin phn cng thng qua Windows API.
Vi Multimedia Windows, hng Microsoft thc hin c ba iu : nh ngha mt tiu chun phn cng ti thiu cho loi my Multimedia PC (vit tt l MPC). Tiu chun ny da trn chc nng tng qut hn l sn phm c th. V d nu PC c thm a CD-ROM v mt card m thanh th tr thnh MPC cp 1.
Microsoft cung cp phn mm Multimedia Extension cho Windows 3.0 v c ghp lun vo h iu hnh Windows t phin bn 3.1. Phn mm ny bao gm cc b iu khin thit b dnh cho vic truy xut n cc phn cng gn thm vo MPC.
Microsoft a ra cng c pht trin Multimedia Development Kit (MDK). Lp trnh vin kt hp cng c trn vi b Windows Software Development Kit (SDK) vit cc ng dng v Multimedia.
C hai dng x l m thanh s ha trn Windows. Loi th nht microsoft gi l Wave Form Audio (Am thanh dng sng), da trn nguyn tc s ha sng m, MPC lu chng trn b nh hay tp tin .WAV trn a. Cc d liu s ny c th thng qua phn cng bin i li thnh m thanh.
Dng th hai l MIDI. Khc vi m thanh dng sng, MIDI ch lu li nhng thng ip iu khin b tng hp pht ra m thanh. Do kch thc ca tp tin .MID nh hn nhiu so vi tp tin.WAV.
II. CU TRC WAVE FILE. 1. RIFF file.
Wave File l tp tin cha cc d liu ca mu m thanh c s ha. Phng php s ha m thanh hin nay l phng php PCM. Phng php ny s ly mu m thanh vi tn s khong 11.025 kHz cho n 44.1 kHz. Mi ln ly mu, s liu ny li c lng t ha bng mt hay hai byte cho mt mu m thanh. Nh vy tn s ly mu cng
-
Khoa CNTT HBKHN
SVTH: Vn Tun Trang 10
cao, s byte dng lng t ha cng nhiu th m thanh pht li cng trung thc, nhng li tng s byte cn lu tr. Vi mt mu m thanh pht ra trong mt pht cn phi lu tr t nht 660 kB. l l do ti sao cc File Wave lun c kch thc kh ln so vi MIDI File.
Cu trc ca Wave File thuc vo lp file c s dng bi cc hm Multimedia ca Windows: l RIFF FILE. RIFF l ch vit tt ca Resource Interchange File Format (dng file trao i ti nguyn). Mt RIFF file gm mt hoc nhiu loi chunks, trong mi chunk li cha con tr ch n chunk k tip. Mi chunk bao gm loi chunk v d liu theo sau loi chunk . Mt ng dng mun c RIFF file c th i qua ln lt tng chunk, c d liu chunk n quan tm v c th b qua cc chunk m n khng quan tm, mt chunk ca RIFF file lun bt u bi mt header c cu trc nh sau: Typedef struct { FOURCC ckid; DWORD ckSize; } CK;
Trng FOURCC c 4 bytes ch ra loi chunk. i vi File Wave, trng ny c gi tr l WAVE. Nu loi chunk t hn 4 k t th cc k t cn li bn phi s c m thm vo cc khong trng. Cn ch l cc k t trong FOURCC c phn bit ch hoa v ch thng.
Trng DWORD cha kch thc vng d liu ca chunk, vng d liu ny nm ngay sau header v c kch thc l ckSize bytes. Chunk c th cha cc subchunks. Subchunk cng l mt chunk. Mt RIFF file lun bt u bng mt chunk loi RIFF.
2. Cu trc Wave file. Wave file bt u l chunk loi RIFF. Hai subchunk trong wave chunk c t thng tin v m thanh ca wave file v tip l d liu ca tng subchunk. l subchunk fmt v subchunk data. a. subchunk fmt: D liu ca fmt chunk l i tng WAVEFORMAT c cu trc nh sau: Typedef struct waveformat_tag { WORD wFormatTag; WORD nChannels;
-
Khoa CNTT HBKHN
SVTH: Vn Tun Trang 11
DWORD nSamplesPerSec; DWORD nAvgBytesPerSec; WORD nBlockAlign; } WAVEFORMAT; - wFormatTag thng c gi tr l WAVE_FORMAT_PCM c nh ngha trong tp tin MMSYSTEM.H nh sau : #define WAVE_FORMAT_PCM 1
Gi tr ny bo cho phn mm ang c Wave File bit kiu m ha d liu m thanh sang d liu s l kiu m ha PCM. Hin nay y l kiu m ha duy nht ca Wave file. - nChannels: c hai gi tr bng 1 cho m thanh mono v bng 2 cho m thanh stereo. - nSamplesPerSec: cho bit tc ly mu, c cc gi tr: 11025 -- 11.025 kHz 22050 -- 22.050 kHz 44100 -- 44.100 kHz - nAvgBytesPerSec: cho bit s bytes yu cu trung bnh trong mt giy pht li mu d liu ca sng m. - nBlockAlign: cho bit s byte dng cha mt mu m thanh. Nh vy mu 8 bit hay t hn s yu cu 1 byte, mu 9 n 16 bit s yu cu 2 bytes. Nu m thanh l Stereo th yu cu gp 2 ln s byte dng cho m thanh mono.
Ta thy trong WAVEFORMAT cha c thng tin v s bit dng lng t ha mt mu d liu ca sng m. Thc t Wave File s xc lp s bit dng cho mt mu d liu bng mt trng gn vo cui cu trc ca WAVEFORMAT. Cu trc nh sau: Typedef struct pcmwaveformat_tag { WAVEFORMAT wf; WORD wBitsPerSample; } PCMWAVEFORMAT; - wBitsPerSample: cho bit s bit trong mt mu d liu. Ch rng cc mu d liu vn phi lu tr dng byte hoc word. Do , nu mt Wave File dng 12 bit lng t ha mt mu sng m th s phi lu tr 4 bit tha khng dng n. b. Subchunk data.
-
Khoa CNTT HBKHN
SVTH: Vn Tun Trang 12
D liu ca data subchunk ca wave file cha cc s liu ca m thanh c s ha. i vi mu m thanh 8 bit, d liu ca data subchunk bao gm cc gi tr 1 byte (c gi tr t 0 255) ca cc mu m thanh. i vi mu m thanh 16 bits, mi mu d liu gm 2 bytes (c gi tr t 32768 n 32767). iu ny khng c ngha l file wave 16 bits s nghe to hn 256 ln file wave 8 bits, m n c ngha l m thanh c lng t ha chnh xc hn, nghe trung thc hn.
Trong mu mono 8 bits, d liu ca subchunk data gm chui cc gi tr 1 byte. Vi stereo 8 bits, mi mu gm 2 bytes, d liu s c sp xp xen k (interleave), vi byte u (byte chn) l mu m thanh ca knh bn tri, byte sau (byte l) l ca knh bn phi.
Tm la cu trc ca Wave File nh sau:
Kch thc (s byte)
Gi tr Tn trng
4 RIFF
4 Kch thc file RIFF
4 WAVE
4 fmt
4 Kch thc subchunk fmt
2 Kiu m ha d liu ca file wave (thng l PCM)
WORD nFormatTag
2 S knh : 1 - mono 2 - stereo
WORD nChannels
4 S mu/1giy DWORD nSamplesPerSec
4 S bytes/1giy DWORD nAvgBytesPerSec
2 S byte/1mu DWORD nBlockAlign
-
Khoa CNTT HBKHN
SVTH: Vn Tun Trang 13
2 S bit/1mu WORD wBitsPerSample
4 data
4 Kch thc d liu
III. C RIFF FILES
lm vic vi file RIFF, ta phi m n v descend vo chunk m ta cn. iu ny c ngha l ta cn phi nh v c chunk ny, ri chuyn con tr file vo u khi d liu ca chunk. Khi lm vic xong vi 1 chunk, ta phi ascend ra khi chunk v descend xung chunk khc.
Cc hm dng x l RIFF file u c tin t l mmio v lm vic vi file handle dng HMMIO, bt u, ta phi m file bng on m sau:
HMMIO h; If ((h=mmioOpen(path,NULL,MMIO_READ))==NULL) { /*bo li*/ return(0); } Thng s path cha ng dn ca file wave. C MMIO_READ
bo cho mmioOpen m file c. Ta cng c th m n ghi bng thng s MMIO_WRITE hay c c v ghi bng thng s MMIO_READWRITE. Nu m file thnh cng, mmioOpen s tr v mt handle loi HMMIO. Nu tht bi, n s tr v tr NULL. Sau khi m file xong, ta bt u nh v WAVE chunk bng on m sau:
MMCKINFO mmParent; MmParent.fccType=mmioFOURCC(W,A,V,E); If (mmioDescend(h,(LPMMCKINFO)&mmParent, NULL,
MMIO_FINDRIFF)) { mmioClose(h,0); /* bo li */ return(0);
} Cu trc ca MMCKINFO cha cc thng tin v chunk. N c
nh ngha trong MMSYSTEM.H nh sau: Typedef struct { FOURCC ckid;
-
Khoa CNTT HBKHN
SVTH: Vn Tun Trang 14
DWORD cksize; FOURCC fcctype; DWORD dwDataOffset; DWORD dwFlags; } MMCKINFO;
i vo mt chunk, ta cho trng ckid ca MMCKINFO loi chunk m ta mun nh v. C mt macro thc hin vic ny l mmioFOURCC. Sau gi hm mmioDescend nh v chunk. Nu nh v thnh cng, hm ny tr v zero v i tng MMCKINFO truyn cho hm s c in vo cc thng tin v chunk.
Trng cksize nh ngha kch thc tnh bng byte ca chunk. i s th ba ca mmioDescend l c MMIO_FINDRIFF. C ny
ch th cho mmioDescend tm mt file c ID l RIFF vi loi chunk c xc nh bi ckid. Nu mun tm mt chunk trong Wave file ta cho c ny l MMIO_FINDCHUNK.
Sau khi i vo WAVE chunk, ta bt u i vo fmt subchunk ca n:
MMIOCKINFO mmSub; MmSub.ckid=mmioFOURCC(f,m,t); If (mmioDescend(h,(LPMMCKINFO)& mmSub,
(LPMMCKINFO)&mmParent,MMIO_FINDCHUNK)) { mmioClose(h,0); /* bo li */ return(0);
} n y ta c th bt u c d liu t Wave File. on m sau
c i tng PCMWAVEFORMAT t fmt subchunk: PCMWAVEFORMAT waveformat; Int n; n = min ((unsigned int)mmSub.cksize,
sizeof(PCMWAVEFORMAT)); if(mmioRead(h,(HPSTR)&waveformat,
(long)n) !=(long)n) {
/* bo li */ return(0L); } if(waveformat.wf.wFormatTag !=WAVE_FORMAT_PCM) { /* bo li */
-
Khoa CNTT HBKHN
SVTH: Vn Tun Trang 15
mmioClose(h,0); return(0L); }
i s u tin ca mmioRead l handle ca file ang c. i s th hai l con tr xa tr ti vng m cha d liu. i s th ba l s byte cn c. Hm ny s tr v s byte thc s c c.
Sau khi c ni dung ca chunk, ta i ra khi chunk chun b c chunk k tip:
MmAscend(h,(LPMMCKINFO)&mmSub,0); i s th hai ca mmAscend l i tng MMCKINFO ca chunk m ta i ra. i s th ba l i s gi.
Cng vic cn li l c d liu m ha mu m thanh ca Wave file vo b nh. Ch rng gi tr cksize tr v bi mmioDescend c s dng xc nh kch thc vng m cn cp pht cha d liu.
GLOBALHANDLE wavehandle; HPSTR wavepointer; MmSub.ckid=mmioFOURCC(d,a,t,a); If(mmioDescend(h,(LPMMCKINFO)&mmSub, (LPMMCKINFO)&mmParent,MMIO_FINDCHUNK)) { mmioClose(h,0); /* bo li */ return(0); } if((wavehandle=GlobalAlloc(GMEM_MOVEBLEIGMEM_ SHARE, mmSub.cksize))==NULL) { mmioClose(h,0); /* bo li */ return(0); } if(wavepointer=(HPSTR)GLOBALLOCK(WAVEHANDLE)) ==null) { GlobalFree(wavehandle); mmioClose(h,0); /* bo li */ return(0); } if(mmioRead(h,wavepointer,mSub.cksize) != mSub.cksize)
-
Khoa CNTT HBKHN
SVTH: Vn Tun Trang 16
{ GlobalUnlock(wavehandle); GlobalFree(wavehandle); mmioClose(h,0); /* bo li */ return(0); } GlobalUnlock(wavehandle);
-
Khoa CNTT HBKHN
SVTH: Vn Tun Trang 17
CHNG 3. L THUYT X L TN HIU S. I. TN HIU V H THNG RI RC 1. Gii thiu
Tn hiu l biu hin vt l ca thng tin, thng l thng tin v trng thi hay hnh vi ca mt h vt l no . V mt tn hc, tn hiu c coi l hm ca ca mt hay vi bin c lp. V d: tn hiu m thanh l s thay i p sut khng kh theo thi gian; tn hiu hnh nh l hm sng theo hai bin khng gian..
Theo qui c chung, tn hiu c coi l hm theo mt bin c lp v l bin thi gian.
Tn hiu s (Digital signal) l tn hiu ri rc (theo bin c lp thi gian) ng thi c bin cng ri rc ha (lng t ha).
2. p ng xung trong h tuyn tnh bt bin. Tn hiu vo x(n) c gi l tc ng, tn hiu ra y(n) c gi l
p ng ca h x l. Ta c quan h: [ ])()( nxTny = T : php bin i )()( nynx
Mt h thng l tuyn tnh nu tha nguyn l xp chng: gi s y1(n) v y2(n) l p ng ca h tng ng vi tc ng vo l x1(n) v x2(n). H l tuyn tnh nu v ch nu :
[ ] )(.)(.)(.)(. 2121 nybnyanxbnxaT +=+ Nh vy, mt h tuyn tnh c th x l tng tc ng nh l cc
tc ng ny c x l c lp, sau cc p ng tng ng s c cng li.
Mt tn hiu x(n) bt k c th biu din :
=
=k
knkxnx )().()(
Do vy i vi h tuyn tnh:
=
=k
k nhkxny )().()(
hk(n) gi l p ng xung ca h i vi tc ng l xung (n-k) Theo cng thc trn, h tuyn tnh vn cn ty thuc vo thi im
tc ng k. Mt h tuyn tnh l bt bin(theo thi gian) nu tn hiu vo b dch i mt on thi gian l k th tn hiu ra cng ch dch mt on k, tc mi hk(n) tr thnh h(n-k).
-
Khoa CNTT HBKHN
SVTH: Vn Tun Trang 18
Nh vy mi h tuyn tnh bt bin u c c trng hn tn bng p ng h(n), bit h(n) ta hn tn tnh c p ng y(n) ca tn hiu vo x(n).
=
=k
knhhxny )().()(
Cng thc trn cn c gi l Tng chp (convolution sum) ca hai tn hiu x(n) v h(n), v cn c k hiu: )(*)()( nhnxny =
3. Tnh cht ca tng chp ca h TTBB
Tnh giao hn: )(*)()( nhnxny = =
=
kknhkx )().(
)(*)( nxnh=
=
=k
knxkh )().(
Tnh phn phi: [ ] )(*)()(*)()()(*)( 2121 nhnxnhnxnhnhnx +=+
Nh vy, t tnh cht giao hn, ta thy rng: hai h TTBB c p ng xung l h1(n) v h2(n) c mc ni tip nhau s tng ng vi mt h c p ng xung:
)(*)()( 21 nhnhnh = v th t mc ni tip khng quan trng.
T tnh cht phn phi, hai h TTBB mc song song nhau s tng ng vi mt h c p ng xung bng tng hai p ng xung:
)()()( 21 nhnhnh +=
)()()()(
2
1 nynhnhnx +=
)()()()( 21 nynhnhnx ++= 4. H nhn qu (causal system)
Cc h c tn hiu ra ch ph thuc vo tn hiu trong qu kh v hin ti c gi l cc h nhn qu, tc phi c tc ng vo (nguyn nhn) th mi c tc ng ra (kt qu).
nh l: H tuyn tnh bt bin (TTBB) l nhn qu nu p ng xung h(n) = 0 vi mi n
-
Khoa CNTT HBKHN
SVTH: Vn Tun Trang 19
i vi mt h TTBB v nhn qu, dng chung ca cng thc tng chp
=
=k
knhkxny )().()(
hoc vit cch khc:
=
=0
)().()(k
khknxny
Nu p ng xung h(n) c di hu hn N th:
=
=1
0)().()(
N
kkhknxny
M rng cho tn hiu: tn hiu nhn qa l tn hiu bt u khc 0 t thi im 0. 0= khi n
-
Khoa CNTT HBKHN
SVTH: Vn Tun Trang 20
Hm H(ej) gi l p ng tn s ca h, biu din p ng ca h thng theo hm ca tn s i vi dy tc ng ejn, n cho bit s thay i v bin v pha theo tn s khi tn hiu i qua h.
H(ej) l mt hm s phc v c th biu din theo phn thc v o:
H(ej)= Hr(ej)+ jHi(ej). (r: real; i: image) Hoc theo bin v pha:
H(ej)= | H(ej)| ejargH(ej ) (02). H(ej) l hm lin tc theo v tun hn vi chu k 2. Ta c th khai trin n thnh chui Fourier, ngc li h(n) c th c tnh tn t H(ej) bng cc cng thc tnh h s khai trin chui Fourier:
=
deeHnh njj .).(21)(
Trong : =
=n
njj enheH ).()(
Bin i Fourier ca dy ri rc:
=
=k
tTjkk eAtS
)2(.)(
i vi tn hiu tun hn
+
=Tt
Tjkk dtetsTA
0
0
)/2( .).(1
7.2. Php bin i Fourier thun.
=
=n
njj ekxeX ).()(
7.3. Php bin i Fourier nghch.
=
deeXnx njj ).(2/1)(
7.4. Ph bin , ph pha v ph nng lng Do X(f) l mt hm phc nn ta c th biu din di dng modul v argument:
[ ])(arg|)(|)( fXjefXfX = Hm modul X(f) theo f c gi l ph bin ca tn hiu x(n), cn hm (f)=arg[X(f)] c gi l ph pha.
-
Khoa CNTT HBKHN
SVTH: Vn Tun Trang 21
Cui cng (f)=|X(f)|2 c gi l ph nng lng, biu din s phn b theo tn s ca nng lng tn hiu x(n).
8. nh l ly mu Shannon Mt tn hiu tng t xa(t) c di ph hu hn vi gii hn trn l Fmax(Hz) (tc l ph bng 0 khi f nm ngi di - Fmax.. Fmax). Ta s ch c th khi phc li xa(t) mt cch chnh xc t cc mu xa(n.Ts) nu nh :
Fs 2Fmax hay Ts 1/(2Fmax). Khi phc li tn hiu tng t t tn hiu ly mu: Ta c th khi phc li tn hiu xa(t) bng cch cho tn hiu ly mu i qua mt mch lc (tng t) thng thp l tng (low-pass filter) c p ng tn s Hlp(f) vi tn s ct l fc = Fs/2. Ph ca tn hiu xa(t) s c lc li chnh xc ch vi iu kin :
Fs 2Fmax Ngha l tha mn nh l ly mu. Khi trong khng gian tn s:
Xa(f) = X(f).Hlp(f) Cn trong khng gian thi gian:
Xa(t) = x(nTs)*hlp(t) Trong hlp(t) l p ng xung ca mch lc thng thp l tng c bin di thng l Ts.
II. PHP BIN I FOURIER RI RC 1. Chui Fourier ri rc ca tn hiu ri rc tun hn
Tn hiu tun hn xp(n) l tun hn vi chu k N nu: xp(n)= xp(n+N), vi mi n. i vi tn hiu ri rc, ta khai trin Fourier theo hm:
k(n) = ej(2k/N)n , k=0,1, 2.. Cc hm iu ha phc ri rc ch c N tn hiu phn bit nhau v tn hiu sai khc nhau l bi ca N th u nh nhau:
k(n) = kN(n) = k2N(n) = ej(2k/N)n i vi tn hiu tun hn v ri rc xp(n), ta c chui Fourier ri rc (DFS):
= nNkjkp eanX )/2(.)( k=N Trong cc h s ak l cc h s khai trin chui Fourier ri rc hay cn c gi l cc vch ph ca tn hiu tun hn.
-
Khoa CNTT HBKHN
SVTH: Vn Tun Trang 22
2. Bin i Fourier ri rc ca tn hiu c di hu hn(DFT:Discrete Fourier Transform) Vic biu din Fourier cho tn hiu ri rc c di hu hn gi l php bin i Fourier ri rc (DFT). Tn hiu c di hu hn l tn hiu c gi tr khc 0 trong mt khong hu hn thi gian no , v bng 0 trong khong cn li. y l loi tn hiu tn ti trong thc t v chng ta ch c th quan st mi tn hiu trong mt khong thi gian l hu hn t N1 n N2. n gin h, ta c th qui c tn hiu x(n) tn ti trong khong thi gian: 0 n M-1, tc l : M = N2 - N1+1. Vi tn hiu x(n) ny c dng nh l mt chu k tn hiu, ta c th xy dng tn hiu xp(n) tun hn vi chu k N bng cch xp chng tun hn:
=
+=i
p iNnxnx )()(
Nu N M th khng xy ra hin tng trm thi gian gia cc phn ca xp(n). Do xp(n) ch c duy nht mt cch biu din chui Fourier ri rc nn x(n) cng vy. T chui Fourier ta tnh ra c 1 chu k tn hiu ca xp(n), trong c x(n):
xp(n) 0 n N-1 x(n)= 0 n cn li.
3. Php bin i nhanh fourier
Fast Fourier Transform (FFT) l mt gii thut rt hiu qu tnh DFT. Cng thc bin i DFT:
=
=1
0
/)2().()(N
k
NknjenxkX
t Wnk = Nknje /)2(
=
=1
0
).()(N
k
nkWnxkX
Chia DFT thnh 2 phn :
=
=+++=
12/
0
12/
0
)12(2 ).12().2()(N
n
N
n
knN
nkN WnxWnxkX
K hiu thnh phn chn l xev v l l xod, ta vit li:
-
Khoa CNTT HBKHN
SVTH: Vn Tun Trang 23
=
=+=
12/
0
12/
02/ ).().()(
N
n
N
n
nkNod
nkNev WnxWnxkX
)(.)()( 2/ kXWkXkX odk
Nev += , k = 0..N-1 tnh X(k) ch cn tnh trong na chu k N/2. Xev(k) v Xod(k) tun hn vi chu k N/2: Xev(k) = Xev(k - N/2), N/2 k N-1.
-
Khoa CNTT HBKHN
SVTH: Vn Tun Trang 24
CHNG 4. GII THIU V MPEG. I. GII THIU. 1. MPEG l g?
MPEG, vit tt ca cm t Moving Picture Experts Group, l mt nhm chuyn nghin cu pht trin cc tiu chun v hnh nh s v nn m thanh theo chun ISO/IEC. Ngy nay, nhm lm vic MPEG pht trin v pht hnh cc tiu chun MPEG-1, MPEG-2 v MPEG-4. Chun MPEG-3 c kt hp vo MPEG-2 v khng cn tch ring na. Nhm MPEG hin nay pht trin n chun MPEG-7. MPEG ch l mt tn ring, tn chnh thc ca n l : ISO/IEC JTC1 SC29 WG11. ISO : International Organization for Standardization IEC : International Electro-technical Commission JTC1 : Joint Technical Committee 1 SC29 : Sub-committee 29 WG11: Work Group 11 (moving picture with audio).
2. So snh cc chun MPEG: MPEG-1 nh ngha mt tiu chun cho vic lu tr v phc hi cc hnh nh ng v m thanh trn cc thit b lu tr. Tiu chun ny nh ngha rng hnh nh c pht li tc 30 frames mt giy v m thanh c pht li cht lng nh CD-audio, phn gii hnh nh l 352 x 240. Chun MPEG-1 c dng in hnh trong cc phn mm hun luyn bng my tnh, cc game hnh ng trong my tnh, video cht lng VHS, Karaoke.. MPEG-2 nh ngha cho mt tiu chun k thut truyn hnh s. Chun MPEG-2 khc phc mt vi nhc im ca chun MPEG-1. V d, MPEG-2 c th to hnh nh ln gp 4 ln MPEG-1 vi nt cao hn v r hn (720 x 480 v 1280 x 720). Cc c tnh ca MPEG-2 bao gm hnh nh cht lng cao v m thanh ni.. MPEG-3 nh ngha mt tiu chun cho High Difinition Television (HDTV), l th h tip theo ca cng ngh truyn hnh theo nh dng s y . Tiu chun ny khng c pht trin hn thin v cui cng c kt hp vo vi chun MPEG-2. MPEG-3 i n mc tiu l cc ng dng HDTV vi kch thc mu ln n 1920x1080x30 Hz v c m h tc bit 20 n 40 Mbits/s. Cui cng ngi ta nhn ra rng vi mt vi iu chnh thch hp, MPEG-1 v MPEG-2 lm vic rt tt i vi HDTV. MPEG-4 nh ngha mt tiu chun cho cc ng dng Multi-media. c bit n nh ngha tiu chun truyn cho dng phc tp cc hnh nh, m thanh v d liu ho v vic ti hp chng trn thit b thu. MPEG-4
-
Khoa CNTT HBKHN
SVTH: Vn Tun Trang 25
c pht trin theo 2 giai on, 1 v 2. Chun MPEG-4 nh ngha cc i tng hnh nh m trong cc phn ca mt cnh c th c thao tc trong khi nhng phn khc vn khng i. MPEG-5 v MPEG-6 vn cha c cng b. MPEG-7 nh ngha mt tiu chun v vic biu din ni dung cho cc nghin cu thng tin hnh nh v m thanh. Tn chnh thc l Multimedia Content Description Interface. Mc tiu ca MPEG-7 l chun h vic biu din cc m t v ni dung nghe nhn. Tuy nhin chun khng nh ngha cc cng c nhn ra ni dung nghe nhn tht s.
3. m thanh MPEG. Kh nng ca m thanh MPEG, v c bn, m thanh MPEG s lm gim kch thc lu tr 1 tp tin m thanh i rt nhiu. Mt a Audio-CD lu tr c khong 650 Mbyte d liu m thanh th vi cch m ha 16 bit (bitdepth) v tn s ly mu (sample rate) 44.1 kHz. Nu em pht ra th cng ch c 60 n 72 pht. - bitdepth: m t mc bin ln nht m mt mu m thanh c th t ti. V d: 8 bit = 256 mc, 16 bit = 65536 mc, v hnh nh th chnh l phn gii. - sample rate: m t s mu m thanh c ly trong 1 giy. V d: 22 kHz = 22.000 mu/1giy. Phng php c in gim kch thc lu tr l gim lng thng tin. Nu i cch lu tr m thanh t 16 bit sang 8 bit chng ta c th gim kch thc lu tr i 1 na, tuy nhin nh th cht lng m thanh cng s gim i 1 na.
Hnh 4.1
-
Khoa CNTT HBKHN
SVTH: Vn Tun Trang 26
4. Cc khi nim trong m thanh MPEG. a. Hiu ng che (masking): ni n gin l m ln t m b, m mnh t m yu.
b. Ngng nghe v mc nhy cm.
Th nghim: t mt ngi trong phng yn tnh. Tng mc to ca m 1kHz ln cho n ngay khi c th nghe c r rng. Lp li th nghim vi cc tn s khc nhau, ta v c th sau:
Hnh 4.2
Ngng nghe : l mc m di n 1 m thanh khng th nghe c. N thay i theo tn s m thanh, v d nhin gia mi ngi khc nhau. Hu ht mi ngi u nhy cm mc 2 n 5 kHz. Mt ngi c nghe c m thanh hay khng ty thuc vo tn s ca m v to ca m trn hay di ngng nghe ti tn s . Tai nhy cm mc 2 n 5 kHz .
Ngng nghe cng c tnh thch nghi, thay i c nh bi m thanh m ta nghe c. V d, mt cuc ni chuyn bnh thng trong mt phng th
-
Khoa CNTT HBKHN
SVTH: Vn Tun Trang 27
c th nghe c r rng iu kin bnh thng. Tuy nhin, cng cuc tr chuyn nm trong vng ln cn ca nhng ting n ln, nh l ting n do mt chic phn lc bay ngang bn trn, l hn tn khng th nghe c do lc ny ngng nghe b sai lch. Khi chic phn lc i ri th ngng nghe tr li bnh thng. Am thanh m ta khng th nghe c do s thch nghi ng ca ngng nghe gi l b che (masked). c. Che tn s (Frequency Masking) Th nghim:
Pht ra 1 m c tn s 1 kHz vi mc to c nh l 60dB, gi l m che (masking tone). Pht ra mt m khc (gi l test tone) mc tn s khc (v d 1.1kHz), v tng mc to ca m ny cho n khi c th nghe c n (phn bit c m 1.1 kHz v m che 1kHz).
Lm li th nghim vi cc m th (test tone) v v ra mt ngng m ti cc m th bt u c th phn bit c:
Hnh 4.3
Lm th nghim vi cc masking tones c cc tn s khc nhau, ta c c hnh v:
-
Khoa CNTT HBKHN
SVTH: Vn Tun Trang 28
Hnh 4.4 d. Che nht thi. (che thi gian)
Nu ta nghe mt m thanh ln, ri ngng n li, mi mt lc sau ta mi c th nghe c mt m ln cn nh hn .
Th nghim: pht ra mt m che masking tone c tn s 1kHz mc 60dB, km mt m th (test tone) 1.1kHz mc 40dB. Ta khng nghe c m th ny (n b che).
Dng m che li, i mt lc (delay time) ta dng tip m th (test tone). iu chnh thi gian delay cho ta va c th nghe c m ch (v d khong 5ms). Lp li th nghim cho cc mc to khc nhau ca m th, ta v c th sau:
Hnh 4.5
Lm th nghim tng t vi cc tn s khc nhau cho m th. Hiu qa che c v nh hnh.
-
Khoa CNTT HBKHN
SVTH: Vn Tun Trang 29
Hnh 4.6
5. Hot ng:
Khi a ra phng php m ha m thanh, nn tng vn l yu t h thng nghe ca con ngi. Tht khng may khng phi 1 thit b hn ho nhn bit m thanh nhng l thit b duy nht chng ta c c. Nhng chng ta c th chuyn nhng khuyt im ca n thnh u im : l c tnh phi tuyn ca ngng nghe v kh nng thch hp ca n.
MPEG hot ng da trn h thng nghe ca con ngi, l cm gic v m mang c tnh sinh l v tm l.
Am thanh CD ghi li tt c tn s, k c nhng tn s b che. Am thanh MPEG ch ghi li nhng tn s m tai ngi c th nghe. Nh vy, MPEG s b qua nhng thng tin khng quan trng. Da trn
nghin cu v nhn thc m thanh ca con ngi, b m ha s quyt nh nhng thng tin no l cn bn v nhng thng tin no c th b qua.
Hiu qa ny l bao qut nhng c bit quan trng trong m nhc. Nu trong mt dn nhc c mt nhc c chi cc mnh, lm t ting ca cc nhc c khc ta khng th nghe c. Nhng my thu m vn ghi li y tt c tn s ca tt c nhc c, ngha l thit b thu m hn tn khng c kh nng thch nghi ng nh con ngi. Nhng khi pht li, ta vn khng nghe c m thanh ca nhng nhc c b t. V vy vic lu tr/ghi li nhng tn s ny l tha, lm chim dung lng kh nhiu. Cch ghi m tuyn tnh trn a CD l hn tn khng hiu qa v kha cnh ny. Do thay v phi ghi li thng tin ca nhng m khng nghe c, ta s dnh ch cho cc m c th nghe c. Theo cch ny, dung
-
Khoa CNTT HBKHN
SVTH: Vn Tun Trang 30
lng ca thit b ghi m cn thit c th xem nh gim i m khng lm gim cht lng m thanh.
Trc khi chng ta nghe c iu g, thng tin s c phn tch bi b no ca chng ta. No b s dch m thanh v lc b nhng thng tin khng cn thit. K thut m thanh MPEG lm vic ny thay th cho no b. Nh vy, nhng thng tin l ra phi c lc bi no b by gi khng cn cn phi lu tr chim gi khng gian a na.
II. CC KHI NIM C BN V MPEG. 1. Lc m ha Perceptual Subband.
B m ha m thanh theo perceptual subband phn tch lin tc cc tn hiu vo v xc nh ra ng cong che (masking curve), l mc ngng m nhng m thanh di n khng th nghe c bi h thng nghe ca con ngi.
Hnh 4.7 Tn hiu vo c chia thnh 1 s di tn s, gi l subband. Mi tn hiu subband c lng t ha theo cch m s lng t ha ting n c bt u bi vic m ha s khng vt qa ng cong che ca
-
Khoa CNTT HBKHN
SVTH: Vn Tun Trang 31
subband . S lng t ha ph ting n v th thch nghi ng vi ph ca tn hiu.Thng tin trn b s ha c dng trong mi subband c truyn dc theo cc mu subband c m ha. B gii m s gii m dng bit (bitstream) m khng cn phi bit cch m b m ha xc nh nhng thng tin ny. iu ny cho php b m ha hot ng vi nhng mc khc nhau v cht lng v phc tp, v cng cho php s pht trin trong tng lai ca b m ha.
2. Gii thch v hiu qa che (masking effect). a. Nn m thanh MPEG. MPEG c th nn 1 dng bit 32 kbit/s n 384 kbit/s. Mt dng bit m thanh PCM th th khong 705 kbit/s, do t s nn ti a c th l 22. T s nn bnh thng l 1:6 hay 1:7. 96 kbit/s l xem nh trong sut cho hu ht cc mc ch thc t. C ngha rng ta khng cn phi lu tm n bt k s khc bit no gia tn hiu gc v tn hiu nn i vi nhc pop hay nhc rockn roll. i vi mt s ng dng khc nh l ha tu piano, tc bit c th ln ti 128 kbit/s. t c t s nn ny, i vi m thanh, v c bn ta c hai chn la: hoc gim s ln ly mu, hoc gim s bit lng t h. Con ngi c th nghe m thanh vi tn s t 20 Hz n 20 kHz. Theo thuyt ca Nyquist, ta phi ly mu m thanh tn s ti thiu l hai ln tn s cao nht m ta mun pht li. Tn s ly mu 44,1 kHz l thch hp. Vn cn li l phi chn s bit cho mt mu m ha l bao nhiu. Thng thng l 16 bit. L do chn con s 16 bit bt ngun t t s tn hiu v nhiu (s/n). Nhiu ni y sinh ra do qa trnh s ha. C mi bit thm vo, ta c t s s/n tt hn 6dB (i vi tai ngi, 6 dB tng ng vi mc to gp i). Am thanh CD t ti khong 90 dB s/n. Mc ny ph hp vi phm vi ng ca tai ngi cn tt. Ngha l ta khng th nghe c bt k nhiu no n t bn thn h thng. iu g xy ra nu ta ly mu vi 8 bit? Ta s nghe thy rt nhiu ting si trong bn ghi. D dng nghe thy nhiu trong khong ngh ca bn nhc hoc gia cc t nu ta ghi m mt ging ni. b. Hiu qa che. Gi s c mt m mnh vi tn s 1000Hz, v mt m km theo c tn s 1100Hz nhng vi cng m nh hn 18dB. Ta s khng th nghe thy m ny v n b che hn tn bi m ch 1000Hz. Ni mt cch khc, mt m thanh yu gn mt m thanh mnh s b che. Nu c mt m thanh khc tn s 2000Hz cng c mc to thp hn m 1000Hz l 18dB th ta s nghe c m ny. khng nghe c m ny ta phi gim mc to ca m ny xung cn thp hn 45dB so vi m ch 1000Hz. Hiu qa che c ngha rng ta c th gia tng mc n nn xung quanh mt m mnh m
-
Khoa CNTT HBKHN
SVTH: Vn Tun Trang 32
vn khng nghe c ting n v chng s b che hn tn. Tng mc n nn cn c ngha l dng t bit s ha. V iu ny cng ging nh l ta nn m thanh vy. By gi hy xem b m h m thanh MPEG hot ng nh th no. B m ha chia ph tn s (20Hz n 20kHz) thnh 32 di nh (sub-band). Mi sub-band gi 1 phn nh ca ph. Trong vng trn ca sub-band 8 ta pht mt m c tn s 1000Hz vi mc to 60dB. B m ha s tnh tn hiu qa che ca m ny v nhn ra rng c mt ngng che cho tn b sub-band th 8 (tt c nhng m c cng tn s). Ngng che ny thp hn m pht ra 35 dB. T s s/n c th chp nhn c l 60 - 35 = 25 dB, tng ng vi 4 bit. Ngi ra n cn nh hng trn cc sub-band 9-13 v 5-7 vi hiu qa che gim dn t sub-band 8. Hn na, b m ha cng xem xt mc nhy cm ca tai i vi cc tn s khc nhau. Tai ngi t nhy cm vi cc tn s cao v thp. N nhy cm nht i vi tn s 2-4 kHz, cng di tn s vi ting ni con ngi. Cc sub-band nn ph hp vi tai ngi., ngha l mi sub-band cn c cc tn s c cng cc tnh cht m hc tm l. Trong MPEG layerII, mi sub-band c rng 625Hz, do cn phi c nhng b lc bng thng phc tp. cc b lc phc tp, ngi ta thm FFT (Fast Fourie Transform) vo song song vi b lc v s dng cc thnh phn ph t FFT nh l cc thng tin thm vo b m ha. Bng cch ny ta s ly mt bit cao hn i vi cc tn s thp m tai ngi nhy cm hn. Cn nhiu vn cn phi bn ti. Chng ta ch mi gii thch s che ng b, hiu qa che cn xy ra trc v sau mt m mnh.
3. Cc lp ca m thanh MPEG. C nhiu s nhm ln v lp m thanh MPEG. Tt c cc lp u da trn cng mt lc m ha (m ha theo nhn thc). Mc phc tp ca b m ha v gii m tu thuc vo mi lp. Sau y l hnh nh cho thy t s nn m ta cn phi t ti 100% cht lng CD vi cc b m ha v gii m khc nhau.
-
Khoa CNTT HBKHN
SVTH: Vn Tun Trang 33
Hnh 4.8 Sau y l chi tit v cc lp. a. Lp I (Layer I): y l lp n gin nht ph hp cho ng dng ca ngi dng. M hnh m hc tm l ca lp ny ch s dng cc tn s che. iu ny c ngha rng n s b qua cc tn s b khut sau cc tn s khc. Phm vi tc bit t 32 kbit/s (mono) n 448 kbit/s (stereo). Ty thuc vo mc phc tp ca b m ha, mt m thanh cht lng cao (gn vi m thanh CD) yu cu tc bit khong 256 - 384 kb/s trn mt chng trnh stereo. Khng nn m ha vi mc nn cao hn 384 kb/s. phc tp ca b gii m thp, phc tp ca b m ha cao hn 1.5 - 3 ln. Lp I c dng nhiu trong DDC v Solid State Audio. b. Lp II (Layer II): Lp II ngh mc nn cao hn lp I v mc lc su hn. N c nhng ng dng s cho c m thanh chuyn nghip v ti t, nh qua i pht thanh, TiVi...Phm vi tc bit t 32 - 192 kb/s cho m thanh mono, v t 64 - 384 kb/s cho m thanh stereo. Ty thuc vo mc phc tp ca b m ha, mt m thanh cht lng cao (gn vi m thanh CD) yu cu tc bit khong 256 - 384 kb/s trn mt chng trnh stereo. Mc phc tp ca b gii m 25% cao hn so vi lp I, v b m ha c mc phc tp cao hn 2 - 4 ln. c. Lp III (Layer III).
-
Khoa CNTT HBKHN
SVTH: Vn Tun Trang 34
Lp III cn a ra mc nn v lc cao hn c lp II v s dng mt b m ha Huffman.
Layer Complexity Encoder Decoder
I 1.5 3 1
II 2 4 1.25
III > 7.5 2.5
Trong bng trn, phc tp ca b gii m lp I c dng so snh. III. CC THNG S DNG TRONG MPEG.
Chun MPEG cho php ta chn la cc thng s cho vic nn m thanh tt nht ph hp vi ng dng m ta s dng. Lc m ha cho cc loi l tng qut. Cc thng s c th chn la trong b m ha MPEG bao gm: Mode, Sampling frequency, bitrate, v Layer. a. Mode. Chun MPEG c 4 ch :
Mono. Dual channel. Stereo. Intensity Stereo (cn gi l Joint Stereo).
Ch Mono r rng c dng cho m thanh 1 knh. chn ch cho cc ng dng 2 knh, u tin ta phi xc nh u l tn hiu tri v u l tn hiu phi chia chng ra thnh 2 files khc nhau, nhm sau ny ta c th lm vic c lp trn knh tri hoc phi. Lc ta s chn ch Mono. Nu 2 knh khng cn hot ng c lp, ta chn Stereo, Dual hay Intensity Stereo to mt file duy nht. Ch Stereo hay knh Dual l hn tn ng nht khi chng cng sinh ra mt file duy nht cho tn hiu stereo. Tuy nhin mt bit ch th s nhn dng xem mt file l ch no v c th c dng cho nhng p dng no... Ch Intensity Stereo xem xt s d tha gia cc knh tri v phi nhm ti u m. Cht lng ch quan ca Intensity Stereo thay i theo hnh nh stereo ca tn hiu m ha. Tuy nhin n c bit thch hp cho tc truyn bit thp. b. Sampling Frequency (tc ly mu).
-
Khoa CNTT HBKHN
SVTH: Vn Tun Trang 35
Mt s tc ly mu: 32kHz, 44.1kHzv 48kHz i vi MPEG1 (Tiu chun ISO/IEC 11172-3). 16kHz, 22.05kHzv24kHz i vi MPEG2 (Tiu chun ISO/IEC13818-3).
Khi chn la tc ly mu cn xem xt cc vn :
Tn s ly mu cng ln th cht lng m thanh cng cao( di frame nh hn).
Bng thng tn hiu gii hn mc 15 kHz khi ly mu tc 32 kHz v 8 kHz tc 16 kHz.
Tn s ly mu (kHz) v tc ca m thanh m ha (kbps) c th chn c lp.
Tn s ly mu 44.1 kHz hay 22.05 kHz l khng thit thc cho vic chn lc v di frame (byte) l thay i.
Nhng file c ly mu nhng tn s khc nhau th rt kh khn khi ha trn.
Khi dng ng nhp s AES/EBU, tn s ly mu b c nh bi tn hiu nhp. Nu khng bt buc, Digigram yu cu ly mu 48 kHz hoc 44.1 kHz cho pht thanh hay ng dng multimedia. Nu ta phi s dng tc bit thp cho s truyn c hiu qa, tc 24 kHz l thch hp. c. Bit Rate. Mi Layer v ch c nhiu cch chn la tc bit (bit rate). Vic chn tc bit ty thuc trc tin vo cht lng m yu cu. Bng thng tn hiu l hp hn nu tc bit thp, khin cho n khng thc t i vi mt s ng dng. Tc bit c o theo kilobits/sec(kbps). Khi chn la tc bit cn xem xt cc vn :
Ti 128 kbps trn mi knh (hay 256 kbps stereo), cht lng m thanh CD s t c vi Layer I hay Layer II.
Ti 192 kbps trn mi knh, cht lng m thanh l hn tn trong sut. Tc 128 kbps/knh c dng ph bin nht trong pht thanh. N tng ng vi t s nn 1:6 tc ly mu 48 kHz. Tc thp hn 128 kbps/knh c dng trong cc ng dng yu cu t s nn ln hn do gii hn ca bng thng truyn hay thit b lu tr. Mt s tc bit cung cp bi chun m thanh MPEG :
MPEG 1: 32 kHz, 44.1 kHz v 48 kHz - Layer I :
-
Khoa CNTT HBKHN
SVTH: Vn Tun Trang 36
32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448 kbps. Nhng tc ny l c th ch 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 c th ch Mono; 64, 96, 112, 128, 160, 192 kbps c th c hai ch Mono v Stereo;224, 256, 320, 384 kbps ch c th ch Stereo.
MPEG 2 : 16 kHz, 22.05 kHz v 24 kHz - Layer I : 32, 48, 56, 64, 80, 96, 112, 128, 144, 160, 176, 192, 224, 256 kbps Nhng tc ny l c th ch Mono hay stereo.. - Layer II : 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160 kbps. Nhng tc ny l c th ch Mono hay stereo. d. Layers. Chun MPEG c ba layer. Khi chn la tc bit cn xem xt cc vn :
cng tc bit, Layer II mang li cht lng m thanh tt hn Layer I. Kt lun ny l ch quan, v s chnh lch l rt kh phn bit tc bit 128 kbps v ln hn.
Dng Layer I th vic chn lc chnh xc hn Layer II bi v phn gii ca Layer I gp ba ln Layer II. Resolution Table
Sampling frequency
Layer I (384 samples)
Layer II (1152 samples)
32 kHz 12 ms 36 ms
44.1 kHz # 8.71 ms # 26.12 ms
48 kHz 8 ms 24 ms
16 kHz 24 ms 72 ms
22.05 kHz # 17.42 ms # 52.24 ms
-
Khoa CNTT HBKHN
SVTH: Vn Tun Trang 37
24 kHz 16 ms 48 ms
Cc im k thut mu cht. Chun m ha m thanh MPEG ch nh vic ghi mt s c nh cc mu (384 cho Layer I v 1152 cho Layer II) to ra mt chui cc bytes gi l frame. Frame l thc th nh nht c iu khin bi mt ng dng. Vic chn tc bit(kbps) thit lp nn kch thc ca frame theo byte. V d: 48 kHz, 128 kbps, ch Mono, Layer II:
48,000 mu, tng ng 1000 ms hay 1s, 1152 mu tng ng 24 ms. tc bit 128,000 bits/s, 3072 bits (384 bytes) cn cho 24 ms. Chiu di frame v th l 384 byte. lu 1 pht, cn 960,000 byte (hay khong 1 Megabyte) a trng.
-
Khoa CNTT HBKHN
SVTH: Vn Tun Trang 38
CHNG 5. CC GII THUT NN M THANH. I. NN TNG L THUYT THNG TIN.
Theo Shannon, entropy ca mt ngun thng tin S c nh ngha:
H(S) = = ipilog2(1/pi) Trong : - pi l xc sut m k hiu Si xut hin trong S.
- log2(1/pi) ch ra s lng thng tin cha ng trong Si, ngha l s bit cn thit m ha Si.
V d: mt hnh nh c t u vi cng mt cng mu xm, tc l pi=1/256, th s bit cn thit m ha cho mi mc xm l 8 bits. Entropy ca hnh ny l 8. Gii thut Shannon - Fano: Ta dng mt v d n gin m t gii thut: K hiu A B C D E --------------------------------------------------- S ln 15 7 6 6 5 M ha cho gii thut Shannon - Fano: Dng cch tip cn t trn xung.
Sp th t cc k hiu theo tn s xut hin ca n, ngha l: ABCDE. Chia thnh hai phn, mi phn tng ng vi cng s ln m.
Hnh 5.1
K hiu S ln log(1/p) M Cng(s bit) ---------- -------- ---------- ----- --------------- A 15 1.38 00 30 B 7 2.48 01 14
-
Khoa CNTT HBKHN
SVTH: Vn Tun Trang 39
C 6 2.70 10 12 D 6 2.70 110 18 E 5 2.96 111 15 Tng cng(s bit) : 89
II. CC GII THUT NN KHNG C TN THT. 1. M ha Huffman.
Khi to: a tt c cc node vo danh sch OPEN theo th t ti mi thi im. V d: ABCDE.
Lp li cho n khi danh sch OPEN ch cn mt node bn tri nh sau: - T danh sch OPEN, chn hai node c xc sut thp nht, to node cha cho chng. - Gn tng cc xc sut cho node cha v a node cha vo danh sch OPEN. - Gn cc m 0, 1 vo cc nhnh ca cy, xa cc node con khi danh sch OPEN.
Hnh 5.2
K hiu S ln log(1/p) M Cng(s bit) ---------- --------- ---------- ----- --------------- A 15 1.38 0 30 B 7 2.48 100 14 C 6 2.70 101 12 D 6 2.70 110 18 E 5 2.96 111 15 Tng cng (s bit) : 87
-
Khoa CNTT HBKHN
SVTH: Vn Tun Trang 40
Vic gii m cho c hai gii thut trn l tm thng chng no m bng m (thng k) c gi trc d liu. C mt bit bn trn cng vic truyn ny, nhng khng ng k nu file d liu ln.
Tnh cht tin t duy nht: khng c m no l tin t cho mt m khc (tt c cc k hiu u l node l) r rng l ln i vi b gii m.
Nu vic thng k c th tin hnh c trc v vi chnh xc cao, th m Huffman l rt tt. Trong v d trn:Entropy=(15x1.38+7x2.48+ 6x2.7 + 6x2.7 + 5x2.96)/39 = 85.26 / 39 = 2.19. S bit cn thit cho m ha Huffman l : 87 / 39 = 2.23
2. M Huffman sa i. (a) Cc gii thut trn y yu cu kin thc v thng k l iu m kh c
th thc hin (v d m thanh, hnh nh sng..). (b) Ngay c khi nu iu l c th lm c th chi ph cho n kh nng,
c bit khi c nhiu bng phi c truyn m m hnh non-order() c s dng, ngha l vic a vo tnh tn s nh hng ca cc k hiu trc vi xc sut ca k hiu hin hnh (v d: qu thng i vi nhau,..). Gii php a ra l dng gii thut sa i cho thch hp. Nh v d, vic m ha Huffman sa i c kho st sau y vi tng l lm th no c th p dng vo cc gii thut nn thch hp khc.
B m ha Initialize_model(); while ((c = getc (input)) != eof) { encode(c, output); update_model(c); }
B gii m Initialize_model(); while ((c = decode (input)) != eof) { putc(c, output); update_model(c); }
-
Khoa CNTT HBKHN GVHD Thy:D Thanh Bnh
SVTH: Vn Tun Trang 41
Mu cht y l c hai b m ha v gii m u dng cng cc hm Initialize_model v update_model .
Hm update_model c hai lu : (a) Tng bin m. (b) Cp nht cy Huffman. - Trong sut qa trnh cp nht, cy Huffman s c duy tr tnh k tha, cc nodes (node trong v l) c sp xp theo th t tng dn ca trng lng . - Khi cn thit trao i (swapping), node xa nht vi trng lng W c trao i vi node m trng lng ca n tng ln 1 n v W+1. Lu : nu node trng lng W c cy con bn di n th cy con cng phi di cng vi n. Cy Huffman c th nhn rt khc so vi trc khi trao i, v d trong cy th 3 , node A c trao i v tr thnh node 5. By gi n c m ha chi bng 2 bit.
3. M ha s hc. M ha Huffman s dng mt s nguyn k cc bit cho mi k hiu, v th k khng bao gi nh hn 1. i khi, v d phi truyn mt hnh nh 1 bit, th khng th nn c. tng: gi s mu t l [X,Y] v P(X) = 2/3 P(Y) = 1/3.
Nu ta ch quan tm vi chiu di m ha l 2 thng ip, th ta c th nh x tt c thng ip c th c vo nhng on trong phm vi [0..1]
X YXX XY YX YY
m ha thng ip, ch dng va s bit cn thit cho mi on. Tng t, ta c th nh x tt c chiu di 3 thng ip vo cc on trong
[0..1].
Ni chung, s bit c xc nh bng kch thc ca on. V d: on u tin l 8/27, cn 2 bit 2/3 bit cho mi k t. on cui l 1/27, cn 5 bit.
Tm li, cn -[logp] bit biu din cho on c kch thc p. Vn t ra l lm th no xc nh c xc sut?
tng n gin l dng m phng: bt u bng vic n tn s ca mt k hiu. Cp nht tn s cho mi k hiu mi.
4. Gii thut Lempel-Ziv-Welch(LZW).
-
Khoa CNTT HBKHN GVHD Thy:D Thanh Bnh
SVTH: Vn Tun Trang 42
Gi s chng ta mun m ha cho mt cun t in Ting Anh 159,000 t. Nh vy mi t cn 18 bit m ha. Nhc: - Dng qa nhiu bit. - Ch lm vic cho k t ting Anh. Gii php: - Cn phi tm mt cch m ha cun t in cho thch hp.
- Cc phng php ban u c xut bi Ziv v Lempel vo nm 1978 v 1979. Terry Welch pht trin lc vo nm 1981 v tr thnh gii thut LZW.
Gii thut: w = NIL; while (read a character k) { if wk exists in the dictionary w = wk; else add wk to the dictionary; output the code for w; w = k; }
LZW nguyn gc s dng t in vi 4K mc t, 256 t u tin l m ASCII.
V d: chui k t l ^WED^WE^WEE^WEB^WET. w k output index symbol ------------------------------------------------------------------ NIL ^ ^ W ^ 256 ^W W E W 257 WE E D E 258 ED D ^ D 259 D^ ^ W ^W E 256 260 ^WE E ^ E 261 E^ ^ W ^W E ^WE E 260 262 ^WEE E ^ E^ W 261 263 E^W W E
-
Khoa CNTT HBKHN GVHD Thy:D Thanh Bnh
SVTH: Vn Tun Trang 43
WE B 257 264 WEB B ^ B 265 B^ ^ W ^W E ^WE T 260 266 ^WET T EOF T 19 k hiu nhp c gim xung 7 k t v 5 m. Mi m/k hiu s cn nhiu hn 8 bit, ta ly 9 bit. Thng thng, cng vic nn ch c bt u khi c mt s ln byte c c vo (v d >100). Gii thut gii nn LZW: read a character k; output k; w = k; while ( read a character k ) /* k could be a character or a code. */ { entry = dictionary entry for k; output entry; add w + entry[0] to dictionary; w = entry; }
III. CC GII THUT NN C TN THT. 1. Cc phng php nn m thanh n gin:
Cc phng php nn kho st trn khng hiu qu trong vic nn m thanh.
Sau y l cc phng php nn c tn tht: - Nn silence : d cc khong yn lng, ging nh m h run-length. - LPC (Linear Predictive Coding). - CELP (Code Excited Linear Predictor).
2. Nn m thanh dng m hnh m - tm l. a. H thng nghe v pht m ca con ngi.
Phm vi nghe c t 20 Hz n 20 kHz, nhy cm 2 - 5kHz. Phm vi pht m bnh thng t 500 Hz n 2 kHz.
b. Che tn s (Frequency masking) Ngng che (Threshold masking): sinh ra t hiu ng che, mi m vi mt tn s v mc to (dB) xc nh s c mt ngng che (xem hnh 4.3 v 4.4) c. Bng gii hn.
-
Khoa CNTT HBKHN GVHD Thy:D Thanh Bnh
SVTH: Vn Tun Trang 44
Thc o tn s ng b khng tng xng vi rng ca ng cong che.
Bng gii hn c rng l 100Hz i vi cc tn s che < 500Hz, v cng tng ln i vi cc tn s >500Hz.
nh ngha mt n v mi cho tn s l bark ( Barkhausen) 1 Bark = b rng ca bng gii hn: - Tn s 500Hz : 1 bark = 9 + 4log(freq/1000).
Ngng che trn thc o bng gii hn:
Hnh 5.3 d. Che nht thi (Temporal masking): che theo thi gian. Tai ngi cng c c tnh lu m. Nu c mt m thanh ln, ri ngng n li, mi mt lc sau ta mi c th nghe c mt m ln cn nh hn (xem hnh 4.5 v 4.6).
3. Nn m thanh MPEG. Vi thng s:
MPEG-1 : 1.5Mbits/s cho m thanh v hnh nh. Khong 1.2 Mbits cho hnh nh v 0.3Mbits/s cho m thanh. Am thanh CD khng nn dng: (44,100 mu/s * 16bit/mu * 2 knh) > 1.4
Mbits/s
Am thanh MPEG cung cp cc tn s ly mu l 32, 44.1 v 48 kHz. Gii thut:
-
Khoa CNTT HBKHN GVHD Thy:D Thanh Bnh
SVTH: Vn Tun Trang 45
1. Dng b lc thng chia tn hiu m thanh thnh cc sub-band theo tn s, tng ng vi 32 bng gii hn lc sub-band.
2. Xc nh s lng che ca mi band gy bi cc band ln cn bng cc kt qa bc 1 m hnh m - tm l.
3. Nu mc to ca mt bng m nh hn ngng che th khng m ha n. 4. Ngc li, xc nh s bit cn thit m ha sao cho nhiu sinh ra bi
vic lng t ha ny thp hn ng cong che. 5. nh dng dng d liu bit :
Hnh 5.4 V d:
Sau khi phn tch, 16 band u tin trong s 32 band nh sau: _________________________________________________________ Band 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Level(dB) 0 8 12 10 6 2 10 60 35 20 15 2 3 5 3 1 _________________________________________________________ Nu mc to ca m th 8 l 60dB, n s che band th 7 mc 12dB v
band th 9 mc 15dB. Mc to band 7 l 10dB ( 15dB) nn c tip tc x l.
Layer I: b lc loi DCT vi 1 frame v rng tn s nh nhau trn mi sub-band. M hnh m-tm l ch s dng hiu qu che tn s (Frequency masking).
Layer II: s dng 3 frame trong b lc (trc, hin ti v k tip, tng cng 1152 mu). M hnh m-tm l c s dng hiu qu che nht thi (Temporal masking).
Layer III: dng b lc bng gii hn tt hn, m hnh m-tm l c s dng hiu qu che nht thi, v c dng b m h Huffman.
-
Khoa CNTT HBKHN GVHD Thy:D Thanh Bnh
SVTH: Vn Tun Trang 46
Phn II THIT K CHNG TRNH
CHNG 6. LU GII THUT V CU TRC D LIU. I. S KHI.
Thay i hay gi nguyn cu hnh
Cu hnh mc nh Set_default()
t input v output file; M input file v kim tra;
Wave_open();
Open_bit_stream_w();
Memset();
L3_psycho_initialise(); L3_subband_initialise();
L3_mdct_initialise(); L3 l i i i li ()
Chun b vng m
Khi to m hnh m-tm l Tnh cc h s ca b lc tn s Khi to d liu tnh MDCT Khi to mng pow43[I].0
-
Khoa CNTT HBKHN GVHD Thy:D Thanh Bnh
SVTH: Vn Tun Trang 47
II. CU TRC D LIU V NH NGHA. A. Cu trc d liu. 1. Cc cu trc v file: - Tp tin tiu : - S dng : truy xut cc tp tin dng *.wav v *.mp3. Trong chng trnh, cc cu trc ny s dng cc giai on m file, c cu hnh file, truy xut cc thng tin v cu hnh file. a. Cu trc FILE WAVE :
typedef struct { FILE *file; int type; int channels; int bits; long samplerate; long total_samples; long length; } wave_t;
b. Cu trc FILE MPEG:
typedef struct { FILE *file;
-
Khoa CNTT HBKHN GVHD Thy:D Thanh Bnh
SVTH: Vn Tun Trang 48
int type; int layr; int mode; int bitr; int psyc; int emph; int padding; long samples_per_frame; long bits_per_frame; long bits_per_slot; long total_frames; int bitrate_index; int samplerate_index; int crc; int ext; int mode_ext; int copyright; int original; int mode_gr; } mpeg_t;
c. Cu trc config_t :
typedef struct { time_t start_time; char* infile; wave_t wave; char* outfile; mpeg_t mpeg; } config_t;
2. Cu trc dng bit d liu: bitstream_t - Tp tin tiu : - S dng: dng trong qu trnh c hoc ghi d liu t file ln vng m v ngc li. typedef struct bit_stream_struc { FILE *pt; /* con tr n file bit d liu */ unsigned char *buf; /* vng m cho dng bit d liu */ int buf_size; /* kch thc vng m tnh theo s byte */ long totbit; /* m bit */ int buf_byte_idx; /* ch byte trn cng trong vng m */ int buf_bit_idx; /* bit trn cng ca byte trn cng trong vng m */ int mode; /* m dng bit ch c hay ghi */ int eob; /* ch n cui vng m */ int eobs; /* u cui ca c dng bit */ char format; /* nh dng file ch c (BINARY/ASCII) */ } bitstream_t;
-
Khoa CNTT HBKHN GVHD Thy:D Thanh Bnh
SVTH: Vn Tun Trang 49
3. Cc cu trc nh dng dng bit d liu: - Tp tin tiu : a. Kiu s nguyn: typedef unsigned int uint32; /* nh ngha s nguyn khng du 32 bit */ typedef unsigned short uint16; /* nh ngha s nguyn khng du 16 bit */ b. Con tr hm (*BitsFcnPtr): y l mt nguyn mu hm con tr cn phi c ghi cc bit vo dng d liu. N ghi length bits t value bits, theo cch ghi msb-first. Cc bit trong value gi nh l right-justified. typedef void (*BitsFcnPtr)( uint32 value, uint16 length ); c. Cu trc BF_BitstreamElement: Mt BitstreamElement cha ng d liu m h s c ghi vo dng bit. length bit trong s value s c ghi vo dng bit theo msb-first.
typedef struct { uint32 value; uint16 length; } BF_BitstreamElement;
d. Cu trc BF_BitstreamPart: Mt BitstreamPart bao gm mt nhm cc nrEntries ca BitstreamElements. Mi BitstreamElement s c ghi vo dng bit theo th t m n xut hin trong dy 'element'. typedef struct { uint32 nrEntries; BF_BitstreamElement *element; } BF_BitstreamPart; e. Cu trc BF_FrameData Cu trc ny cha ng tt c nhng thng tin cn thit cho b nh dng dng bit m h mt frame d liu. Ta phi in y n v tr ti khi nh dng. typedef struct BF_FrameData { BitsFcnPtr putbits; /* your low-level bitstream function */ int frameLength;
-
Khoa CNTT HBKHN GVHD Thy:D Thanh Bnh
SVTH: Vn Tun Trang 50
int nGranules; int nChannels; BF_BitstreamPart *header; BF_BitstreamPart *frameSI; BF_BitstreamPart *channelSI[MAX_CHANNELS]; BF_BitstreamPart *spectrumSI[MAX_GRANULES][MAX_CHANNELS]; BF_BitstreamPart *scaleFactors[MAX_GRANULES][MAX_CHANNELS]; BF_BitstreamPart *codedData[MAX_GRANULES][MAX_CHANNELS]; BF_BitstreamPart *userSpectrum[MAX_GRANULES][MAX_CHANNELS]; BF_BitstreamPart *userFrameData; } BF_FrameData; f. Cc cu trc lin quan dn b nh dng: Cu trc ny cha ng thng tin c cung cp bi b nh dng dng bit. Ta c th s dng n kim tra v xem th b m ca ta c chp nhn cc kt qu ca vic gi b nh dng hay khng. typedef struct BF_FrameResults { int SILength; int mainDataLength; int nextBackPtr; } BF_FrameResults; typedef struct BF_PartHolder { int max_elements; BF_BitstreamPart *part; } BF_PartHolder; typedef struct { int frameLength; int SILength; int nGranules; int nChannels; BF_PartHolder *headerPH; BF_PartHolder *frameSIPH; BF_PartHolder *channelSIPH[MAX_CHANNELS]; BF_PartHolder *spectrumSIPH[MAX_GRANULES][MAX_CHANNELS]; } MYSideInfo; 4. Cu trc huffcodetab: - Tp tin tiu : - S dng : dng trong qu trnh m h d liu theo thut tn Huffman. struct huffcodetab {
-
Khoa CNTT HBKHN GVHD Thy:D Thanh Bnh
SVTH: Vn Tun Trang 51
unsigned int xlen; /*max. x-index+ */ unsigned int ylen; /*max. y-index+ */ unsigned int linbits; /*number of linbits */ unsigned int linmax; /*max number to be stored in linbits */ HUFFBITS *table; /*pointer to array[xlen][ylen] */ unsigned char *hlen; /*pointer to array[xlen][ylen] */ }; 5. Cc cu trc tnh MDCT. - Tp tin tiu : - S dng : trong tnh tn MDCT, nh dng dng bit, tnh tn m hnh tm l, m h d liu.. typedef struct { unsigned part2_3_length; unsigned big_values; unsigned count1; unsigned global_gain; unsigned scalefac_compress; unsigned window_switching_flag; unsigned block_type; unsigned mixed_block_flag; unsigned table_select[3]; int /* unsigned */ subblock_gain[3]; unsigned region0_count; unsigned region1_count; unsigned preflag; unsigned scalefac_scale; unsigned count1table_select; unsigned part2_length; unsigned sfb_lmax; unsigned sfb_smax; unsigned address1; unsigned address2; unsigned address3; double quantizerStepSize; /* added for LSF */ unsigned *sfb_partition_table; unsigned slen[4]; } gr_info; typedef struct { int main_data_begin; /* unsigned -> int */ unsigned private_bits; int resvDrain; unsigned scfsi[2][4]; struct {
-
Khoa CNTT HBKHN GVHD Thy:D Thanh Bnh
SVTH: Vn Tun Trang 52
struct { gr_info tt; } ch[2]; } gr[2]; } L3_side_info_t; typedef struct { double l[2][2][21]; double s[2][2][12][3]; } L3_psy_ratio_t; typedef struct { double l[2][2][21]; double s[2][2][12][3]; } L3_psy_xmin_t; typedef struct { int l[2][2][22]; /* [cb] */ int s[2][2][13][3]; /* [window][cb] */ } L3_scalefac_t; 6. Cu trc scalefac_struct: - Tp tin tiu : struct scalefac_struct { int l[23]; int s[14]; }; B. Cc nh ngha. 1. Cc nh ngha dng trong truy xut dng bit d liu: - Tp tin tiu : #define MINIMUM 4 /* Minimum size of the buffer in bytes */ #define MAX_LENGTH 32 /* Maximum length of word written or read from bit stream */ #define READ_MODE 0 #define WRITE_MODE 1 #define ALIGNING 8 #define BINARY 0 #define ASCII 1 #define TRUE 1 #define FALSE 0 #ifndef BS_FORMAT #define BS_FORMAT ASCII /* BINARY or ASCII = 2x bytes */
-
Khoa CNTT HBKHN GVHD Thy:D Thanh Bnh
SVTH: Vn Tun Trang 53
#endif #define BUFFER_SIZE 4096 #define MIN(A, B) ((A) < (B) ? (A) : (B)) #define MAX(A, B) ((A) > (B) ? (A) : (B)) 2. Cc nh ngha dng trong tnh tn FFT: - Tp tin tiu : #define BLKSIZE_S 256 #define LOGBLKSIZE_S 8 3. Cc nh ngha dng trong nh dng dng d liu: - Tp tin tiu : #define MAX_CHANNELS 2 #define MAX_GRANULES 2 4. Cc nh ngha dng trong b m h Huffman: - Tp tin tiu : #define HUFFBITS unsigned long int #define HTN 34 #define MXOFF 250 5. Cc nh ngha dng trong phn tch d liu : - Tp tin tiu : < L3loop.h> #define e 2.71828182845 #define CBLIMIT 21 #define SFB_LMAX 22 #define SFB_SMAX 13 #define PRECALC_SIZE 1024 /* WAS 256 !!! */ 6. Cc nh ngha dng trong m hnh m tm l: - Tp tin tiu : #define HBLKSIZE 513 #define CBANDS 63 #define CBANDS_s 42 #define BLKSIZE_s 256 #define HBLKSIZE_s 129 #define TCBMAX_l 63 #define TCBMAX_s 42 #define SBMAX_l 21 #define SBMAX_s 12 /* #define switch_pe 1800 */ #define NORM_TYPE 0 #define START_TYPE 1
-
Khoa CNTT HBKHN GVHD Thy:D Thanh Bnh
SVTH: Vn Tun Trang 54
#define SHORT_TYPE 2 #define STOP_TYPE 3 #define maximum(x,y) ( (x>y) ? x : y ) #define minimum(x,y) ( (x
-
Khoa CNTT HBKHN GVHD Thy:D Thanh Bnh
SVTH: Vn Tun Trang 55
I. LU
Thay i hay gi nguyn cu hnh
Cu hnh mc nh Set_default()
t input v output file; M input file v kim tra;
Wave_open();
Open_bit_stream_w();
Memset();
Config.mpeg.mode_gr=2; Config.mpeg.sample_per_frame=1152;
Chun b Frame d liu
L3_psycho_initialise(); L3_subband_initialise();
L3_mdct_initialise(); L3_loop_initialise();
Chun b vng m
Khi to m hnh m-tm l Tnh cc h s ca b lc tn s Khi to d liu tnh MDCT Khi to mng pow43[I].0
-
Khoa CNTT HBKHN GVHD Thy:D Thanh Bnh
SVTH: Vn Tun Trang 56
avg_slots_per_frame = ((double)config.mpeg.samples_per_frame / ((double)config.wave.samplerate / 1000))* ((double)config.mpeg.bitr / (double)config.mpeg.bits_per_slot) ; whole_slots_per_frame = (int) avg_slots_per_frame ; frac_slots_per_frame = avg_slots_per_frame - (double) whole_slots_per_frame ; slot_lag = - frac_slots_per_frame ;
config.mpeg.padding = 0
Update_stastus(frames_processed ++); L3_FlushBitstream( );
close_bit_stream_w( );
wave_close( ) ;
Kt thc
buffer_windows[0] = buffer[0]; buffer_windows[1] = buffer[1];
1
4
frac_slots_per_frame = 0
wave_get(buffer) < > 0
frac_slots_per_frame < > 0
S
S
S
-
Khoa CNTT HBKHN GVHD Thy:D Thanh Bnh
SVTH: Vn Tun Trang 57
-
Khoa CNTT HBKHN GVHD Thy:D Thanh Bnh
SVTH: Vn Tun Trang 58
L3_mdct_sub( );L3_iteration_loop( );
L3_format_bitstream( );
frame_bits = sstell(&bs) - sent_bits ;
S
3
(frame_bits) mod (config.mpeg.bits_per_slot) < > 0
gr = 0 ;
channel = 0
L3_psycho_analise( ) ;channel ++ ;
gr ++ ;
gr = 0 ;
channel = 0 ;
i = 0 ;L3_window_subband( );
L3_filter_subband( ); i ++ ;
i < 18
channel ++ ;
gr ++ ;
3
2
S
S
S
S
channel < config.wave.channels
gr < config.mpeg.mod_gr
channel < config.wave.channels
gr < config.mpeg.mod_gr
S
-
Khoa CNTT HBKHN GVHD Thy:D Thanh Bnh
SVTH: Vn Tun Trang 59
CHNG 7. GIAO DIN V THUYT MINH CHNG TRNH I. Gii thiu. Giao din l cng c tr gip c lc cho ngi s dng. Nhng phn mm c giao din tt lun c a chung. cng chnh l u im tuyt vi ca Windows. Lp trnh trong Windows h tr nhng cng c cho php ta to ra nhng giao din rt d dng v thn thin. Tuy nhin, thit k giao din cho ai cng c th s dng c v khng b nhm ln khng phi l chuyn d dng. N i hi ta phi c mt ci nhn bao qut, thm ch phi hiu su v gii thut ca chng trnh th mi c th loi tr nhng sai lm khi s dng. Lp trnh trong Windows l lp trnh theo tnh hung. Mi nt nhn, i thoi trn giao din u c th c truy cp ti bt k lc no m khng theo mt trnh t nht nh. Do ngi lp trnh cn phi d tr n mi tnh hung v cn phi a ra mt s ngh di dng nhng thng s nh sn cho ngi s dng theo m vn hnh. Ngi ra, giao din cn c phn tr gip hng dn cho ngi s dng bt k lc no. II. Giao din. Da trn s khi v lu gii thut. Giao din bao gm cc phn nh hnh v sau:
1. Input group.
Nhm cc thng tin cu hnh v lnh v tp tin ngun ( *.wav). Bao gm cc thng tin nh : bitrates, samplerates, mode, File path name..
2. Open button.
1 2 3
45 6 7 8
910 11
1213 14
-
Khoa CNTT HBKHN GVHD Thy:D Thanh Bnh
SVTH: Vn Tun Trang 60
M hp thoi File Open ca Windows chn file cn nn. Phn m rng mc nh l .wav 3. Text Edit box. Dng g file ngun bng tay. Mc nh l *.wav. 4. Bitrates. Cho bit ch s tc bit ca tp tin ngun .wav chn trn mc 2 hoc 3. Ch s mc nh l 128. Khng sa bng tay c. 5. Samplerates. Cho bit tn s ly mu ca tp tin ngun .wav chn trn mc 2 hoc 3. Tn s mc nh l 44100 Hz. Khng sa bng tay c. Cc tn s c th bao gm : 32000, 44100 v 48000 Hz. 6. Output. Nhm cc thng tin cu hnh v lnh v tp tin ch ( *.mp3). Bao gm cc thng tin nh : bitrates, samplerates, mode, File path name.. 7. Save button. M hp thoi File Save ca Windows ghi ng dn v tn file nn. Phn m rng mc nh l .mp3. 8. Text Edit box. Dng g ng dn tn tp tin ch bng tay. Mc nh l *.mp3. Khi chn c tp tin ngun trong phn 2 hoc 3 th trong ny s t ng xut hin ng dn v tn tp tin ch. 9. Bitrates. nh ch s tc bit ca tp tin ch chn trn mc 7 hoc 8. Ch s mc nh l 128. C th chn cc ch s khc trong ko xung, bao gm cc gi tr : 16, 32, 40, 48, 56, 64, 80, 96, 112, 128, 156, 160, 192, 224, 256, 320. 10. Samplerates. Cho bit tn s ly mu ca tp tin ch, ph thuc v bng vi tn s ly mu ca tp tin ngun. Tn s mc nh l 44100 Hz. Khng sa bng tay c. 11. Mode group. Nhm cc ch Stereo hay Mono. Mc nh l Stereo. 12. Progress bar. Thanh tin trnh, xut hin trong qu trnh nn t tp tin ngun .wav sang tp tin ch .mp3 . 13. Compress button. Nt nhn ny ch c th sau khi chn v nh cu hnh y cho cc tp tin ngun v ch. Ngha l ch c th nhn c nt ny sau khi nhn nt Update.
-
Khoa CNTT HBKHN GVHD Thy:D Thanh Bnh
SVTH: Vn Tun Trang 61
Khi nhn nt ny, qu trnh nn t tp tin ngun sang tp tin ch mi thc s bt u. ng thi thanh tin trnh mi bt u hot ng. Kt thc qu trnh nn s c thng ip bo cho bit hn tt cng vic 14. Update button. Phm ny c nhn sau khi chn cc tp tin ngun v ch cp nht cc thng s chun b cho qu trnh nn v kch hot phm Compress.
III. Chng trnh. Chng trnh c nn l hp thoi MP3 COMPRESSOR hin th cc phm nhn cho ngi s dng la chn v chy ng dng. Do , tt c cc hm chnh u c t trong lp CMp3Dlg. Sau y ta s ln lc kho st mt s hm quan trng. 1. OnInitDialog( ) :
Hm ny khi to mt s gi tr mc nh cho hp thoi, nhm gip cho ngi s dng c mt ci nhn tn cc v hiu c ngay ng dng, t c th chn la cc thng s thch hp cho ng dng. ng thi, cng ci t sn mt s gi tr ban u cho cc i tng c dng cho chng trnh. BOOL CMp3Dlg::OnInitDialog() { CDialog::OnInitDialog(); ... // Khi to gi tr ban u cho hp thoi m_stereo_in = 0; m_stereo_out = 0; m_file_in = "*.wav"; m_file_out = "*.mp3"; m_samplerates_in = "44100"; m_samplerates_out = "44100"; m_bitrates_in = "128"; m_bitrates_out.AddString("32"); m_bitrates_out.AddString("40"); m_bitrates_out.AddString("48"); m_bitrates_out.AddString("56"); m_bitrates_out.AddString("64"); m_bitrates_out.AddString("80"); m_bitrates_out.AddString("96"); m_bitrates_out.AddString("112"); m_bitrates_out.AddString("128"); m_bitrates_out.AddString("160"); m_bitrates_out.AddString("192"); m_bitrates_out.AddString("224"); m_bitrates_out.AddString("256"); m_bitrates_out.AddString("320"); m_bitrates_out.SetCurSel(8); UpdateData(FALSE);
-
Khoa CNTT HBKHN GVHD Thy:D Thanh Bnh
SVTH: Vn Tun Trang 62
bOpen = FALSE; bSave = FALSE; // Gn cc hng cho cc i tng config.mpeg.type = TYPE_MPEG_I; config.mpeg.layr = LAYR_III; config.mpeg.mode = MODE_STEREO; config.mpeg.bitr = 128; config.mpeg.psyc = PSYC_ATT; config.mpeg.emph = EMPH_NONE; config.mpeg.crc = 0; config.mpeg.ext = 0; config.mpeg.mode_ext = 0; config.mpeg.copyright = 0; config.mpeg.original = 0; GetDlgItem(IDC_COMPRESS)->EnableWindow(FALSE); m_pbar.SetRange(0, 10000); ... return TRUE; // return TRUE unless you set the focus to a control }
2. OnFileOpen( ) : Hm m hp thoi Open ca Windows chn file ngun c phn m rng mc nh l .wav, gn cho bin m_file_in ng dn v tn file chn. ng thi cng to ng dn v tn file mc nh cho tp tin ch c phn m rng .mp3 v gn cho bin m_file_out. void CMp3Dlg::OnFileOpen() { // M hp thoi File Open ca Windows bng hm thnh vin dlgOpen ca // lp CFileDialog trong th vin MFC. CFileDialog dlgOpen(TRUE, "wav", "*.wav"); if (dlgOpen.DoModal() == IDOK) { m_file_in = dlgOpen.GetPathName(); // gn ng dn file ngun // cho i tng m_file_in int len; str1 = m_file_in; len = str1.GetLength(); str2 = str1.Left(len - 3); str2 += "mp3"; m_file_out = str2; // gn ng dn file ch // cho i tng m_file_out bOpen = TRUE; UpdateData(FALSE); } }
3. OnFileWrite( ) :
-
Khoa CNTT HBKHN GVHD Thy:D Thanh Bnh
SVTH: Vn Tun Trang 63
Hm m hp thoi Save ca Windows chn ng dn v tn tp tin ch trong trng hp khng mun ng dn v tn file mc nh do hm OnFileOpen( ) to ra, v gn n cho bin m_file_out. void CMp3Dlg::OnFileWrite() { CFileDialog dlgWrite(FALSE, "mp3", str2); if (dlgWrite.DoModal() == IDOK) { m_file_out = dlgWrite.GetPathName(); // gn ng dn file ch // cho i tng m_file_out UpdateData(FALSE); bSave = TRUE; } }
4. OnUpdate( ) : Hm cp nht tt c cc thng s chn trn hp thoi, a vo cc i tng c dng trong chng trnh. ng thi kch hot phm nhn COMPRESS cho php phm ny c th bt u c s dng. Nu cc thng s nhp khng hp l s cho hin ra cc thng bo nhp li. void CMp3Dlg::OnUpdate( ) {
UpdateData(TRUE); if (!m_file_in.Compare("*.wav")) MessageBox("Enter the Input file, please!"); else if (!m_file_out.Compare("*.mp3")) { int len; str1 = m_file_in; len = str1.GetLength(); str2 = str1.Left(len - 3); str2 += "mp3"; m_file_out = str2; } config.infile = m_file_in.GetBuffer(5); // Chuyn giao con tr ch // n file ngun if (!wave_open()) { MessageBox("Unable to open input file..."); bWaveOpen = FALSE; } else bWaveOpen = TRUE; // Gn gi tr cu hnh bitrates cho bin config.mpeg.bitr tu theo gi tr // chn trn hp thoi. if (m_bitrates_out.GetCurSel()==0) config.mpeg.bitr = 32; if (m_bitrates_out.GetCurSel()==1) config.mpeg.bitr = 40; if (m_bitrates_out.GetCurSel()==2) config.mpeg.bitr = 48; if (m_bitrates_out.GetCurSel()==3) config.mpeg.bitr = 56; if (m_bitrates_out.GetCurSel()==4) config.mpeg.bitr = 64;
-
Khoa CNTT HBKHN GVHD Thy:D Thanh Bnh
SVTH: Vn Tun Trang 64
if (m_bitrates_out.GetCurSel()==5) config.mpeg.bitr = 80; if (m_bitrates_out.GetCurSel()==6) config.mpeg.bitr = 96; if (m_bitrates_out.GetCurSel()==7) config.mpeg.bitr = 112; if (m_bitrates_out.GetCurSel()==8) config.mpeg.bitr = 128; if (m_bitrates_out.GetCurSel()==9) config .mpeg.bitr= 160; if (m_bitrates_out.GetCurSel()==10) config.mpeg.bitr = 192; if (m_bitrates_out.GetCurSel()==11) config.mpeg.bitr = 224; if (m_bitrates_out.GetCurSel()==12) config.mpeg.bitr = 256; if (m_bitrates_out.GetCurSel()==13) config.mpeg.bitr = 320; config.mpeg.bitrate_index = find_bitrate_index(config.mpeg.bitr); bOpen = FALSE; bSave = FALSE; // Hm GetDlgItem(IDC_ ) cho php phm nhn c IDC_ lm thng s c th // hot ng c if (bWaveOpen) GetDlgItem(IDC_COMPRESS)->EnableWindow(); UpdateData(FALSE); }
5. OnCompress( ) : Khi gi hm ny, qu trnh nn t tp tin ngun .wav sang tp tin ch .mp3 s bt u thc hin. Kt thc qu trnh nn s c hp thoi xut hin thng bo hn tt. void CMp3Dlg::OnCompress() { CCompressDlg compDlg; config.outfile = m_file_out.GetBuffer(5); L3_compress(); wave_close(); compDlg.DoModal(); // Cho hin th hp thoi thng bo // cng vic nn hn tt m_pbar.SetPos(0); // Tr trng thi thanh tin trnh v v tr u GetDlgItem(IDC_COMPRESS)->EnableWindow(FALSE); }
6. Wave_open( ) : Hm m file ngun v kim tra xem nh dng file c hp l khng, nu khng th s hin thng bo v chn li file khc. bool CMp3Dlg::wave_open() { static char *channel_mappings[] = {NULL,"mono","stereo"}; unsigned short wFormatTag; unsigned long dAvgBytesPerSec; unsigned short wBlockAlign; long filesize; long header_size; if((config.wave.file = fopen(config.infile,"rb")) == NULL) {
-
Khoa CNTT HBKHN GVHD Thy:D Thanh Bnh
SVTH: Vn Tun Trang 65
MessageBox("Unable to open file"); return false; } if(!checkString(config.wave.file,"RIFF")) { MessageBox("Input not a MS-RIFF file"); return false; } filesize = Read32BitsLowHigh(config.wave.file); // complete wave chunk size if(!checkString(config.wave.file,"WAVE")) { MessageBox("Input not WAVE audio"); return false; } /* WAVE FMT format chunk */ if(!checkString(config.wave.file,"fmt ")) { MessageBox("Can't find format ch