IApoAuxiliaryInputRT
COM公式ドキュメント
APO の補助入力を駆動するために使用される、リアルタイムセーフなインターフェイスです。
解説(Remarks)
このメソッドはリアルタイム処理スレッドから呼び出される可能性があります。これらのメソッドの実装は、 ブロックしたり、ページ メモリにアクセスしたり、ブロックするシステム ルーチンを呼び出したりしてはなりません。
メソッド 1
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
APO の補助入力のいずれかに入力を提供します。
| dwInputId | DWORD | in | 入力の識別子です。これはシステムによって生成される一意の識別子です。APO はこの識別子を使用して、複数の補助入力を区別できます。 |
| pInputConnection | APO_CONNECTION_PROPERTY* | in | 入力接続プロパティ構造体です。 |
解説(Remarks)
このメソッドはリアルタイム処理スレッドから呼び出される可能性があります。このメソッドの実装は、ブロックしたり、ページ メモリにアクセスしたり、ブロックするシステム ルーチンを呼び出したりすることはなく、また、そうしてはなりません。
入力エンドポイントのケイデンスはレンダー エンドポイントのケイデンスと一致しない場合があります。そのため、補助入力に入力が提供されるケイデンスは、プライマリ入力で IAudioProcessingObjectRT::APOProcess が呼び出されるケイデンスと一致しない場合があります。APO は、この呼び出しがブロックしないように、適切な非ブロッキング バッファリングを実装する必要があります。
APO_CONNECTION_PROPERTY_V2 には、プライマリ ストリームとセカンダリ ストリームを同期するために使用できるタイムスタンプが含まれています。IAudioProcessingObjectRT::APOProcess に渡される APO_CONNECTION_PROPERTY 構造体の u32Signature フィールドが APO_CONNECTION_PROPERTY_V2_SIGNATURE に等しい場合、その構造体は安全に APO_CONNECTION_PROPERTY_V2 に型キャストできます。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IApoAuxiliaryInputRT "{F851809C-C177-49A0-B1B2-B66F017943AB}" #usecom global IApoAuxiliaryInputRT IID_IApoAuxiliaryInputRT "{}" #comfunc global IApoAuxiliaryInputRT_AcceptInput 3 int,var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。#define global IID_IApoAuxiliaryInputRT "{F851809C-C177-49A0-B1B2-B66F017943AB}" #usecom global IApoAuxiliaryInputRT IID_IApoAuxiliaryInputRT "{}" #comfunc global IApoAuxiliaryInputRT_AcceptInput 3 int,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。