Win32 API 日本語リファレンス
ホームMedia.DirectShow › IFilterMapper

IFilterMapper

COM
IID56a868a3-0ad4-11ce-b03a-0020af0ba770継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

メモ このインターフェイスは非推奨です。(IFilterMapper)

メソッド 8

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT RegisterFilter(GUID clsid, LPWSTR Name, DWORD dwMerit)

メモ IFilterMapper インターフェイスは非推奨です。代わりに IFilterMapper2 を使用してください。フィルターをレジストリに追加します。追加後、そのフィルターは列挙できるようになります。

clsidGUIDinフィルターのグローバル一意識別子(GUID)。
NameLPWSTRinフィルターのわかりやすい名前。
dwMeritDWORDin列挙順序における位置。メリット値が高いフィルターほど先に列挙されます。

戻り値

HRESULT 値を返します。

解説(Remarks)

メリット(dwMerit パラメーターで定義)は、IGraphBuilder::ConnectIGraphBuilder::Render、または IGraphBuilder::RenderFile の呼び出しに応じて操作を実行する際に、フィルターグラフマネージャーがフィルターを試す順序を制御します。フィルターグラフマネージャーは、正しいメディアタイプで登録されたすべてのフィルターを検索し、メリットが最も高いものを試します。メリットが等しいフィルターの間では、登録情報に含まれる他の条件を用いて選択します。

vtbl 4 HRESULT RegisterFilterInstance(GUID clsid, LPWSTR Name, GUID* MRId)

メモ IFilterMapper インターフェイスは非推奨です。代わりに IFilterMapper2 を使用してください。識別可能なフィルターのインスタンスを登録します。

clsidGUIDinフィルターの GUID。
NameLPWSTRinインスタンスのわかりやすい名前。
MRIdGUID*out返されるメディアリソース ID へのポインター。このパラメーターは、このフィルターのこのインスタンスに対するローカルで一意な識別子です。

戻り値

HRESULT 値を返します。

解説(Remarks)

このメソッドは、同じドライバーで駆動される類似した 2 枚のサウンドカードが利用可能で、どちらのカードから音声を出力するかを選択する必要がある場合などに対応します。フィルターのインスタンスが 1 つしかない場合(コンピューターにサウンドカードが 1 枚しかない場合など)や、フィルターのすべてのインスタンスが同等である場合には、これは必要ありません。

フィルター自体は、あらかじめ登録されている必要があります。

vtbl 5 HRESULT RegisterPin(GUID Filter, LPWSTR Name, BOOL bRendered, BOOL bOutput, BOOL bZero, BOOL bMany, GUID ConnectsToFilter, LPWSTR ConnectsToPin)

メモ IFilterMapper インターフェイスは非推奨です。代わりに IFilterMapper2 を使用してください。ピンの詳細をレジストリに記録します。

FilterGUIDinフィルターの GUID。
NameLPWSTRinピンの名前。フィルター内で一意である必要があります。型情報を示す以外の意味はありません。ピン名に 99 文字を超える長さを使用しないでください。フィルターの列挙で問題が発生する原因となります。
bRenderedBOOLinフィルターがこの入力をレンダリングするかどうかを指定する値。レンダリングする場合は TRUE に、そうでない場合は FALSE に設定します。
bOutputBOOLinこれが出力ピンかどうかを指定する値。出力ピンの場合は TRUE に、そうでない場合は FALSE に設定します。
bZeroBOOLinフィルターがこのピンのインスタンスを 0 個にできるかどうかを指定する値。できる場合は TRUE に、そうでない場合は FALSE に設定します。たとえば、展開フィルターは、サウンドトラックのない動画に対してサウンド出力ピンを作成する必要はありません。
bManyBOOLinフィルターがこのピンのインスタンスを多数持てるかどうかを指定する値。持てる場合は TRUE に、そうでない場合は FALSE に設定します。たとえば、ミキサーは入力ピンのインスタンスを複数持つ場合があります。
ConnectsToFilterGUIDin予約済み。NULL でなければなりません。(これは、フィルターグラフの外部に接続を持つシステム全体のミキサーなどのフィルターを想定したものです。まだ実装されていません。)
ConnectsToPinLPWSTRin予約済み。NULL でなければなりません。

戻り値

HRESULT 値を返します。

vtbl 6 HRESULT RegisterPinType(GUID clsFilter, LPWSTR strName, GUID clsMajorType, GUID clsSubType)

