freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

wav文件處理-資料下載頁(yè)

2025-08-27 20:37本頁(yè)面

【導(dǎo)讀】的親合力;另外在科研開(kāi)發(fā)過(guò)程中,聲音信號(hào)的處理也是一個(gè)很重要的科學(xué)研究領(lǐng)域。開(kāi)發(fā)過(guò)程中積累的一些經(jīng)驗(yàn),在本實(shí)例中來(lái)和廣大編程愛(ài)好者們探討一下聲音文件的處理,領(lǐng)域的朋友們起到一個(gè)引路的作用,幫助他們盡快進(jìn)入聲音處理的更深?yuàn)W空間。下面就開(kāi)始介紹聲音文件的格式和在Windows環(huán)境下使用VisualC++開(kāi)發(fā)工具進(jìn)行。Audio),由于其擴(kuò)展名為"*.wav",因而該類文件也被稱為WAVE文件。為了突出重點(diǎn),有的。常見(jiàn)的WAVE語(yǔ)音文件主要有兩種,分。這里的采樣率是指聲音信號(hào)在進(jìn)行"?!鷶?shù)"轉(zhuǎn)換過(guò)程中單位時(shí)間內(nèi)采樣的次數(shù)。采樣值是指每一次采樣周期內(nèi)聲音模擬信號(hào)的積分值。對(duì)于單聲道聲音文件,采樣數(shù)據(jù)為八。16位的整數(shù),高八位和低八位分別代表左右兩個(gè)聲道。WAVE文件數(shù)據(jù)塊包含以脈沖。編碼調(diào)制格式表示的樣本。wFormatTag成員指定的格式種類,在多聲道WAVE文件中,樣本是交替出現(xiàn)的。據(jù)處理算法,進(jìn)行相應(yīng)的數(shù)學(xué)運(yùn)算,然后將結(jié)果重新存儲(chǔ)與WAVE格式的文件中去。

  

【正文】 switch (dwType) { case mmioFOURCC(39。f39。, 39。m39。, 39。t39。, 39。 39。)://如果為 fmt標(biāo)志; if (!m_pFormat)//獲取 LPWAVEFORMATEX結(jié)構(gòu)數(shù)據(jù); { if (dwLength sizeof (WAVEFORMAT)) return 。 m_pFormat = (LPWAVEFORMATEX) pdw。 } break。 case mmioFOURCC(39。d39。, 39。a39。, 39。t39。, 39。a39。)://如果為 data標(biāo)志; if (!m_pData || !m_dwSize) { m_pData = (LPBYTE) pdw。//得到指向聲音數(shù)據(jù)塊的指針; m_dwSize = dwLength。//獲取聲音數(shù)據(jù)塊的長(zhǎng)度; if (m_pFormat) m_bend=TRUE。 } break。 } pdw = (DWORD *)((BYTE *) pdw + ((dwLength + 1)amp。~1))。//修改 pdw指針,繼續(xù)循環(huán); } DSBUFFERDESC BufferDesc。//定義 DSUBUFFERDESC結(jié)構(gòu)對(duì)象; memset (amp。BufferDesc, 0, sizeof (BufferDesc))。 = (LPWAVEFORMATEX)m_pFormat。 = sizeof (DSBUFFERDESC)。 = m_dwSize。 = 0。 HRESULT hRes。 LPDIRECTSOUND m_lpDirectSound。 hRes = ::DirectSoundCreate(0, amp。m_lpDirectSound, 0)。//創(chuàng)建 DirectSound對(duì)象; if( hRes != DS_OK ) return。 m_lpDirectSoundSetCooperativeLevel(thisGetSafeHwnd(), DSSCL_NORMAL)。 //設(shè)置聲音設(shè)備優(yōu)先級(jí)別為 NORMAL; //創(chuàng)建聲音數(shù)據(jù)緩沖; LPDIRECTSOUNDBUFFER m_pDSoundBuffer。 if (m_lpDirectSoundCreateSoundBuffer (amp。BufferDesc, amp。m_pDSoundBuffer, 0) == DS_OK) //載入聲音數(shù)據(jù),這里使用兩個(gè)指針 lpPtr1,lpPtr2來(lái)指向 DirectSoundBuffer 緩沖區(qū)的數(shù)據(jù),這是為了處理大型 WAVE 文件而設(shè)計(jì)的。 dwLen1,dwLen2 分別對(duì)應(yīng)這兩個(gè)指針?biāo)赶虻木彌_區(qū)的長(zhǎng)度。 hResult=m_pDSoundBufferLock(0,m_dwSize,amp。lpPtr1,amp。dwLen1,amp。lpPtr2,amp。dwLen2,0)。 if (hResult == DS_OK) { memcpy (lpPtr1, m_pData, dwLen1)。 if(dwLen20) { BYTE *m_pData1=(BYTE*)m_pData+dwLen1。 m_pData=(void *)m_pData1。 memcpy(lpPtr2,m_pData, dwLen2)。 } m_pDSoundBufferUnlock (lpPtr1, dwLen1, lpPtr2, dwLen2)。 } DWORD dwFlags = 0。 m_pDSoundBufferPlay (0, 0, dwFlags)。 //播放 WAVE聲音數(shù)據(jù); } 四、小結(jié) 為了更好的說(shuō)明 DiretSound編程的實(shí)現(xiàn),筆者使用了一個(gè)函數(shù)來(lái)實(shí)現(xiàn)所有的操作,當(dāng)然讀者可以將上面的內(nèi)容包裝到一個(gè)類中,從而更好的實(shí)現(xiàn)程序的封裝性,至于如何實(shí)現(xiàn)就不需要筆者多說(shuō)了,真不明白的話,找本 C++的書(shū)看看(呵呵)。如果定義了類,那么就可以一次聲明多個(gè)對(duì)象來(lái)實(shí)現(xiàn)多個(gè) WAVE聲音文件的混合播放。也許細(xì)心的讀者朋友會(huì)發(fā)現(xiàn),在介紹 WAVE文件格式的時(shí)候我們介紹了 PCMWAVEFORMAT結(jié)構(gòu),但是在代碼的實(shí)現(xiàn)讀取 WAVE文件數(shù)據(jù)部分,我們使用的 卻是 LPWAVEFORMATEX 結(jié)構(gòu),那末是不是我們有錯(cuò)誤呢?其實(shí)沒(méi)有錯(cuò),對(duì)于 PCM 格式的 WAVE 文件來(lái)說(shuō),這兩個(gè)結(jié)構(gòu)是完全一樣的,使用 LPWAVEFORMATEX結(jié)構(gòu)不過(guò)是為了方便設(shè)置 DSBUFFERDESC對(duì)象罷了。 操作 WAVE聲音文件的方法很多,靈活的運(yùn)用它們可以靈活地操作 WAVE文件,這些函數(shù)的詳細(xì)用途讀者可以參考 MSDN。本實(shí)例只是對(duì) WAVE文件的操作作了一個(gè)膚淺的介紹,希望可以對(duì)讀者朋友起到拋磚引玉的作用 .
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1