IDistributorNotify
COM公式ドキュメント
IDistributorNotify インターフェイスは、フィルターグラフが変更されたときにプラグインディストリビューターへ通知できるようにします。アプリケーションがこのインターフェイスを使用することはありません。
メソッド 5
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
Stop メソッドは、フィルターグラフが停止状態へ移行するときに呼び出されます。
戻り値
解説(Remarks)
このメソッドは、フィルターへ通知される前に呼び出されます。
Pause メソッドは、フィルターグラフが一時停止状態へ移行するときに呼び出されます。
戻り値
解説(Remarks)
このメソッドは、フィルターへ通知される前に呼び出されます。
Run メソッドは、フィルターグラフが実行状態へ移行するときに呼び出されます。
| tStart | LONGLONG | in | 各フィルターの IMediaFilter::Run メソッドへ渡されるストリーム時間のオフセットです。 |
戻り値
HRESULT 値を返します。
解説(Remarks)
このメソッドは、フィルターへ通知される前に呼び出されます。
SetSyncSource メソッドは、新しいクロックが登録されたときに呼び出されます。
| pClock | IReferenceClock* | in | 新しいクロックの IReferenceClock インターフェイスへのポインターです。 |
戻り値
HRESULT 値を返します。
解説(Remarks)
このメソッドは、フィルターへ通知される前に呼び出されます。プラグインディストリビューターがこのメソッド呼び出し以降も保持し続ける場合は、必ず pClock パラメーターに対して AddRef を呼び出してください。
NotifyGraphChange メソッドは、フィルターグラフ内のフィルターの集合が変化したとき、またはいずれかのピン接続が変化したときに呼び出されます。
戻り値
HRESULT 値を返します。
解説(Remarks)
このメソッドは、IFilterGraph::AddFilter、IFilterGraph::RemoveFilter、または IFilterGraph::ConnectDirect メソッドが呼び出されるたびに、あるいはこれらのいずれかの呼び出しにつながるメソッド(IGraphBuilder::RenderFile など)が呼び出されるたびに呼び出されます。
この時点で削除された、保持中のフィルターに対しては必ず Release を呼び出してください。パフォーマンス上の理由から、複数の通知が個別に送信される可能性があるため、PID は実際にインターフェイスが必要になるまでフィルターの再スキャンを行わないことを選択する場合があります。ただし、キャッシュしているインターフェイスは直ちに解放することが重要です。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IDistributorNotify "{56A868AF-0AD4-11CE-B03A-0020AF0BA770}"
#usecom global IDistributorNotify IID_IDistributorNotify "{}"
#comfunc global IDistributorNotify_Stop 3
#comfunc global IDistributorNotify_Pause 4
#comfunc global IDistributorNotify_Run 5 int64
#comfunc global IDistributorNotify_SetSyncSource 6 sptr
#comfunc global IDistributorNotify_NotifyGraphChange 7
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。