推模式Source Filter的一个问题

vcbacker 2004-08-06 02:06:06
在FillBuffer函数中,如果没有新数据要发送返回什么值?因为有的时候fillbuffer函数调用太快,新数据来不及产生,
现在用的方法是重载了DoBufferProcessingLoop函数,代码是复制了CSourceStream类的,只是让FillBuffer在没有新数据时返回一个自定义的值,如果是这个值,就goto到FillBuffer(pSample)这一句去,继续处理,
但是这样做可能是造成graph停止时死锁的原因之一,
有没有更好的方法来处理这种问题?
...全文
73 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
vcbacker 2004-08-06
  • 打赏
  • 举报
回复
faint!结了贴子怎么成这样了,csdn好多bug
vcbacker 2004-08-06
  • 打赏
  • 举报
回复
呵呵,原来如此阿!

多谢!
happydeer 2004-08-06
  • 打赏
  • 举报
回复
明白了这一点,我想你应该有解决方法了吧:)
happydeer 2004-08-06
  • 打赏
  • 举报
回复
在DoBufferProcessingLoop函数中的循环处理中,每次都要检查是否有线程命令要处理,也就是要调用CheckRequest(&com)函数。这样,才能在“graph停止”等事件发生时正确响应。

你在FillBuffer返回自定义的值后仍然跳到FillBuffer(pSample),这就跳过了CheckRequest(&com),也就是说你屏蔽了线程命令的处理过程,当然会出问题了。

2,543

社区成员

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

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