使用directshow自己写的一个多输入单输出的filter,遇到特别奇怪的问题,项目急需,高手请进!

ucasliming team_terminal 2012-11-26 10:20:43
由于项目需要,我参考sdk的demo中的Inftee(单输入多输出)写了一个多输入单输出的filter,在我的filter中,共有5个输入流,一个输出流,其中一个输入流是采集摄像头的,其他4个是gif图片源。我继承的CBasefilter、CBaseOutputPin、CBaseInputPin。在输入pin的Receive方法中,我做了一些处理。断点调试发现,在进入Receive方法两次之后,录像就卡住了。我是通过循环迭代产生的输入pin。代码如下:
	for (int i=0;i<EFFECT_MAX_COUNT;i++)
{
WCHAR szbuf[20];
HRESULT hr = NOERROR;
(void)StringCchPrintfW(szbuf, NUMELMS(szbuf), L"Effect%d\0", i);
pInputPin=new InsertEffectInputPin(NAME("Effect Input"),this,&hr,szbuf);
if (FAILED(hr) || pInputPin == NULL)
{
delete pInputPin;
pInputPin=NULL;
}
else
{
pInputPin->flag=i;
pInputPin->AddRef();
m_InputPinsList.AddTail(pInputPin);
}
Samplelist[i]=new MySample(NULL,FALSE);
}

这里EFFECT_MAX_COUNT=5;如果我将EFFECT_MAX_COUNT=1,传输没什么问题,这相当于自己实现了一个transform filter。所以我怀疑是不是在多输入的时候需要重载一些方法来实现同步控制之类的。当然我在自己的输入pin中已经重载了很多方法:CheckMediaType(const CMediaType *pmt);
HRESULT SetMediaType(const CMediaType *pmt);
HRESULT BreakConnect();
int GetEffectSampleCount();
IMediaSample* GetEffectSampleFromSampleList(int n);
virtual HRESULT CompleteConnect(IPin *pReceivePin);
STDMETHODIMP NotifyAllocator(IMemAllocator *pAllocator, BOOL bReadOnly);
STDMETHODIMP EndOfStream();
STDMETHODIMP BeginFlush();
STDMETHODIMP EndFlush();
STDMETHODIMP NewSegment(REFERENCE_TIME tStart,REFERENCE_TIME tStop,double dRate);
STDMETHODIMP Receive(IMediaSample *pSample);没发现什么同步控制的方法,而且我是想将其他4个输入pin传过来的sample放到一个输入pin中,然后作为一个sample传到outpin中。难道是需要在输出pin端重载什么方法??项目急需,这个问题已经困扰我好多天了,求高手指教啊!
...全文
227 点赞 收藏 4
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
rageliu 2012-11-30
不明白什么意思"重连的不断循环"??? 数据不处理和重连有什么关系?
回复
rageliu 2012-11-27
各个输入相互独立,其中4个gif的输入,不调用输出pin的方法向下传递,只是自己保存数据而已. 只用camera的输入向下游传递就可以了.在这里从其他4个保存的数据取来处理就行,比如叠加
回复
ucasliming 2012-11-27
引用 2 楼 rageliu 的回复:
各个输入相互独立,其中4个gif的输入,不调用输出pin的方法向下传递,只是自己保存数据而已. 只用camera的输入向下游传递就可以了.在这里从其他4个保存的数据取来处理就行,比如叠加
谢谢您的回复,现在又遇到另一个问题,我按您说的连接,都成功了,但是cpu使用率特别高,经过测试我觉得很有可能是因为gif的输入pin没有相应地输出pin进行处理,只是将sample数据保存起来,所以导致了重连的不断循环,占用了大量的cpu使用率,不知道您有没有遇到过这种问题?期待您的回复!
回复
ucasliming 2012-11-26
都没人做过吗,还是高手有所保留啊?
回复
相关推荐
发帖
多媒体/流媒体开发
创建于2007-08-27

2459

社区成员

专题开发/技术/项目 多媒体/流媒体开发
申请成为版主
帖子事件
创建了帖子
2012-11-26 10:20
社区公告
暂无公告