IXAudio2EngineCallback
COM公式ドキュメント
IXAudio2EngineCallback インターフェイスには、IXAudio2 エンジンで特定のイベントが発生したときにクライアントに通知するメソッドが含まれています。
解説(Remarks)
メソッド 3
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
オーディオ処理パスが開始される直前に XAudio2 によって呼び出されます。
解説(Remarks)
オーディオ処理パスが終了した直後に XAudio2 によって呼び出されます。
解説(Remarks)
IXAudio2EngineCallback インターフェイスのメソッドについては、XAudio2 の コールバック のセクションを参照してください。
プラットフォーム要件
Windows 10 (XAudio2.9)、Windows 8、Windows Phone 8 (XAudio 2.8)、DirectX SDK (XAudio 2.7)XAudio2 を終了して再起動する必要がある重大なシステムエラーが発生した場合に呼び出されます。
| Error | HRESULT | in | XAudio2 が返すエラーコード。 |
解説(Remarks)
IXAudio2::CreateMasteringVoice の szDeviceId パラメーターに特定のデバイスの ID を指定した場合、または XAUDIO2_NO_VIRTUAL_AUDIO_CLIENT フラグを使用した場合、基盤となる WASAPI レンダリングデバイスが使用できなくなると重大なエラーが発生し、OnCriticalError が発生します。これは、たとえばヘッドセットやスピーカーが取り外されたとき、または USB オーディオデバイスが取り外されたときに発生する可能性があります。重大なエラーが発生すると、オーディオ処理は停止し、それ以降の XAudio2 へのすべての呼び出しは失敗します。この状況から回復する唯一の方法は、XAudio2 インスタンスを解放して新しいインスタンスを作成することです。
IXAudio2::CreateMasteringVoice の szDeviceId パラメーターに NULL を指定した場合、システムは仮想オーディオクライアント (Virtual Audio Client) を使用してオーディオエンドポイントを表します。この場合、基盤となる WASAPI レンダリングデバイスが使用できなくなると、システムは自動的にレンダリング用の新しいオーディオレンダリングデバイスを選択し、オーディオ処理は継続され、OnCriticalError は発生しません。
モバイルデバイスファミリでは、常に仮想オーディオクライアントが使用され、CreateMasteringVoice に指定した値に関係なく、OnCriticalError は発生しません。
IXAudio2EngineCallback インターフェイスのメソッドについては、XAudio2 コールバック のセクションを参照してください。
プラットフォーム要件
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_IXAudio2EngineCallback "{}"
#usecom global IXAudio2EngineCallback IID_IXAudio2EngineCallback "{}"
#comfunc global IXAudio2EngineCallback_OnProcessingPassStart 0
#comfunc global IXAudio2EngineCallback_OnProcessingPassEnd 1
#comfunc global IXAudio2EngineCallback_OnCriticalError 2 int
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。