IMPEG2_TIF_CONTROL
COM公式ドキュメント
IMPEG2_TIF_CONTROL は現在使用できません。
解説(Remarks)
このインターフェイスのインターフェイス識別子 (IID) を宣言するには、__uuidof 演算子を使用します: __uuidof(IMPEG2_TIF_CONTROL)。
メソッド 6
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
RegisterTIF メソッドは、Transport Information Filter (TIF) が自身を Network Provider に登録するために呼び出されます。
| pUnkTIF | IUnknown* | in | TIF の IUnknown インターフェイスへのポインター。 |
| ppvRegistrationContext | DWORD* | inout | 識別子を受け取る変数へのポインター。この値は IMPEG2_TIF_CONTROL::UnregisterTIF メソッドのパラメーターとして使用します。 |
戻り値
このメソッドは HRESULT を返します。とり得る値には次の表に示すものが含まれます。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| 引数が無効です。 | |
| TIF 上で必要なインターフェイスが見つかりませんでした。 | |
| TIF は既に Network Provider に登録されています。 |
解説(Remarks)
このメソッドは、TIF の入力ピンが Demux に接続された直後に呼び出してください。
UnregisterTIF メソッドは、TIF の Network Provider への登録を解除します。
| pvRegistrationContext | DWORD | in | IMPEG2_TIF_CONTROL::RegisterTIF メソッドが返した識別子。 |
戻り値
このメソッドは HRESULT を返します。とり得る値には次の表に示すものが含まれます。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| 引数が無効です。 |
解説(Remarks)
このメソッドは、TIF の入力ピンが Demux から切断された後に呼び出してください。
AddPIDs メソッドは、TIF が受信すべき PID を Network Provider に通知します。
| ulcPIDs | DWORD | in | 追加する PID の数を指定します。この値は pulPIDs で指定される配列の要素数と等しくなければなりません。 |
| pulPIDs | DWORD* | in | 追加する PID 値の配列を指定します。この配列は ulcPIDs 個の要素を含んでいる必要があります。 |
戻り値
このメソッドは HRESULT を返します。とり得る値には次の表に示すものが含まれます。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
どのテーブルセクションが必要かを把握しているのは TIF のみです。TIF はこのメソッドを使用して、それらのテーブルを含むパケットの PID を Network Provider に通知します。Network Provider はその情報を Demux に転送し、Demux は指定された PID を持つパケットを直ちに TIF へルーティングし始めます。
DeletePIDs メソッドは、指定された PID が TIF で不要になったことを Network Provider に通知します。
| ulcPIDs | DWORD | in | 削除する PID の数を指定します。この値は pulPIDs で指定される配列の要素数と等しくなければなりません。 |
| pulPIDs | DWORD* | in | ulcPIDs 個の要素を含む PID 値の配列を指定します。 |
戻り値
このメソッドは HRESULT を返します。とり得る値には次の表に示すものが含まれます。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
このメソッドは、トランスポートストリーム内の一連のテーブルが消失した場合に、TIF のデータストリームから PSI/SI MPEG2 パケット ID を削除するために呼び出されます。
GetPIDCount メソッドは、MPEG-2 Demultiplexer によって TIF の入力データにフィルタリングされている MPEG-2 パケット ID の数を取得します。
| pulcPIDs | DWORD* | out | 現在 Demux にフィルタリングされている PID の数を受け取る変数へのポインター。 |
戻り値
このメソッドは HRESULT を返します。とり得る値には次の表に示すものが含まれます。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
カスタム TIF 拡張では、このメソッドが必要な場合と不要な場合があります。
GetPIDs メソッドは、TIF の入力データにフィルタリングされている MPEG-2 パケット ID の一覧を取得します。
| pulcPIDs | DWORD* | out | 取得された PID の数を受け取る変数へのポインター。 |
| pulPIDs | DWORD* | out | PID 値を表す ULONG 値の配列を受け取る変数へのポインター。配列の要素数は pulcPIDs の値と等しくなります。 |
戻り値
このメソッドは HRESULT を返します。とり得る値には次の表に示すものが含まれます。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
カスタム TIF 拡張では、このメソッドが必要な場合と不要な場合があります。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IMPEG2_TIF_CONTROL "{F9BAC2F9-4149-4916-B2EF-FAA202326862}" #usecom global IMPEG2_TIF_CONTROL IID_IMPEG2_TIF_CONTROL "{}" #comfunc global IMPEG2_TIF_CONTROL_RegisterTIF 3 sptr,var #comfunc global IMPEG2_TIF_CONTROL_UnregisterTIF 4 int #comfunc global IMPEG2_TIF_CONTROL_AddPIDs 5 int,var #comfunc global IMPEG2_TIF_CONTROL_DeletePIDs 6 int,var #comfunc global IMPEG2_TIF_CONTROL_GetPIDCount 7 var #comfunc global IMPEG2_TIF_CONTROL_GetPIDs 8 var,var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IMPEG2_TIF_CONTROL "{F9BAC2F9-4149-4916-B2EF-FAA202326862}" #usecom global IMPEG2_TIF_CONTROL IID_IMPEG2_TIF_CONTROL "{}" #comfunc global IMPEG2_TIF_CONTROL_RegisterTIF 3 sptr,sptr #comfunc global IMPEG2_TIF_CONTROL_UnregisterTIF 4 int #comfunc global IMPEG2_TIF_CONTROL_AddPIDs 5 int,sptr #comfunc global IMPEG2_TIF_CONTROL_DeletePIDs 6 int,sptr #comfunc global IMPEG2_TIF_CONTROL_GetPIDCount 7 sptr #comfunc global IMPEG2_TIF_CONTROL_GetPIDs 8 sptr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。