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,就正常工作了.

请教高手,有可能是哪里出现的问题啊?
...全文
171 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
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()函数里面.

2,553

社区成员

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

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