www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 消費電子 > 消費電子
[導讀] 最近用libmad做了些mp3解碼的工作,順便也研究了一下windows下播放PCM音頻數(shù)據(jù)的雙緩沖用法。 libmad的調(diào)用在此暫略過不表。 libmad解碼出來的是16bit的PCM數(shù)據(jù),調(diào)用windows API可對其實現(xiàn)播放。不過

  最近用libmad做了些mp3解碼的工作,順便也研究了一下windows下播放PCM音頻數(shù)據(jù)的雙緩沖用法。

       libmad的調(diào)用在此暫略過不表。

       libmad解碼出來的是16bit的PCM數(shù)據(jù),調(diào)用windows API可對其實現(xiàn)播放。不過如果解碼一段播放一段,聽起來會有一頓一頓的感覺,不流暢,究其原因,是沒有使用雙緩沖。

       吭哧吭哧研究了半天,終于編碼實現(xiàn),播放出來的效果倒也很流暢。

       流程如下:

       1)聲明兩個WAVEHDR結(jié)構waveHeader1,waveHeader2,并分別對其lpData參數(shù)分配緩沖buf1,buf2;

       2)聲明WAVEFORMATEX結(jié)構waveFormat,以及HWAVEOUT結(jié)構hWaveOut。調(diào)用函數(shù)
  waveOutOpen( &hWaveOut, WAVE_MAPPER, &waveFormat, (DWORD)waveOutProc, NULL, CALLBACK_FUNCTION );
  waveOutProc為回調(diào)函數(shù),在后面會提到。

       也說一下waveFormat的各參數(shù)。根據(jù)MSDN解釋,nChannels為通道數(shù),nSamplesPerSec為采樣率, wFormatTag的值為WAVE_FORMAT_PCM,wBitsPerSample為16,nBlockAlign為 nChannels*wBitsPerSample/8,nAvgBytesPerSec為nSamplesPerSec*nBlockAlign;

       3)讀入buf1,buf2,并設置好相應長度;

       4)將waveHeader1,waveHeader2寫入wave設備:
  waveOutPrepareHeader( hWaveOut, &waveHeader1, sizeof(WAVEHDR));
  waveOutPrepareHeader( hWaveOut, &waveHeader2, sizeof(WAVEHDR));

  waveOutWrite( hWaveOut, &waveHeader1, sizeof(WAVEHDR) );
  waveOutWrite( hWaveOut, &waveHeader2, sizeof(WAVEHDR) );

       5)關于回調(diào)
    void CALLBACK  waveOutProc( HWAVEOUT hwo,    
                   UINT uMsg,       
                   DWORD dwInstance,
                   DWORD dwParam1,  
                   DWORD dwParam2     )
    {
        if(uMsg == WOM_DONE)
       {
        LPWAVEHDR pWaveHeader = (LPWAVEHDR)dwParam1;//系統(tǒng)自動識別是哪一個WAVEHDR播放完畢

        waveOutUnprepareHeader( hwo, pWaveHeader, sizeof(WAVEHDR) );//播放完后須調(diào)用此函數(shù)

        //此處填充WAVEHDR的lpdate緩沖

        waveOutPrepareHeader( hwo, pWaveHeader, sizeof(WAVEHDR));
        waveOutWrite( hwo, pWaveHeader, sizeof(WAVEHDR) );

        //...
       }
       return ;
    }

       6)播放完畢后,調(diào)用waveOutClose,釋放緩沖。其他的一些waveOut函數(shù),如waveOutPause、 waveOutReset等等,在做播放器的時候會用得到。若播放過程中終止,須先調(diào)用waveOutReset,再調(diào)用waveOutClose。

       本文為Windows Embedded征文比賽獲獎文章。

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

近日,一個存在于Windows Mark of the Web (MotW)中的零日漏洞被發(fā)現(xiàn),并正在被攻擊者積極利用。但有趣的是,在微軟官方還沒有對該漏洞做出修復之前,第三方平臺0patch就提供了該漏洞的修復補丁。據(jù)...

關鍵字: PATCH Windows 微軟 APP

洛杉磯2022年10月17日 /美通社/ -- 衛(wèi)澎資本(WestPark Capital),一家提供全方位服務的投資銀行和證券經(jīng)紀交易商,今天宣布完成Mobile Global Esports(NASDAQ:...

關鍵字: GLOBAL MOBILE SPORT API

(全球TMT2022年9月22日訊)Granite River Labs(簡稱"GRL")日前宣布,其位于中國東莞的實驗室已獲英特爾公司(Intel? Corporation)授權,可為Windows系統(tǒng)平臺開展Thu...

關鍵字: Windows THUNDERBOLT ST OS

GRL東莞實驗室將與上海和臺北實驗室一同,提供Windows Host認證服務 加利福尼亞州圣克拉拉市2022年9月22日 /美通社/ -- 高速信號和充電技術測...

關鍵字: Windows THUNDERBOLT USB OS

加利福尼亞州庫比蒂諾2022年9月15日 /美通社/ -- 全球領先的漫游和網(wǎng)絡服務、安全、風險管理、測試和服務保證以及用戶智能分析解決方案提供商Mobileum Inc.(...

關鍵字: MOBILE GARTNER PI BSP

(全球TMT2022年9月16日訊)思享無限公布截至2022年6月30日的2022年第二季度暨上半年財務業(yè)績。2022年第二季度,營收同比增長28.8%,從2021年同期的3.932億元人民幣增至5.065億元人民幣(...

關鍵字: ST GARTNER MOBILE OS

(全球TMT2022年9月8日訊)愛立信攜手谷歌成功展示靈活性更高的網(wǎng)絡切片技術,推動網(wǎng)絡切片發(fā)展。愛立信在與谷歌最近的一次合作中,與生態(tài)系統(tǒng)合作伙伴成功展示了愛立信網(wǎng)絡基礎設施可支持單臺Android 13設備上的多...

關鍵字: 摩托羅拉 愛立信 音頻 網(wǎng)絡切片

(全球TMT2022年9月8日訊)SGW Global和Motorola Mobility LLC宣布簽署一項多年期擴展交易,授予SGW Global在全球范圍內(nèi)開發(fā)和銷售摩托羅拉品牌家庭音頻產(chǎn)品的獨家權利。...

關鍵字: 摩托羅拉 音頻 GLOBAL LLC

(全球TMT2022年9月2日訊)音頻、視頻和協(xié)作解決方案企業(yè)Jabra宣布與富士膠片商業(yè)創(chuàng)新(原富士施樂)合作,為亞太區(qū)客戶提供基于Jabra Evolve2 系列專業(yè)辦公耳麥及Speak系列全向麥的統(tǒng)一通訊解決方案...

關鍵字: 富士 通訊 音頻 EV

合作旨在促進亞太區(qū)企業(yè)無縫統(tǒng)一通訊 上海2022年9月2日 /美通社/ -- 音頻、視頻和協(xié)作解決方案領軍企業(yè) Jabra 今日宣布與富士膠片商業(yè)創(chuàng)新(原富士施樂)合作,為亞太區(qū)客戶提供基于Jabra Evolve2...

關鍵字: 富士 數(shù)字化 通訊 音頻

消費電子

95875 篇文章

關注

發(fā)布文章

編輯精選

技術子站

關閉