我写一个Filter(从CTransInPlaceFilter),两个输入Pin(一个是CTransInPlaceFilter自带的,一个是重载CBaseInputPin的),为什么重载的哪个Pin

zhujiannihao123 2006-06-20 02:35:40
具体说说这个继承 Pin 的实现:
重载了5个函数 CheckMediaType,BeginFlush, EndFlush,EndOfStream,Receive
下面是实现:
CheckMediaType(mtIn: PAMMediaType): HRESULT//直接返回S_OK,没有其他的实现.
BeginFlush: HRESULT;//直接继承了父类的BeginFlush,没有其他的实现.
EndFlush: HRESULT;//同样也是继承了父类的EndFlush.
EndOfStream: HRESULT;// 调用了 Result := checkstreaming;没有其他的实现.
function Receive(pSample: IMediaSample): HRESULT;//直接把Sample交给Filter去处理.

实验结果是: 我在GraphEdit中手动的把几个Filter和本Filter连接.连接正常.
但是在程序中,把其他Filter的输出Pin,和重载了CBaseInputPin的Pin连接,老是连不上.(也是同样的Filter在GraphEdit中手动连接正常),我在程序中跟踪到已经找到了重载了CBaseInputPin的Pin的地址.

请问是我的重载函数有错误吗?请高手指点.
...全文
273 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhujiannihao123 2006-06-24
  • 打赏
  • 举报
回复
我的问题我也找到了,谢谢大家支持。我在Filter中Create两次我那个重载的Pin(出现了两个实例),所以我在程序中c重载Pin连接其他Filter时,明明显示连接上了,但是没有图象显示。
zhujiannihao123 2006-06-24
  • 打赏
  • 举报
回复
我也知道,但是我实验过CTransformFilter挂两个输入Pin 可以工作,只是重载几个函数如:Getpin,findPin.就可以了。
vanalan 2006-06-23
  • 打赏
  • 举报
回复
从M&的SDK中摘录的内容
The CTransformFilter class is a base class for implementing transform filters. This class is designed for implementing a transform filter with one input pin and one output pin.

所以如果你需要两个输入pin的话
不要继承CTransformFilter
vanalan 2006-06-23
  • 打赏
  • 举报
回复
记得M$的SKD中说
从CTransformFilter继承的filter只能有一个输入pin和一个输出pin
zhujiannihao123 2006-06-21
  • 打赏
  • 举报
回复
大家指点一下了
zhujiannihao123 2006-06-21
  • 打赏
  • 举报
回复
楼上两位说的有道理。但是怎么样才可以输入媒体类型啊,谢谢指教
king820802 2006-06-21
  • 打赏
  • 举报
回复
连不上,看看为什么!
把两个pin的类型都输出看看,不就知道了。
xjkiller 2006-06-21
  • 打赏
  • 举报
回复
估计是两个pin的类型没有匹配吧?
zhujiannihao123 2006-06-20
  • 打赏
  • 举报
回复
不是我小气.是系统不要
zhujiannihao123 2006-06-20
  • 打赏
  • 举报
回复
up

2,543

社区成员

发帖
与我相关
我的任务
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
  • 多媒体/流媒体开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