1. Introduction▲
Pour développer des applications DirectShow, plusieurs outils sont nécessaires. Je vais décrire quel est l'environnement que j'utilise et comment le paramétrer. C'est une tâche souvent difficile lorsque l'on débute avec DirectShow, d'autant plus qu'il existe plusieurs versions du SDK, et que des erreurs à la compilation sont généralement rencontrées...
2. IDE▲
L'environnement de développement logiciel que j'utilise est Visual C++ 2008, édition
express. Ce compilateur est gratuit, et il est largement suffisant pour le développement
d'application DirectShow.
Vous pouvez le télécharger ici :
http://www.microsoft.com/express/download/
Choisissez la langue et lancez le téléchargement.
Voici les étapes de l'installation :
- à l'écran de bienvenue, cliquez sur "suivant" (vous êtes libre de cocher la
case "oui, envoyer des informations relatives à mon installation...").
- à l'écran des termes de licence, acceptez puis cliquez sur "suivant".
- à l'écran options d'installation, cliquez sur "suivant" (certains éléments
sont proposés, ils ne sont pas indispensables pour DirectShow).
- à l'écran dossier de destination, cliquez sur "suivant".
- laissez faire l'installation, un redémarrage est ensuite demandé.
Voilà, l'IDE est installé, il ne reste plus qu'à créer un raccourci
dans la barre des tâches et à enregistrer le produit. Pour ceci une adresse MSN est obligatoire.
3. SDK▲
Les SDK pour DirectShow sont nombreux. Ils ont été revus pour être compilables sous
les IDE successifs (Visual 2003, 2005 et 2008). Nous allons utiliser le dernier en date,
compilable sous Visual C++ 2008, édition express, le Windows SDK 6.1.
Vous pouvez le télécharger ici :
http://www.microsoft.com/downloads/details.aspx?FamilyId=E6E1C3DF-A74F-4207-8586-711EBE331CDC&displaylang=en
Lancez le téléchargement.
Voici les étapes de l'installation :
- à l'écran du setup, cliquez sur "Next".
- à l'écran End-User License Agreement, acceptez ("i Agree") puis cliquez sur "Next".
- à l'écran Install Locations, cliquez sur "Next".
- à l'écran Installation Options, cliquez sur "Next".
- à l'écran Begin Installation, cliquez sur "Next".
Voilà, le SDK pour DirectShow est installé.
Avec DirectShow, l'utilisation de "smart pointer" est fortement conseillée.
Ce SDK propose les "SmartPtr", mais personnellement je préfère l'utilisation des CComPtr,
qui sont disponibles dans un autre SDK, le Microsoft Windows Server 2003 R2 Platform SDK.
Vous pouvez le télécharger ici :
http://www.microsoft.com/downloads/details.aspx?FamilyId=0BAF2B35-C656-4969-ACE8-E4C0C0716ADB&displaylang=en
Lancez le téléchargement de "PSDK-x86.exe" si vous avez un processeur x86.
Une "Genuine Validation" est obligatoire.
Je ne donne pas les étapes d'installation, elles sont presque identiques
à l'installation du Windows SDK 6.1. Choisissez une installation de type "Custom", en effet
nous allons seulement installer le "Microsoft Windows Core SDK" et le "Microsoft DirectShow SDK".
Pourquoi installer le "Microsoft DirectShow SDK" me direz-vous, puisque nous l'avons
installé avec le "Windows SDK 6.1" ?
Tout simplement parce qu'il contient un outil quasiment indispensable dans le développement
d'application DirectShow. Je veux bien sûr parler de "GraphEdit". Dans le Windows SDK 6.1,
il est remplacé par "TopoEdit", mais cet outil est limité à l'architecture de "Media Foundation".
Le prochain tutorial est d'ailleurs consacré à l'utilisation de GraphEdit.
4. Compilation de "BaseClasses"▲
Les "BaseClasses" contiennent un ensemble d'en-têtes et de librairies indispensables au développement
d'applications DirectShow.
Voici les étapes de compilation :
- Lancez Visual C++.
Si vous êtes sous Vista, je vous conseille de lancer Visual C++ avec des droits d'administrateur : clic droit sur l'icône de Visual C++ puis "Exécuter en tant qu'Administrateur".
- Ouvrez le projet "BaseClasses.sln", il se trouve dans le répertoire d'installation de Windows SDK 6.1 :
"C:\Program Files\Microsoft SDKs\Windows\v6.1\Samples\Multimedia\DirectShow\BaseClasses\"
- Compiler le projet en mode Debug et Release.
5. Paramétrage de l'IDE▲
Il va maintenant nous falloir indiquer à l'IDE où se trouvent les en-têtes et les librairies des SDK.
Voici les étapes de paramétrage de Visual C++ :
- Clic gauche sur l'onglet "Outils" puis clic gauche sur "Options...".
Une fenêtre Options s'ouvre alors.
- Clic gauche sur "Projets et Solutions" puis clic gauche sur "Répertoires de VC++".
- En haut à droite, vous avez "Affichez les répertoires pour :".
- Sélectionnez "Fichiers Include"
- Ajoutez comme répertoire :
"C:\Program Files\Microsoft SDKs\Windows\v6.1\Samples\Multimedia\DirectShow\BaseClasses"
"C:\Program Files\Microsoft Platform SDK\Include\atl" Pour les CComPtr.
- Sélectionnez "Fichiers Bibliothèques"
- Ajoutez comme répertoire :
"C:\Program Files\Microsoft SDKs\Windows\v6.1\Samples\Multimedia\DirectShow\BaseClasses\Debug"
"C:\Program Files\Microsoft SDKs\Windows\v6.1\Samples\Multimedia\DirectShow\BaseClasses\Release"
Voilà, nous allons pouvoir commencer à compiler des applications DirectShow.
6. L'en-tête standard▲
Pour compiler les applications DirectShow, nous allons utiliser un en-tête qui sera
toujours le même. Nous allons aussi utiliser les en-têtes précompilés.
Les deux fichiers pour l'en-tête précompilé sont "stdafx.h" et "stdafx.cpp".
//--------------------------------------------------------------------------------------
// stdafx.h
//--------------------------------------------------------------------------------------
#ifndef STDAFX_H
#define STDAFX_H
#pragma once
#define WIN32_LEAN_AND_MEAN
#define STRICT
#define _WIN32_WINNT 0x0501
#ifdef _DEBUG
#pragma comment(lib,
"strmbasd"
)
#else
#pragma comment(lib,
"strmbase"
)
#endif
#pragma warning(push)
#pragma warning(disable : 4995 4996)
#include
<streams.h>
#include
<atlbase.h>
#pragma warning(pop)
#endif
//----------------------------------------------------------------------------------------------
// stdafx.cpp
//----------------------------------------------------------------------------------------------
#include
"stdafx.h"
J'utiliserai toujours ces deux fichiers. Ceci nécessitera d'inclure dans tous les fichiers
sources (.cpp), le fichier "stdafx.h".
Pour configurer le projet avec l'en-tête précompilé :
- Clic gauche sur l'onglet "Projet" puis clic gauche sur "Propriétés de...".
- Dans les propriétés de configuration, déroulez "C/C++".
- Clic gauche sur "En-têtes précompilés".
- Dans "Création/utilisation d'un en-tête précompilé", choisissez "Utiliser un en-tête précompilé (/Yu)".
- Ensuite dans l'explorateur de solutions, clic droit sur "stdafx.cpp".
- Clic gauche sur "Propriétés", puis déroulez "C/C++".
- Clic gauche sur "En-têtes précompilés".
- Dans "Création/utilisation d'un en-tête précompilé", choisissez "Créer un en-tête précompilé (/Yc)".
Il faudra répéter cette opération pour chaque nouveau projet.
7. Erreurs de compilation▲
Lors de votre première compilation d'un projet, deux erreurs vont apparaître.
La première concernera le fichier "RefClock.h" des BaseClasses. Au début de ce
fichier, il faudra mettre : #include "Schedule.h", à la place de l'include avec les crochets.
La deuxième concernera "atlthunk.lib" lors de l'édition de lien. Cette
bibliothèque est inutile, nous allons donc la retirer du projet.
- Clic gauche sur l'onglet "Projet" puis clic gauche sur "Propriétés de...".
- Dans les propriétés de configuration, déroulez "Editeur de liens".
- Clic gauche sur "Entrée".
- Dans "Bibliothèque spécifique ignorée", ajoutez atlthunk.
Pour cette deuxième erreur, il faudra répéter l'opération pour chaque nouveau projet.
8. Conclusion▲
Vous voici prêt à développer des applications DirectShow.
Si vous rencontrez des difficultés d'installation où de paramétrage,
n'hésitez pas à consulter les différents liens qui concernent chaque SDK.
Vous pouvez aussi poster sur le forum DirectX ici :
https://www.developpez.net/forums/forumdisplay.php?f=52
Bien évidemment, vous pouvez utiliser d'autres compilateurs et d'autres SDK.
Mais vous risquez de rencontrer des problèmes de compilation, souvent à cause de
l'adaptation des compilateurs aux normes C++.
La compatibilité est approximativement celle-ci:
- Visual C++ 2003 -> "DirectX 9.0 SDK Update (February 2005) Extras".
- Visual C++ 2005 -> "Microsoft Windows Server 2003 R2 Platform SDK".
- Visual C++ 2008 -> "Windows SDK 6.1".
Le "DirectX 9.0 SDK Update (February 2005) Extras" est intéressant à posséder, dans le sens où c'est celui qui contient le plus de samples, et ceux-ci sont presque tous accompagnés d'un fichier texte explicatif. Je le conserve toujours à titre de consultation.