IXAPOParameters
COM公式ドキュメント
XAPO がエフェクト固有のパラメーターを使用できるようにするオプションのインターフェイスです。
解説(Remarks)
メソッド 2
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
エフェクト固有のパラメーターを設定します。
| pParameters | void* | in | エフェクト固有のパラメーターブロックです。 |
| ParameterByteSize | DWORD | in | pParameters のサイズ(バイト単位)です。 |
解説(Remarks)
pParameters のデータは完全にエフェクト固有であり、IXAPOParameters::SetParameters 関数の実装によって決定されます。SetParameters に渡されるデータは、XAPO の状態を設定したり、IXAPO::Process 関数の動作を制御したりするために使用できます。
SetParameters はリアルタイムオーディオ処理スレッド上でのみ呼び出すことができ、SetParameters と IXAPO::Process メソッドとの間の同期は不要です。ただし、IXAudio2Voice::SetEffectParameters メソッドは、パラメーターのコピーを(非同期に)リアルタイムスレッド上の SetParameters に渡すために必要な同期を追加するため、任意のスレッドから呼び出すことができます。IXAudio2Voice::SetEffectParameters と IXAPO::Process メソッドとの間の同期は不要です。
プラットフォーム要件
Windows 10 (XAudio2.9)、Windows 8、Windows Phone 8 (XAudio 2.8)、DirectX SDK (XAudio 2.7)エフェクト固有のパラメーターの現在の値を取得します。
| pParameters | void* | out | エフェクト固有のパラメーターブロックを受け取ります。 |
| ParameterByteSize | DWORD | in | pParameters のサイズ(バイト単位)です。 |
解説(Remarks)
pParameters のデータは完全にエフェクト固有であり、IXAPOParameters::GetParameters 関数の実装によって決定されます。pParameters で返されるデータは、XAPO の現在の状態に関する情報を提供するために使用できます。
SetParameters とは異なり、XAudio2 はこのメソッドをリアルタイムオーディオ処理スレッド上では呼び出しません。したがって、XAPO は IXAPOParameters::SetParameters や IXAPO::Process と共有する変数を、適切な同期を用いて保護する必要があります。CXAPOParametersBase クラスは IXAPOParameters の実装であり、その GetParameters の実装は、この同期をユーザーに代わって効率的に処理します。
XAudio2 は、このメソッドを IXAudio2Voice::GetEffectParameters メソッドから呼び出します。
このメソッドはブロックする可能性があるため、リアルタイムオーディオ処理スレッドからは決して呼び出さず、代わりに CXAPOParametersBase::BeginProcess から現在のパラメーターを取得してください。
プラットフォーム要件
Windows 10 (XAudio2.9)、Windows 8、Windows Phone 8 (XAudio 2.8)、DirectX SDK (XAudio 2.7)Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IXAPOParameters "{26D95C66-80F2-499A-AD54-5AE7F01C6D98}"
#usecom global IXAPOParameters IID_IXAPOParameters "{}"
#comfunc global IXAPOParameters_SetParameters 3 sptr,int
#comfunc global IXAPOParameters_GetParameters 4 sptr,int
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。