Panduan untuk Mendaftarkan Filter

[Fitur yang terkait dengan halaman ini, DirectShow, adalah fitur warisan. Ini telah digantikan oleh MediaPlayer, IMFMediaEngine, dan Tangkapan Audio/Video di Media Foundation. Fitur-fitur tersebut telah dioptimalkan untuk Windows 10 dan Windows 11. Microsoft sangat menyarankan agar kode baru menggunakan MediaPlayer, IMFMediaEngine dan Audio/Video Capture di Media Foundation alih-alih DirectShow, jika memungkinkan. Microsoft menyarankan agar kode yang ada yang menggunakan API warisan ditulis ulang untuk menggunakan API baru jika memungkinkan.]

Informasi registri filter menentukan bagaimana Filter Graph Manager berfungsi selama Intelligent Connect. Dengan demikian, ini mempengaruhi setiap aplikasi yang ditulis untuk DirectShow, bukan hanya aplikasi yang akan menggunakan filter Anda. Anda harus memastikan bahwa filter Anda berkinerja dengan benar, dengan mengikuti panduan ini.

  1. Apakah Anda memerlukan data filter di registri? Untuk banyak filter kustom, tidak ada alasan untuk membuat filter terlihat oleh Pemeta Filter atau Enumerator Perangkat Sistem. Selama Anda mendaftarkan DLL, aplikasi Anda dapat membuat filter menggunakan CoCreateInstance. Dalam hal ini, cukup hilangkan struktur AMOVIESETUP_FILTER dari templat pabrik. (Salah satu kelemahannya adalah filter Anda tidak akan terlihat di GraphEdit. Untuk mengatasinya, Anda dapat membuat kategori "Pengujian" privat menggunakan metode IFilterMapper2::CreateCategory . Anda seharusnya hanya melakukan ini untuk build debug.)

  2. Pilih kategori filter yang benar. Kategori "Filter DirectShow" default adalah untuk filter tujuan umum. Jika sesuai, daftarkan filter Anda dalam kategori yang lebih spesifik. Saat IFilterMapper2 mencari filter, IFilterMapper2 mengabaikan kategori apa pun yang manfaatnya MERIT_DO_NOT_USE atau kurang. Kategori yang tidak ditujukan untuk pemutaran normal memiliki manfaat rendah.

  3. Hindari menentukan MEDIATYPE_None, MEDIASUBTYPE_None, atau GUID_NULL di informasi AMOVIESETUP_MEDIATYPE untuk pin. IFilterMapper2 memperlakukan ini sebagai kartubebas, yang dapat memperlambat proses pembuatan grafik.

  4. Pilih nilai manfaat terendah yang mungkin. Berikut adalah beberapa panduan:

    Jenis filter Manfaat yang disarankan
    Perender default MERIT_PREFERRED. Namun, untuk jenis media standar, perender kustom tidak boleh menjadi default.
    Perender non-default MERIT_DO_NOT_USE atau MERIT_UNLIKELY
    Mux MERIT_DO_NOT_USE
    Decoder MERIT_NORMAL
    Spitter, parser MERIT_NORMAL atau lebih rendah
    Filter tujuan khusus; filter apa pun yang dibuat langsung oleh aplikasi MERIT_DO_NOT_USE
    Menangkap MERIT_DO_NOT_USE
    Filter "Fallback"; misalnya, Filter Pengonversi Ruang Warna MERIT_UNLIKELY

     

    Jika Anda memberikan filter manfaat MERIT_DO_NOT_USE, pertimbangkan apakah Anda perlu mendaftarkan informasi ini terlebih dahulu. (Lihat item 1.)

  5. Jangan mendaftarkan filter dalam kategori "Filter DirectShow" yang menerima RGB 24-bit. Filter Anda akan mengganggu filter Pengonversi Ruang Warna.

Cara Mendaftarkan Filter DirectShow