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.