IXAPO::Process メソッド
特定の入力バッファーおよび出力バッファーで XAPO のデジタル シグナル処理 (DSP) コードを実行します。
構文
virtual void Process( UINT32 InputProcessParameterCount, const XAPO_PROCESS_BUFFER_PARAMETERS *pInputProcessParameters, UINT32 OutputProcessParameterCount, XAPO_PROCESS_BUFFER_PARAMETERS *pOutputProcessParameters, BOOL IsEnabled) = 0
パラメーター
InputProcessParameterCount
[in] pInputProcessParameters の要素数です。注意
XAudio2 は、現在は 1 つの入力ストリームと 1 つの出力ストリームのみをサポートしています。
pInputProcessParameters
[in] XAPO_PROCESS_BUFFER_PARAMETERS 構造体の入力配列です。OutputProcessParameterCount
[in] pOutputProcessParameters の要素数です。注意
XAudio2 は、現在は 1 つの入力ストリームと 1 つの出力ストリームのみをサポートしています。
pOutputProcessParameters
[in, out] 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 オーディオ データはインターリーブされ、各チャンネルのデータは特定のサンプル番号に対して隣接することに注意してください。たとえば、XAudio2 ソース ボイスに再生される 4 チャンネルの Wave がある場合、オーディオ データはチャンネル 0 のサンプル、チャンネル 1 のサンプル、チャンネル 2 のサンプル、チャンネル 3 のサンプルになり、その次からは同様にチャンネル 0、1、2、3 の各サンプルとなります。
要件
ヘッダー: XAPO.h で宣言されています。