Win32 API 日本語リファレンス
ホームMedia.Audio.XAudio2 › IXAPOParameters

IXAPOParameters

COM
IID26d95c66-80f2-499a-ad54-5ae7f01c6d98継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

XAPO がエフェクト固有のパラメーターを使用できるようにするオプションのインターフェイスです。

解説(Remarks)

プラットフォーム要件

Windows 10 (XAudio2.9)、Windows 8、Windows Phone 8 (XAudio 2.8)、DirectX SDK (XAudio 2.7)

メソッド 2

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 void SetParameters(void* pParameters, DWORD ParameterByteSize)

エフェクト固有のパラメーターを設定します。

pParametersvoid*inエフェクト固有のパラメーターブロックです。
ParameterByteSizeDWORDinpParameters のサイズ(バイト単位)です。

解説(Remarks)

pParameters のデータは完全にエフェクト固有であり、IXAPOParameters::SetParameters 関数の実装によって決定されます。SetParameters に渡されるデータは、XAPO の状態を設定したり、IXAPO::Process 関数の動作を制御したりするために使用できます。

SetParameters はリアルタイムオーディオ処理スレッド上でのみ呼び出すことができ、SetParametersIXAPO::Process メソッドとの間の同期は不要です。ただし、IXAudio2Voice::SetEffectParameters メソッドは、パラメーターのコピーを(非同期に)リアルタイムスレッド上の SetParameters に渡すために必要な同期を追加するため、任意のスレッドから呼び出すことができます。IXAudio2Voice::SetEffectParametersIXAPO::Process メソッドとの間の同期は不要です。

プラットフォーム要件

Windows 10 (XAudio2.9)、Windows 8、Windows Phone 8 (XAudio 2.8)、DirectX SDK (XAudio 2.7)
vtbl 4 void GetParameters(void* pParameters, DWORD ParameterByteSize)

エフェクト固有のパラメーターの現在の値を取得します。

pParametersvoid*outエフェクト固有のパラメーターブロックを受け取ります。
ParameterByteSizeDWORDinpParameters のサイズ(バイト単位)です。

解説(Remarks)

pParameters のデータは完全にエフェクト固有であり、IXAPOParameters::GetParameters 関数の実装によって決定されます。pParameters で返されるデータは、XAPO の現在の状態に関する情報を提供するために使用できます。

SetParameters とは異なり、XAudio2 はこのメソッドをリアルタイムオーディオ処理スレッド上では呼び出しません。したがって、XAPO は IXAPOParameters::SetParametersIXAPO::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 の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
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 指定が可能。