ホーム › Media.Audio.XAudio2 › IXAudio2VoiceCallback
IXAudio2VoiceCallback
COMメソッド 7
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
vtbl 0 void OnVoiceProcessingPassStart(DWORD BytesRequired)
| BytesRequired | DWORD | in | 次の処理パスでアンダーラン回避に必要なバイト数を示すDWORD値。0なら追加供給不要。 |
vtbl 1 void OnVoiceProcessingPassEnd()
vtbl 2 void OnStreamEnd()
vtbl 3 void OnBufferStart(void* pBufferContext)
| pBufferContext | void* | inout | 処理開始したバッファーに紐づくXAUDIO2_BUFFER.pContextの値。ユーザー定義のコンテキスト。 |
vtbl 4 void OnBufferEnd(void* pBufferContext)
| pBufferContext | void* | inout | 処理完了したバッファーに紐づくXAUDIO2_BUFFER.pContextの値。ユーザー定義のコンテキスト。 |
vtbl 5 void OnLoopEnd(void* pBufferContext)
| pBufferContext | void* | inout | ループ末尾に到達したバッファーに紐づくpContextの値。ユーザー定義のコンテキスト。 |
vtbl 6 void OnVoiceError(void* pBufferContext, HRESULT Error)
| pBufferContext | void* | inout | エラーが発生したバッファーに紐づくpContextの値。ユーザー定義のコンテキスト。 |
| Error | HRESULT | in | ボイス処理中に発生したエラーを示すHRESULTコード。 |
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IXAudio2VoiceCallback "{}"
#usecom global IXAudio2VoiceCallback IID_IXAudio2VoiceCallback "{}"
#comfunc global IXAudio2VoiceCallback_OnVoiceProcessingPassStart 0 int
#comfunc global IXAudio2VoiceCallback_OnVoiceProcessingPassEnd 1
#comfunc global IXAudio2VoiceCallback_OnStreamEnd 2
#comfunc global IXAudio2VoiceCallback_OnBufferStart 3 sptr
#comfunc global IXAudio2VoiceCallback_OnBufferEnd 4 sptr
#comfunc global IXAudio2VoiceCallback_OnLoopEnd 5 sptr
#comfunc global IXAudio2VoiceCallback_OnVoiceError 6 sptr,int
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。