Génération de filtres DirectShow
[La fonctionnalité associée à cette page, DirectShow, est une fonctionnalité héritée. Il a été remplacé par MediaPlayer, IMFMediaEngine et Audio/Video Capture dans Media Foundation. Ces fonctionnalités ont été optimisées pour Windows 10 et Windows 11. Microsoft recommande vivement au nouveau code d’utiliser MediaPlayer, IMFMediaEngine et La capture audio/vidéo dans Media Foundation au lieu de DirectShow, lorsque cela est possible. Microsoft suggère que le code existant qui utilise les API héritées soit réécrit pour utiliser les nouvelles API si possible.]
Les classes de base DirectShow sont recommandées pour l’implémentation de filtres DirectShow. Pour générer avec les classes de base, effectuez les étapes suivantes, en plus des étapes répertoriées dans Configuration de l’environnement de build :
- Générez la bibliothèque de classes de base, située dans le répertoire Samples\Multimedia\DirectShow\BaseClasses, sous le répertoire racine du SDK. Il existe deux versions de la bibliothèque : une version commerciale (Strmbase.lib) et une version de débogage (Strmbasd.lib).
- Incluez le fichier d’en-tête Streams.h.
- Utilisez la convention d’appel __stdcall.
- Utilisez la bibliothèque d’exécution C multithread (débogage ou vente au détail, le cas échéant).
- Incluez un fichier de définition (.def) qui exporte les fonctions DLL. Voici un exemple de fichier de définition. Il suppose que le fichier de sortie est nommé MyFilter.dll.
LIBRARY MYFILTER.DLL
EXPORTS
DllMain PRIVATE
DllGetClassObject PRIVATE
DllCanUnloadNow PRIVATE
DllRegisterServer PRIVATE
DllUnregisterServer PRIVATE
- Lien vers les fichiers lib suivants.
Étiquette | Valeur |
---|---|
Build de débogage | Strmbasd.lib, Msvcrtd.lib, Winmm.lib |
Retail Build | Strmbase.lib, Msvcrt.lib, Winmm.lib |
- Choisissez l’option « ignorer les bibliothèques par défaut » dans les paramètres de l’éditeur de liens.
- Déclarez le point d’entrée DLL dans votre code source, comme suit :
extern "C" BOOL WINAPI DllEntryPoint(HINSTANCE, ULONG, LPVOID);
BOOL APIENTRY DllMain(HANDLE hModule, DWORD dwReason, LPVOID lpReserved)
{
return DllEntryPoint((HINSTANCE)(hModule), dwReason, lpReserved);
}
Versions antérieures
Pour les versions de la bibliothèque de classes de base antérieures à DirectShow 9.0, vous devez également effectuer les opérations suivantes :
- Pour les builds de débogage, définissez l’indicateur de préprocesseur DEBUG.
Cette étape n’est pas requise pour la version de la bibliothèque de classes de base disponible dans DirectShow 9.0 et versions ultérieures.