100分紧急求助,Render Filter的问题

yongziqd 2011-11-30 10:58:37
我在写一个RenderFilter基本框架时参考Dump,可是我在GraphEdit上Run的时候,提示如下:
"The graph could not change state.
本次操作中至少连接了一个插针.(Return Code:0x80040204)."

链路如下:
SourceFilter(自己写的,推模式,读取一个文件并发送给解码器)--->ATI Decoder(调用了显卡的解码Filter)--->RenderFilter.

如果把自己写的RenderFilter换成系统的Render,没有问题,能正常播放.

Run了出现这个提示之后,我把Decoder和Render的连线去掉,重新连上,然后再run,就正常工作了.

请教高手,有可能是哪里出现的问题啊?
...全文
96 点赞 收藏 7
写回复
7 条回复
hyh0512h 2011年12月02日
媒体类型改变了吧,
1。你先连接 source->decoder->MyRenderFilter,看输入PIN的数据格式,(别RUN啊)
2. 你再新连接 source->decoder->RenderFilter, 看输入PIN的数据格式,然后RUN,再看输入PIN的格式有否变化.
如果确实是输入格式有变化,且数据分辨率有所增加,看这个贴子的回复,有解决方法.
http://topic.csdn.net/u/20111002/18/212ab388-3ec3-4fde-bc85-8e7f42801ee2.html?seed=284999558&r=76742359#r_76742359
回复 点赞
yongziqd 2011年12月02日
正解!
确实时媒体类型的原因.
多谢!
[Quote=引用 6 楼 hyh0512h 的回复:]

媒体类型改变了吧,
1。你先连接 source->decoder->MyRenderFilter,看输入PIN的数据格式,(别RUN啊)
2. 你再新连接 source->decoder->RenderFilter, 看输入PIN的数据格式,然后RUN,再看输入PIN的格式有否变化.
如果确实是输入格式有变化,且数据分辨率有所增加,看这个贴子的回复,有解决方法.
http://topic……
[/Quote]
回复 点赞
yongziqd 2011年12月01日
都没有...
[Quote=引用 3 楼 rageliu 的回复:]

看看有没有进Pause.Run.BeginFlush.NewSegment等
[/Quote]
回复 点赞
rageliu 2011年12月01日
看看有没有进Pause.Run.BeginFlush.NewSegment等
回复 点赞
yongziqd 2011年12月01日
终于测通了.
连接Filter链路的时候,先不连RenderFilter,先把Source和Decoder加入graph,然后run.
这时开始发送数据.
过个几秒钟,调用Stop(),然后再把Render连接进去,再Run,这样Render就能接收到数据了.
有人直到这是为什么吗?
[Quote=引用 3 楼 rageliu 的回复:]

看看有没有进Pause.Run.BeginFlush.NewSegment等
[/Quote]
回复 点赞
yongziqd 2011年11月30日
Input Pin继承自CBaseInputPin
Filter继承自CBaseFilter
回复 点赞
yongziqd 2011年11月30日
补充一点,调试的时候,根本进不了Input Pin的Receive()函数里面.
回复 点赞
发动态
发帖子
多媒体/流媒体开发
创建于2007-08-27

2054

社区成员

2.0w+

社区内容

专题开发/技术/项目 多媒体/流媒体开发
社区公告
暂无公告