フィルターの登録に関するガイドライン

[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayer、IMFMediaEngine、Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayerIMFMediaEngineAudio/Video Capture を使用することを強くお勧めします。 Microsoft は、レガシ API を使用する既存のコードを、可能であれば新しい API を使用するように書き換えるよう提案しています。]

フィルター レジストリ情報は、 インテリジェント接続中のフィルター グラフ マネージャーの機能を決定します。 したがって、フィルターを使用するアプリケーションだけでなく、DirectShow 用に作成されたすべてのアプリケーションに影響します。 これらのガイドラインに従って、フィルターが正しく動作することを確認する必要があります。

  1. レジストリにフィルター データが必要ですか? 多くのカスタム フィルターでは、フィルター マッパーまたはシステム デバイス列挙子にフィルターを表示する理由はありません。 DLL を登録する限り、アプリケーションは CoCreateInstance を使用してフィルターを作成できます。 その場合は、ファクトリ テンプレートから AMOVIESETUP_FILTER 構造を省略するだけです。 (1 つの欠点は、フィルターが GraphEdit に表示されないことです。これを回避するには、 IFilterMapper2::CreateCategory メソッドを使用してプライベート "Testing" カテゴリを作成します。これは、デバッグ ビルドでのみ行う必要があります)。)

  2. 適切なフィルター カテゴリを選択します。 既定の "DirectShow フィルター" カテゴリは、汎用フィルター用です。 必要に応じて、より具体的なカテゴリにフィルターを登録します。 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. 24 ビット RGB を受け入れる "DirectShow フィルター" カテゴリにフィルターを登録しないでください。 フィルターは、色空間コンバーター フィルターに干渉します。

DirectShow フィルターを登録する方法