Xu Li Tin Hieu Amthanh Hinhanh

71
z Luận văn Mã hóa tín hiệu số âm thanh

description

d

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