waveInClose 異常 |
尚未結案
|
dadai
一般會員 發表:29 回覆:31 積分:12 註冊:2009-01-17 發送簡訊給我 |
小弟試著從麥克風擷取聲音
接收的部份一切正常 本來以為一且都是那麼的美好 但限量....喔,是現實是殘酷的 有一定的機率會出現無法正常關閉麥克風裝置 在這個情況下 也無法再開啟麥克風了 除非把程式關掉重開....Orz 小弟試著瞭解發生什麼原因 每次呼叫 waveInClose 失敗的時候 error code 都是 WAVERR_STILLPLAYING 在這個情況下 WAVEHDR 的 dwFlags 的值是 18 也就是說 WHDR_INQUEUE 被設起來 (可正常關閉時 dwFlags 的值是 1) 有試著在網路上找了一些資料 可是結果依然悲劇 不知道各位前輩們是否有遇過這個問題 可以提供一些建議嗎 |
dadai
一般會員 發表:29 回覆:31 積分:12 註冊:2009-01-17 發送簡訊給我 |
自問自答一下
看到 MSDN 這個網頁最下方的文字 (為什麼藏的這麼下面阿 Orz) http://msdn.microsoft.com/en-us/library/aa908147.aspx 5. To finish capture: waveInReset()Wait for WIM_DATA notification of all queued buffers. waveInUnprepareHeader() waveInClose() 我把 code 改成如下的方式,目前看起來就正常了 [code cpp] case WIM_DATA: { LPWAVEHDR pWaveHdr = (LPWAVEHDR)dwParam1; waveInUnprepareHeader( hWaveIn, pWaveHdr, sizeof(WAVEHDR);) if( pWaveHdr->dwBytesRecorded == 0 ) // 加了這個判斷在這邊 return; /* 聲音處理... */ waveInPrepareHeader(...); waveInAddBuffer(...); } break; [/code] |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |