程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> 波形捕捉:(8)使用“捕捉緩沖區”

波形捕捉:(8)使用“捕捉緩沖區”

編輯:關於C++

捕捉一個聲音包括以下步驟:

1.通過調用IDirectSoundCaptureBuffer8::Start方法啟動緩沖區。正規來說 ,你應該設置DSCBSTART_LOOPING 作為dwFlags參數,這樣這個緩沖區將持續運 行而不是當到達緩沖區末尾後就停止。從輸入設備上獲取的音頻數據從緩沖區起 始處開始填充。

2.等待直到達到期望的數據量。一個決定什麼時候捕捉指針到達特定的位置 辦法,參見《波形捕捉:(6)“捕捉緩沖區”通知》。

3.當達到足夠的數據量時,通過調用IDirectSoundCaptureBuffer8::Lock方 法鎖定一部分捕捉緩沖區。

為了確保你試圖鎖定的內存區域不是那些將被用於捕捉的區域,你可以首先 通過調用IDirectSoundCaptureBuffer8::GetCurrentPosition方法得到讀指針的 位置。

你把將要讀取的內存塊的大小和偏移量作為參數傳給Lock方法。這個方法返 回一個指向這個內存塊起始地址的指針和這一塊的大小。如果這塊區域從緩沖區 末尾環繞到起始處,那麼將會返回兩個指針,第一個指針用於這塊區域的每一個 部分。如果鎖定的內存區域沒有環繞則第二個指針為NULL。

4.使用由Lock方法返回的地址和塊大小,從緩沖區中復制數據。

5.使用IDirectSoundCaptureBuffer8::Unlock方法對緩沖區解鎖。

6.重復2~5步,直到你准備停止捕捉數據。然後調用 IDirectSoundCaptureBuffer8::Stop方法。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved