Microsoft DirectX 8.0

IFilterMapper インターフェイス

注 :  このインターフェイスの使用は避けること。既存のアプリケーションとの後方互換性を保つため、継続してサポートされるが、新しいアプリケーションでは IFilterMapper2 インターフェイスを使用すること。

このインターフェイスは、フィルタを登録および登録解除するメソッドと、特性に基づいてフィルタを検索するメソッドを提供する。

vtable 順のメソッド

IUnknown メソッド説明
QueryInterface サポートされているインターフェイスへのポインタを取得する。
AddRef 参照カウントをインクリメントする。
Release 参照カウントをデクリメントする。
IFilterMapper メソッド説明
RegisterFilter レジストリにフィルタの詳細を記録する。
RegisterFilterInstance フィルタの識別可能なインスタンスを登録する。
RegisterPin レジストリにピンの詳細を記録する。
RegisterPinType レジストリにピンのタイプを追加する。
UnregisterFilter レジストリからフィルタを削除する。
UnregisterFilterInstance フィルタの識別可能なインスタンスを削除する。
UnregisterPin レジストリからピンを削除する。
EnumMatchingFilters 特定の要件を満たすフィルタをすべて検索する。

IFilterMapper::EnumMatchingFilters

IFilterMapper インターフェイス

指定された要件を満たす登録済みフィルタを列挙する列挙子を提供する。

構文

HRESULT EnumMatchingFilters(
    IEnumRegFilters **ppEnum,
    DWORD dwMerit,
    BOOL bInputNeeded,
    CLSID clsInMaj,
    CLSID clsInSub,
    BOOL bRender,
    BOOL bOutputNeeded,
    CLSID clsOutMaj,
    CLSID clsOutSub
);

パラメータ

ppEnum
[out] 返された列挙子へのポインタのアドレス。
dwMerit
[in] 列挙するフィルタの最小メリット値。
bInputNeeded
入力ピンが少なくとも 1 つ必要かどうかを示す値。TRUE は、必要であることを示す。
clsInMaj
[in] 必要な入力メジャー タイプ。不要の場合は、GUID_NULL を設定する。
clsInSub
[in] 必要な入力サブタイプ。不要の場合は、GUID_NULL を設定する。
bRender
[in] フィルタが入力をレンダリングする必要があるかどうかを指定するフラグ。TRUE は、レンダリングする必要があることを示す。
bOutputNeeded
出力ピンが少なくとも 1 つ必要かどうかを示す値。TRUE は、必要であることを示す。
clsOutMaj
[in] 必要な出力メジャー タイプ。不要の場合は、GUID_NULL を設定する。
clsOutSub
[in] 必要な出力サブタイプ。不要の場合は、GUID_NULL を設定する。

戻り値

HRESULT 値を返す。

注意

ppEnum パラメータに、要件を満たすフィルタを列挙する列挙子が設定される。dwMerit パラメータのメリット値の詳細については、「IFilterMapper::RegisterFilter」を参照すること。

IFilterMapper::RegisterFilter

IFilterMapper インターフェイス

レジストリにフィルタを追加する。このフィルタは列挙できる。

構文

HRESULT RegisterFilter(
    CLSID clsid,
    LPCWSTR Name,
    DWORD dwMerit
);

パラメータ

clsid
[in] フィルタのグローバル ユニーク識別子 (GUID)。
Name
[in] フィルタの内容を表すわかりやすい名前。
dwMerit
[in] 列挙での優先順位。メリット値が高いフィルタほど先に列挙される。

戻り値

HRESULT 値を返す。

注意

メリット (dwMerit パラメータで定義する) は、IGraphBuilder::ConnectIGraphBuilder::Render、または IGraphBuilder::RenderFile の呼び出しによってフィルタ グラフ マネージャが操作を実行するときに、フィルタを試す順序を制御する。フィルタ グラフ マネージャは、正しいメディア タイプで登録されているフィルタをすべて検索したうえで、最もメリットの高いものを試す。このとき、メリットが等しいフィルタが複数あれば、登録されているその他の条件に基づいて選択する。

dwMerit パラメータでは、事前に定義された以下の値を使用できる。その他の値 (MERIT_NORMAL+1 など) も使用できるが、その場合には (MERIT_NORMAL+MERIT_UNLIKELY)/2 のような式を使って計算するとよい。こうすると下位ビットが残り、そのビットを使ってさらに細かく区別できるからである。
0x900000 ハードウェア レンダラ フィルタ。このメリット値を持つフィルタは最初に試される。
MERIT_PREFERRED (0x800000) 操作を直接実行することが多いフィルタ (レンダラなど)。
0x680000 MPEG デコンプレッサ フィルタ。フィルタ グラフ内で機能するかどうかの判断に時間がかかる AVI デコンプレッサ フィルタより先に検索される。
MERIT_NORMAL (0x600000) 接続の確立に関与する可能性が高いフィルタ。AVI デコンプレッサ フィルタおよびスプリッタ 変換フィルタは、この値で登録される。
MERIT_UNLIKELY (0x400000) 接続の確立に関与する可能性があるフィルタ (カラー スペース変換フィルタなど)。フィルタ グラフ マネージャは、ほかのオプションに失敗した場合にのみ、このフィルタを使用する。ソース フィルタはこの値で登録する。
MERIT_DO_NOT_USE (0x200000) 接続の確立に関与しないフィルタ。フィルタ グラフ マネージャは、フィルタ グラフを自動構築するとき、これ以下の値で登録されたフィルタを試さない。明示的に追加する必要があるフィルタを、事前に定義されたフィルタ グラフの一部として登録するか、または IFilterGraph::AddFilter を使って追加するときには、この値を使用する。例としては、ティー フィルタまたはエフェクト フィルタが挙げられる。
MERIT_HW_COMPRESSOR (0x100050) ハードウェア コンプレッサ フィルタ。フィルタ グラフ マネージャは、フィルタ グラフを自動構築するとき、この値で登録されたフィルタを試さない。
MERIT_SW_COMPRESSOR (0x100000) ソフトウェア コンプレッサ フィルタ。フィルタ グラフ マネージャは、フィルタ グラフを自動構築するとき、この値で登録されたフィルタを試さない。

IFilterMapper::RegisterFilterInstance

IFilterMapper インターフェイス

フィルタの識別可能なインスタンスを登録する。

構文

HRESULT RegisterFilterInstance(
    CLSID clsid,
    LPCWSTR Name,
    CLSID *MRId
);

パラメータ

clsid
[in] フィルタの GUID。
Name
[in] インスタンスの内容を表すわかりやすい名前。
MRId
[out] 返されたメディア リソース ID へのポインタ。このパラメータは、このフィルタのこのインスタンスに付けられたローカル一意識別子である。

戻り値

HRESULT 値を返す。

注意

このメソッドは、同じドライバで制御する類似のサウンド カードが 2 つ利用可能で、音を鳴らすサウンド カードを選ぶ必要があるような場合に使用する。フィルタのインスタンスが 1 つしかない場合 (コンピュータにあるサウンド カードが 1 つのみの場合など)、またはフィルタのインスタンスがすべて同等である場合、このメソッドは必要ない。

フィルタ自体は既に登録されていなければならない。

IFilterMapper::RegisterPin

IFilterMapper インターフェイス

レジストリにピンの詳細を記録する。

構文

HRESULT RegisterPin(
    CLSID Filter,
    LPCWSTR Name,
    BOOL bRendered,
    BOOL bOutput,
    BOOL bZero,
    BOOL bMany,
    CLSID ConnectsToFilter,
    LPWSTR ConnectsToPin
);

パラメータ

Filter
[in] フィルタの GUID。
Name
[in] ピンの名前。フィルタ内で一意でなければならない。タイプ情報を示す以外に意味はない。フィルタの列挙で問題が発生するため、ピンに 99 文字を超える名前を使用してはならない。
bRendered
[in] フィルタがこの入力をレンダリングするかどうかを指定する値。レンダリングする場合は、TRUE を設定する。それ以外の場合は、FALSE を設定する。
bOutput
[in] 出力ピンかどうかを指定する値。出力ピンの場合は、TRUE を設定する。それ以外の場合は、FALSE を設定する。
bZero
[in] このピンのインスタンスを 1 つも持たないフィルタを許すかどうかを指定する値。許す場合は、TRUE を設定する。それ以外の場合は、FALSE を設定する。たとえば、サウンド トラックのないムービーの場合、デコンプレッサ フィルタでサウンド出力ピンを作成する必要はない。
bMany
[in] このピンのインスタンスを複数持つフィルタを許すかどうかを指定する値。許す場合は、TRUE を設定する。それ以外の場合は、FALSE を設定する。たとえば、ミキサーには入力ピンのインスタンスが複数必要になる。
ConnectsToFilter
[in] 予約済み。NULL でなければならない。このパラメータは、フィルタ グラフ外部への接続を持つシステム規模のミキサーのようなフィルタでの使用を目的としている。ただし、まだ実装はされない。
ConnectsToPin
[in] 予約済み。NULL でなければならない。

戻り値

HRESULT 値を返す。

IFilterMapper::RegisterPinType

IFilterMapper インターフェイス

ピンのタイプを登録する。

構文

HRESULT RegisterPinType(
    CLSID clsFilter,
    LPCWSTR strName,
    CLSID clsMajorType,
    CCLSID clsSubType
);

パラメータ

clsFilter
ピンが属するフィルタのクラス識別子 (CLSID)。
strName
ピンの名前。
clsMajorType
このピン クラスでサポートされるメディア サンプルのメジャー タイプ。
clsSubType
このピン クラスでサポートされるメディア サンプルのサブタイプ。

戻り値

HRESULT 値を返す。

注意

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

IFilterMapper::UnregisterFilter

IFilterMapper インターフェイス

レジストリからフィルタを削除する。

構文

HRESULT UnregisterFilter(
    CLSID Filter
);

パラメータ

Filter
[in] フィルタの GUID。

戻り値

HRESULT 値を返す。

IFilterMapper::UnregisterFilterInstance

IFilterMapper インターフェイス

レジストリからフィルタのインスタンスを削除する。

構文

HRESULT UnregisterFilterInstance(
    CLSID MRId
);

パラメータ

MRId
[in] このインスタンスのメディア リソース ID。

戻り値

HRESULT 値を返す。

IFilterMapper::UnregisterPin

IFilterMapper インターフェイス

レジストリからピンを削除する。

構文

HRESULT UnregisterPin(
    CLSID Filter,
    LPCWSTR Name
);

パラメータ

Filter
[in] このピンが属するフィルタの GUID。
Name
[in] ピンの名前。

戻り値

HRESULT 値を返す。