大家好,请问DirectShow中transform Filter和主程序之间如何传递参数,非常急,请大家帮帮忙!我正在写一个transform Filter,这个Filter需要从主程序获取一些信息。
谢谢了。
------解决方案--------------------------------------------------------
像设置类的属性那样!!
------解决方案--------------------------------------------------------
filter暴露接口。
如:(filter的名字为TestFilter)
在ITestFilter文件里,
写几个接口:
DECLARE_INTERFACE_(ITestFilter, IUnknown)
{
STDMETHOD(SetParameter) (THIS_
const char * inName, const char *inValue
) PURE;
STDMETHOD(StartVideo)(THIS_
const int inIsVideo, const int inIsAudioUp, BOOL cifd1
) PURE;
STDMETHOD(BeginRecord)(THIS_
const char * inFileName
) PURE;
STDMETHOD(EndRecord) (THIS_
) PURE;
};
在TestFilter.h和TestFilter.cpp声明和实现它们。
然后在directshow里,
IBaseFilter *pFilter = m_pTestSourceFilter-> GetFilter();
ITestFilter *pTestFilter = NULL;
pFilter-> QueryInterface(IID_ITestFilter, (void **)&pTestFilter);
pTestFilter-> StartVideo(1, 0, cifd1);
pFilter-> Release();