IXAPO::P rocess 方法 (xapo.h)
在指定的輸入和輸出緩衝區上執行 XAPO 的數位訊號處理 (DSP) 程式碼。
語法
void Process(
[in] UINT32 InputProcessParameterCount,
[in] const XAPO_PROCESS_BUFFER_PARAMETERS *pInputProcessParameters,
[in] UINT32 OutputProcessParameterCount,
[in, out] XAPO_PROCESS_BUFFER_PARAMETERS *pOutputProcessParameters,
BOOL IsEnabled
);
參數
[in] InputProcessParameterCount
pInputProcessParameters 中的專案數目。
[in] pInputProcessParameters
XAPO_PROCESS_BUFFER_PARAMETERS結構的輸入陣列。
[in] OutputProcessParameterCount
pOutputProcessParameters中的專案數目。
[in, out] pOutputProcessParameters
XAPO_PROCESS_BUFFER_PARAMETERS結構的輸出陣列。 在輸入時, XAPO_PROCESS_BUFFER_PARAMETERS的值。 ValidFrameCount 指出 XAPO 應該寫入輸出緩衝區的畫面數。 輸出時, XAPO_PROCESS_BUFFER_PARAMETERS的值。 ValidFrameCount 表示寫入的實際畫面數。
IsEnabled
TRUE 表示正常處理;FALSE 可透過處理。 如需詳細資訊,請參閱。
傳回值
無
備註
此函式的實作不應該封鎖,因為函式是從即時音訊處理執行緒呼叫。
可能導致延遲的所有程式碼,例如格式驗證和記憶體配置,都應該放在 IXAPO::LockForProcess 方法中,這不會從即時音訊處理執行緒呼叫。
就地處理而言, pInputProcessParameters 參數不一定與 pOutputProcessParameters相同。 相反地,其 pBuffer 成員會指向相同的記憶體。
雖然輸入緩衝區計數必須等於輸出緩衝區計數,但多個輸入和輸出緩衝區可能會與就地 XAPO 搭配使用。 若要在使用多個輸入和輸出緩衝區時就地處理,XAPO 可能會假設輸入緩衝區的數目等於輸出緩衝區的數目。
除了適當地寫入輸出緩衝區之外,XAPO 還負責設定輸出資料流程的緩衝區旗標和有效的畫面計數。
當 IsEnabled 為 FALSE 時,XAPO 不應該將其正常處理套用至指定的輸入/輸出緩衝區。 它應該改為將資料從輸入傳遞至輸出,並盡可能進行少量修改。 執行格式轉換的效果應該會繼續執行。 效果必須確保一般與處理之間的轉換不會造成訊號的不連續。
撰寫 Process 方法時,請務必注意 XAudio2 音訊資料交錯,這表示來自每個通道的資料會與特定樣本編號相鄰。 例如,如果有 4 個通道的波浪播放到 XAudio2 來源語音,音訊資料會是通道 0 的範例、通道 1 的範例、通道 2 的範例、通道 3 的樣本,然後是通道 0、1、2、3 等的下一個通道範例。
平臺需求
Windows 10 (XAudio2.9) ;Windows 8,Windows Phone 8 (XAudio 2.8) ;DirectX SDK (XAudio 2.7)規格需求
目標平台 | Windows |
標頭 | xapo.h |