Changer les paramètre d'un filtre directshow sans utiliser la page de propriété [Résolu]

Messages postés
29
Date d'inscription
dimanche 8 juin 2003
Statut
Membre
Dernière intervention
16 janvier 2013
- - Dernière réponse : oeildedinde
Messages postés
29
Date d'inscription
dimanche 8 juin 2003
Statut
Membre
Dernière intervention
16 janvier 2013
- 12 mars 2011 à 13:04
Bonjour,
Je cherche à modifier les paramètres d'un filtre directshow depuis une application faite en c++ express. Le filtre en question est une modification du filtre EZRGB24 de la sdk. Je voudrai pouvoir passer d'un effet vidéo à l'autre sans utiliser la page de proprieté du filtre.
Quelqu'un saurait il comment il faut s'y prendre?
J'ai cherché sur google et la MSDN sans rien trouver.
Afficher la suite 

5 réponses

Meilleure réponse
Messages postés
29
Date d'inscription
dimanche 8 juin 2003
Statut
Membre
Dernière intervention
16 janvier 2013
3
Merci
Bon ca marche.
Le problème n'a rien à voir avec la variable que j'ai cité ci-dessus.
C'etait un problème d'instance. Mon application n'appelait pas le filtre chargé dans le graphe mais une autre instance de celui-ci.
La solution est donc:


HRESULT wPlayer::changeEffect(int nBr)
{

IBaseFilter *mytransform = NULL;
HRESULT hr = m_pGraph->FindFilterByName(L"eZrgb24", &mytransform);

if (SUCCEEDED(hr))
{
doChange(mytransform);
}

SafeRelease(&mytransform);

return -1;

}


HRESULT wPlayer::doChange(IBaseFilter *pFilter, int val)
{

IIPEffect *ieffect;
if( !pFilter )
{
return E_POINTER;
}

HRESULT hr = pFilter->QueryInterface(IID_IIPEffect,(void**)&ieffect);

if (SUCCEEDED(hr))
{
hr = ieffect->put_IPEffect(val);
}

SafeRelease(&ieffect);

return hr;
}

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 191 internautes nous ont dit merci ce mois-ci

Commenter la réponse de oeildedinde
Messages postés
1466
Date d'inscription
vendredi 2 janvier 2004
Statut
Modérateur
Dernière intervention
14 février 2014
1
0
Merci
salut,

Tu as essayé de rechercher en anglais ?
Peut-être cette discussion pourrait t'aider.


@++
Commenter la réponse de cs_patatalo
Messages postés
29
Date d'inscription
dimanche 8 juin 2003
Statut
Membre
Dernière intervention
16 janvier 2013
0
Merci
Salut,

Oui j'ai essayé de chercher en anglais. Il y a pas beaucoup d'info en francais. J'ai jeté un oeil sur le lien que tu m'as donné, et j'ai pas trouvé ce que je cherche. En même temps je débute un peut en c++, peut être qu'un truc m'a échapé. En tout cas, merci d'avoir essayé de m'aider.
Commenter la réponse de oeildedinde
Messages postés
29
Date d'inscription
dimanche 8 juin 2003
Statut
Membre
Dernière intervention
16 janvier 2013
0
Merci
J'ai testé ca, il y a pas d'erreur, mais ca marche pas.

/////////////////////////////////////////
IIPEffect *m_pIPEffect;
HRESULT hr1 = CoCreateInstance(CLSID_EZrgb24, NULL, CLSCTX_INPROC_SERVER, IID_IBaseFilter , (void **)&m_pIPEffect);
if(SUCCEEDED(hr1))
{
m_pIPEffect->put_IPEffect(1011);
}
return -1;
///////////////////////////////////////////

(J'ai inclu une copie du header IeZ.h pour la fonction put_effect)
la fonction put_effect n'a qu'un parametre (elle à été modifiée dans le filtre ezrgb24 et dans le header)
Commenter la réponse de oeildedinde
Messages postés
29
Date d'inscription
dimanche 8 juin 2003
Statut
Membre
Dernière intervention
16 janvier 2013
0
Merci
Du nouveau.

Mon application declanche bien la fonction (du filtre ezrgb24):
STDMETHODIMP CEZrgb24::put_IPEffect(int IPEffect)
En y mettant un messagebox, celui-ci apparait bien.

le hic c'est que malgré que la variable "m_effect", prenne la bonne valeur, aucun effet ne change. Cela est peut être du au fait que cette variable soit définie à la fois dans le fichier "ezprop.h" et dans "ezrgb24.h". Enfin bon, je continue à chercher.
Commenter la réponse de oeildedinde