老出这个错误提示:未找到可用于建立连接的介质筛选器组合,高手来看一下
我写了一个一进一出的Filter,Filter重CBaseFilter继承,实现了三个方法:1,GetPin。2,GetPinCount。3,FindPin。
输出Pin是从TBCBaseOutputPin继承,实现了三个方法: 1,CheckMediaType。2,GetMediaType。3,DecideBufferSize。
输入Pin 是从TBCBaseInputPin继承,实现CheckMediaType。
先说输入Pin 的CheckMediaType实现:什么没有做就是返回S_ok.
在说说输出Pin的CheckMediaType实现:
if IsEqualGUID(mtIn.majortype, MEDIATYPE_Audio ) and IsEqualGUID(mtIn.subtype,MEDIASUBTYPE_WAVE) then
result := S_OK
else result := S_FALSE;
比较提供的媒体类型的majortype是不是等于MEDIATYPE_Audio,subtype是不是等于MEDIASUBTYPE_WAVE
GetMediaType的实现
ASSERT((Position = 0) or (Position = 1));
if(Position = 0) then
begin
MediaType.majortype := MEDIATYPE_Audio; //majortype 赋值为MEDIATYPE_Audio
MediaType.Subtype := MEDIASUBTYPE_WAVE; //Subtype 赋值为MEDIASUBTYPE_WAVE
result := S_OK;
exit;
end;
result := VFW_S_NO_MORE_ITEMS;
3,DecideBufferSize的实现
本Filter跟上一级Filter商议好了的管理器的属性 。我把这个属性直接设置给输出Pin提供的内存管理器
现象是:我写的这个中间Filter,输入Pin 可以正常的连接上一级Filter,当是输出Pin不能连接下一级Filter, 老出这个错误提示:未找到可用于建立连接的介质筛选器组合。为什么。高手指点我的哪个
函数重载有错误