Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Shop Recherche
1853 connectés 

  FORUM HardWare.fr
  Programmation
  C++

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

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°614815
juldjin
Posté le 18-01-2004 à 14:27:43  profilanswer
 

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

mood
Publicité
Posté le 18-01-2004 à 14:27:43  profilanswer
 

n°618620
cnstrnd
Posté le 22-01-2004 à 02:29:42  profilanswer
 

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
n°620803
Willyzekid
Posté le 24-01-2004 à 05:01:36  profilanswer
 

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!!
n°620808
cricri_
Posté le 24-01-2004 à 09:06:48  profilanswer
 

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


Message édité par cricri_ le 24-01-2004 à 09:09:53
n°620848
juldjin
Posté le 24-01-2004 à 14:21:28  profilanswer
 

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:

n°620857
juldjin
Posté le 24-01-2004 à 14:58:48  profilanswer
 

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

n°620949
cricri_
Posté le 24-01-2004 à 20:01:25  profilanswer
 

Tu lis ce qu'on écrit ???

n°621007
Willyzekid
Posté le 24-01-2004 à 21:08:30  profilanswer
 

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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

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

 

Sujets relatifs
Problème avec un delete[][batch]petit problème
[PostgreSQL] problème d'optimisation insertion[JDBC] problème d'encodage de caractères.
problème de socket client --> bloquantes ou pasProblème de "!" dans un mail envoyé en php
[java swing] probleme de taille avec un JTextField[XML/XSL]génération d'un XML a partir d'un XML par XSL probleme
Problème install VirtualTreeViewProbleme de Charset sous Windows et pas sous Unix
Plus de sujets relatifs à : [DirectShow] problème lorsque je détruit mon graphe


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR