次の方法で共有


フィルタ登録のガイドライン

フィルタ登録情報は、フィルタ グラフ マネージャがインテリジェント接続中にどのように動作するかを指定する。したがって、この情報はフィルタを使うアプリケーションだけでなく、DirectShow 用に作成されたすべてのアプリケーションに影響する。次のガイドラインに従って、フィルタが正しく動作するかどうかを確認すること。

  1. レジストリにフィルタ データが必要かどうか。多くのカスタム フィルタでは、フィルタ マッパーまたは System Device Enumerator がフィルタを認識できるようにする理由はない。DLL を登録している限り、アプリケーションは CoCreateInstance を使ってフィルタを作成できる。その場合、ファクトリ テンプレートから AMOVIESETUP_FILTER 構造体を省略する。(1 つ不都合な点は、フィルタが GraphEdit で認識されないことである。この点を回避するため、IFilterMapper2::CreateCategory メソッドを使ってプライベートな "Testing" カテゴリを作成できる。この処理はデバッグ ビルドでのみ行うこと。)

  2. 正しいフィルタ カテゴリを選択する。デフォルトの 泥irectShow Filters・カテゴリは汎用フィルタ用である。必要に応じて、さらに限定的なカテゴリにフィルタを登録すること。IFilterMapper2 がフィルタを検索する場合、メリット値が MERIT_DO_NOT_USE 以下であるカテゴリは無視する。通常の再生向けではないカテゴリはメリット値が低い。

  3. ピンの AMOVIESETUP_MEDIATYPE 情報に MEDIATYPE_None、MEDIASUBTYPE_None、または GUID_NULL を指定しないこと。IFilterMapper2 はこれらの値をワイルドカードとして扱うため、グラフ作成処理の速度が低下することがある。

  4. できるだけ低いメリット値を選択する。次にガイドラインを示す。

    フィルタのタイプ 推奨メリット
    デフォルト レンダラ。 MERIT_PREFERRED。ただし、標準メディア タイプの場合、カスタム レンダラはデフォルトにしないこと。
    非デフォルト レンダラ。 MERIT_DO_NOT_USE または MERIT_UNLIKELY。
    Mux。 MERIT_DO_NOT_USE。
    デコーダ。 MERIT_NORMAL。
    スプリッタ、パーサー。 MERIT_NORMAL 以下。
    特定用途のフィルタ。アプリケーションで直接作成されるフィルタ。 MERIT_DO_NOT_USE。
    キャプチャ。 MERIT_DO_NOT_USE。
    "フォールバック" フィルタ。たとえば、色空間変換フィルタ MERIT_UNLIKELY。

    フィルタにメリット値 MERIT_DO_NOT_USE を指定する場合、まずこの情報を登録する必要があるかどうかを検討すること。(項目 1 を参照すること。)

  5. "DirectShow Filters" カテゴリに 24 ビット RGB を受け入れるフィルタを登録しないこと。フィルタが色空間変換フィルタと競合する。