关于创建一个输入端和两个输出端遇到问题的解决

问题是这样的,我要创建一个输入端和两个输出端的Filter,我根据DirectShow中的CTransformFilter类似的方法来改写,先做了一个输入和输出端的Filter,视频都播放成功。做一个输入和两个输出端的时候,我的第二个输出端的代码是直接拷贝第一个输出端代码来完成的,只是改了类名.这时两个输出端都连接上,但运行的时候,遇到在Receive(IMediaSample *pSample)函数中的hr = m_pOutput->m_pInputPin->Receive(pOutSample)这段代码中就卡在哪里了,不能继续运行下去.最后在网上请教别人,得到下面的答案,故记录下来。

 

嗯,这样是会有问题的,解决方法有两种。
一种是用COutputQueue来传递数据,具体操作可以参考inftee的例子。
还有一种方法就是重载filter的GetState.
STDMETHODIMP CVideo::GetState(DWORD dwMSecs, __out FILTER_STATE *State)
{
 CheckPointer(State, E_POINTER); 
 *State=m_State; 
 if(m_State==State_Paused){ 
return VFW_S_CANT_CUE; 
 }else{ 
return S_OK; 
 } 
}

我采取的第二种方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值