Bagikan melalui


Membangun Filter DirectShow

[Fitur yang terkait dengan halaman ini, DirectShow, adalah fitur warisan. Ini telah digantikan oleh MediaPlayer, IMFMediaEngine, dan Pengambilan 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 Pengambilan Audio/Video 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.]

Kelas dasar DirectShow direkomendasikan untuk menerapkan filter DirectShow. Untuk membangun dengan kelas dasar, lakukan langkah-langkah berikut, selain langkah-langkah yang tercantum dalam Menyiapkan Lingkungan Build:

  • Bangun pustaka kelas dasar, yang terletak di direktori Samples\Multimedia\DirectShow\BaseClasses, di bawah direktori akar SDK. Ada dua versi pustaka: versi ritel (Strmbase.lib) dan versi debug (Strmbasd.lib).
  • Sertakan file header Streams.h.
  • Gunakan konvensi panggilan __stdcall.
  • Gunakan pustaka run-time C multithreaded (debug atau retail, sebagaimana mewajibkan).
  • Sertakan file definisi (.def) yang mengekspor fungsi DLL. Berikut ini adalah contoh file definisi. Ini mengasumsikan bahwa file output diberi nama MyFilter.dll.
LIBRARY MYFILTER.DLL
EXPORTS 
    DllMain             PRIVATE
    DllGetClassObject   PRIVATE
    DllCanUnloadNow     PRIVATE
    DllRegisterServer   PRIVATE
    DllUnregisterServer PRIVATE
  • Tautkan ke file lib berikut.
Label Nilai
Debug Build Strmbasd.lib, Msvcrtd.lib, Winmm.lib
Build Ritel Strmbase.lib, Msvcrt.lib, Winmm.lib
  • Pilih opsi "abaikan pustaka default" di pengaturan linker.
  • Deklarasikan titik entri DLL dalam kode sumber Anda, sebagai berikut:
extern "C" BOOL WINAPI DllEntryPoint(HINSTANCE, ULONG, LPVOID);
BOOL APIENTRY DllMain(HANDLE hModule, DWORD dwReason, LPVOID lpReserved)
{
    return DllEntryPoint((HINSTANCE)(hModule), dwReason, lpReserved);
}

Versi Sebelumnya

Untuk versi pustaka kelas dasar sebelum DirectShow 9.0, Anda juga harus melakukan hal berikut:

  • Untuk build debug, tentukan DEBUG bendera praprosedur.

Langkah ini tidak diperlukan untuk versi pustaka kelas dasar yang tersedia di DirectShow 9.0 dan yang lebih baru.

Kelas Dasar DirectShow

Menulis Filter DirectShow