Remplacer un filtre par un autre sous directshow

Signaler
Messages postés
36
Date d'inscription
jeudi 16 mai 2002
Statut
Membre
Dernière intervention
6 octobre 2009
-
Messages postés
36
Date d'inscription
jeudi 16 mai 2002
Statut
Membre
Dernière intervention
6 octobre 2009
-
Bonjour,

j'aimerais remplacer un filtre (par exemple, un compresseur video comme DivX) par un autre (par exemple XviD) en cours d'execution du programme. Et ceci, sans supprimer le graphe complet et le refaire...

MSDN propose un exemple de "Dynamic Reconnection" sans même arreter le graphe, simplement en bloquant le flux d'une broche. Mais tout n'est pas claire...

ma question est donc, comment suivre ces étapes ?
1- stopper le graphe
2- déconnecter le filtre DivX
3- supprimer le filtre DivX
4- ajouter le filtre XviD
5- connecter le filtre XviD
6- relancer le graphe

merci

2 réponses

Messages postés
48
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
26 juillet 2005
3
Salut,

Est ce que tu crées ton graphe de filtres de manière automatique ou manuelle ? (i.e : utlisation de de RenderFile(), ou ajout des filtres un par un au graphe avec des AddFilter())
Messages postés
36
Date d'inscription
jeudi 16 mai 2002
Statut
Membre
Dernière intervention
6 octobre 2009

salut

je crée le graphe "a la main" :

je les ajoute avec AddFilter

GetFilterName(CLSID_VideoCompressorCategory,&pVideoCompFilter,"DivX Pro(tm) 5.1.1 Codec");
pGraph->AddFilter(pVideoCompFilter, L"Video Compression Filter");

et je les connecte avec RenderStream

pCaptureGraph->RenderStream(&PIN_CATEGORY_CAPTURE,&MEDIATYPE_Video,pVideoInputFilter,pVideoCompFilter,pAVIWriter);