Bonjour à tous,
voila j'ai fait une application qui crée un graphe manuellement (avec IGraphBuilder), je crée mon filtre de capture, j'ajoute mon filtre de transformation et j'utilise le filtre "Video Renderer" pour afficher, je connecte le tout et ça marche parfaitement bien. Mais quand je quitte l'application et que je libère mes interfaces j'ai droit au message d'erreur suivant :
"Executable test.exe Pid .. Tid .. Module monfiltre.ax, 6 objects left active! At line 313 of C:\DXSDK\samples\multimedia\DirectShow\BaseClasse\dllentry.cpp Continue ?"
voila ma fonction qui libère les interfaces :
Code :
- inline void clearInterfaces()
- {
- pMediaControl->Stop();
- if(pGraph != NULL)
- {
- pGraph->RemoveFilter(pVideoCapture);
- pGraph->RemoveFilter(pmonfiltre);
- pGraph->RemoveFilter(pVideoRenderer);
- pGraph->Release();
- pGraph = NULL;
- };
- if(pVideoCapture) { pVideoCapture->Release(); pVideoCapture = NULL; };
- if(pmonfiltre) { pmonfiltre->Release(); pmonfiltre = NULL; };
- if(pVideoRenderer) { pVideoRenderer->Release(); pVideoRenderer = NULL; };
- if(pMediaControl) { pMediaControl->Release(); pMediaControl = NULL; };
- if(pMediaEventEx) { pMediaEventEx->Release(); pMediaEventEx = NULL; };
- bConnected = false;
- }
|
pour info j'utilise Dx 8.1, j'ai fais mon filtre sur VC++ avec un appWizard créé pour simplifier cette tâche, et mon appli tourne sur BC++ (j'ai converti les .lib de DirectShow).
J'ai testé mon filtre avec graphEdit, il marche nickel je n'ai jamais eu d'erreur. Mais depuis que j'ai fait mon application et que j'ai eu ces messages d'erreur, lorsque je connecte manuellement dans graph edit mon filtre avec le Video Renderer, j'ai 5-6 filtres du nom de monfiltre0001, monfiltre0002, monfiltre0003 qui viennent s'intercaler... alors qu'avant rien, je pense qu'il y a un lien avec mon probleme.
Bon je crois avoir tout dis, si vous avez déjà eu ce probleme, ou si vous pensez pouvoir m'aider, ben je vous en remercie d'avance...