[DirectShow] problème lorsque je détruit mon graphe

problème lorsque je détruit mon graphe [DirectShow] - C++ - Programmation

Marsh Posté le 18-01-2004 à 14:27:43    

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 :
  1. inline void clearInterfaces()
  2. {
  3.             pMediaControl->Stop();
  4.             if(pGraph != NULL)         
  5.             {
  6.                pGraph->RemoveFilter(pVideoCapture);
  7.                pGraph->RemoveFilter(pmonfiltre);
  8.                pGraph->RemoveFilter(pVideoRenderer);
  9.                pGraph->Release();
  10.                pGraph = NULL;
  11.             };
  12.     if(pVideoCapture)   { pVideoCapture->Release(); pVideoCapture = NULL; };
  13.     if(pmonfiltre) { pmonfiltre->Release(); pmonfiltre = NULL; };
  14.     if(pVideoRenderer)  { pVideoRenderer->Release(); pVideoRenderer = NULL; };
  15.     if(pMediaControl)   { pMediaControl->Release(); pMediaControl = NULL; };
  16.              if(pMediaEventEx)   { pMediaEventEx->Release(); pMediaEventEx = NULL; };
  17.     bConnected = false;
  18. }


 
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...  

Reply

Marsh Posté le 18-01-2004 à 14:27:43   

Reply

Marsh Posté le 22-01-2004 à 02:29:42    

Ah tiens, je me sens moins pourri : j'ai aussi cette erreur
avec le meme nombre d'objets restés actifs (et je ne prends
pas la peine de RemoveFilter).
 
Si quelqu'un a une reponse ...


Message édité par cnstrnd le 22-01-2004 à 02:47:40
Reply

Marsh Posté le 24-01-2004 à 05:01:36    

Tiens, toi qui m'a l'air calle sur DirectShow tu vas pouvoir m'aider (desole de te pourrir ton topic mais comme t'as pas de reponse ca peut aussi te servir de up :D).
 
J'aimerais afficher une frame tres precise d'un film. Pour pas m'emmerder, je monte mon graph, je vais a la frame demande et je fais un petit
pMediaControl->Run();
suivi de :
pMediaControl->Stop();
 
Evidemment ca n'affiche rien (pas le temps?) et je me dis que faire un Sleep(10) n'est pas n'ont plus la meilleure des solutions. Connais tu LA solution par hasard?
Merci et bonne chance pour ton prb!


---------------
Horizon pas Net, reste à la buvette!!
Reply

Marsh Posté le 24-01-2004 à 09:06:48    

faut pas plutôt faire un pMediaControl->Pause(); ?  :)


Message édité par cricri_ le 24-01-2004 à 09:09:53
Reply

Marsh Posté le 24-01-2004 à 14:21:28    

Willyzekid, je ne connais pas trop ce domaine de DirectShow, c'est tellement vaste..
 
Par contre si tu cherche a modifier un film avec des algos que tu as fais il vaut mieux créer un filtre de transformation, plutot que de vouloir récupérer trame par trame et faire le traitement sur chacune...
 
Bon alors personne n'a de réponse a mon probleme ?   :jap:

Reply

Marsh Posté le 24-01-2004 à 14:58:48    

bon si y'en a qui lisent couremment le japonais ou je ne sais pas ce que c'est comme langue, peut etre vous pourrez m'aider, je cois que ça parle de mon probleme sur ce lien :
 
http://pc2.2ch.net/test/read.cgi/s [...] 40/361-460

Reply

Marsh Posté le 24-01-2004 à 20:01:25    

Tu lis ce qu'on écrit ???

Reply

Marsh Posté le 24-01-2004 à 21:08:30    

Cricri_ a écrit :

Tu lis ce qu'on écrit ???


 
??
 
Ok pour moi Cricri, je me suis leve ce matin avec la meme idee et evidemment ca marche. Ca tombe bien parce que je me voyais aml passer ma journee de lundi sur DirectShow.
Pour juldjin, j'ai pas d'idee mais sur le site japonais (avec mes vieilles notions), ils ont juste un probleme (le meme que le tien) avec une erreur de WMP avec leur filtre....whatever that means :) Cela ne viendrait-il pas du filtre? Mais bon, comme directX j'y connais queue dalle!


---------------
Horizon pas Net, reste à la buvette!!
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed