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
pInputProcessParameters の要素数です。 - pInputProcessParameters
XAPO_PROCESS_BUFFER_PARAMETERS 構造体の入力配列です。 - OutputProcessParameterCount
pOutputProcessParameters の要素数です。 - pOutputProcessParameters
XAPO_PROCESS_BUFFER_PARAMETERS 構造体の出力配列です。 - 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 宣言