メモ IFilterMapper インターフェイスは非推奨です。代わりに IFilterMapper2 を使用してください。このピンの型を登録します。

clsFilterGUIDinピンが属するフィルターのクラス識別子(CLSID)。
strNameLPWSTRinこのピンが知られている名前。
clsMajorTypeGUIDinこのピンクラスがサポートするメディアサンプルのメジャータイプ。
clsSubTypeGUIDinこのピンクラスがサポートするメディアサンプルのサブタイプ。

戻り値

HRESULT 値を返します。

解説(Remarks)

clsMajorType および clsSubType パラメーターは、ピンのメディアタイプを指定し、それぞれ AM_MEDIA_TYPE 構造体の majortype メンバーと subtype メンバーに対応します。

vtbl 7 HRESULT UnregisterFilter(GUID Filter)

メモ IFilterMapper インターフェイスは非推奨です。代わりに IFilterMapper2 を使用してください。このフィルターの登録をレジストリから削除します。

FilterGUIDinフィルターの GUID。

戻り値

HRESULT 値を返します。

vtbl 8 HRESULT UnregisterFilterInstance(GUID MRId)

メモ IFilterMapper インターフェイスは非推奨です。代わりに IFilterMapper2 を使用してください。このフィルターインスタンスの登録をレジストリから削除します。

MRIdGUIDinこのインスタンスのメディアリソース識別子。

戻り値

HRESULT 値を返します。

vtbl 9 HRESULT UnregisterPin(GUID Filter, LPWSTR Name)

メモ IFilterMapper インターフェイスは非推奨です。代わりに IFilterMapper2 を使用してください。このピンの登録をレジストリから削除します。

FilterGUIDinこのピンが属するフィルターの GUID。
NameLPWSTRinピンの名前。

戻り値

HRESULT 値を返します。

vtbl 10 HRESULT EnumMatchingFilters(IEnumRegFilters** ppEnum, DWORD dwMerit, BOOL bInputNeeded, GUID clsInMaj, GUID clsInSub, BOOL bRender, BOOL bOututNeeded, GUID clsOutMaj, GUID clsOutSub)

メモ IFilterMapper インターフェイスは非推奨です。代わりに IFilterMapper2 を使用してください。指定した要件を満たす登録済みフィルターを列挙する列挙子を提供します。

ppEnumIEnumRegFilters**out返される列挙子へのポインターのアドレス。
dwMeritDWORDin列挙するフィルターの最小メリット値。
bInputNeededBOOLin入力ピンが少なくとも 1 つ必要かどうかを示す値。TRUE は入力ピンが少なくとも 1 つ必要であることを示します。
clsInMajGUIDin必要な入力メジャータイプ。指定しない場合は GUID_NULL に設定します。
clsInSubGUIDin必要な入力サブタイプ。指定しない場合は GUID_NULL に設定します。
bRenderBOOLinフィルターが入力をレンダリングする必要があるかどうかを指定するフラグ。TRUE はレンダリングする必要があることを意味します。
bOututNeededBOOLin出力ピンが少なくとも 1 つ必要かどうかを示す値。TRUE は出力ピンが少なくとも 1 つ必要であることを示します。
clsOutMajGUIDin必要な出力メジャータイプ。指定しない場合は GUID_NULL に設定します。
clsOutSubGUIDin必要な出力サブタイプ。指定しない場合は GUID_NULL に設定します。

戻り値

HRESULT 値を返します。

解説(Remarks)

ppEnum パラメーターに、要件に一致するフィルターの列挙子を設定します。dwMerit パラメーターのメリット値の説明については、IFilterMapper::RegisterFilter メソッドを参照してください。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_IFilterMapper "{56A868A3-0AD4-11CE-B03A-0020AF0BA770}"
#usecom global IFilterMapper IID_IFilterMapper "{}"
#comfunc global IFilterMapper_RegisterFilter            3 int,wstr,int
#comfunc global IFilterMapper_RegisterFilterInstance    4 int,wstr,var
#comfunc global IFilterMapper_RegisterPin               5 int,wstr,int,int,int,int,int,wstr
#comfunc global IFilterMapper_RegisterPinType           6 int,wstr,int,int
#comfunc global IFilterMapper_UnregisterFilter          7 int
#comfunc global IFilterMapper_UnregisterFilterInstance  8 int
#comfunc global IFilterMapper_UnregisterPin             9 int,wstr
#comfunc global IFilterMapper_EnumMatchingFilters       10 sptr,int,int,int,int,int,int,int,int
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。