首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在线程中创建DirectShow图

在线程中创建DirectShow图
EN

Stack Overflow用户
提问于 2014-03-11 07:12:43
回答 1查看 1.1K关注 0票数 2

我有一个图表,需要很长时间来创建和准备(5-10秒)。为了避免冰冻,我决定用线程创建我的图形,但是发生了一些奇怪的事情。在调试过程中运行图形之后;当我在线程中时,我可以在窗口中看到视频。但是当线程结束时,视频就消失了。我在全球范围内定义了关于我的图表的一切。在单独的线程中创建一个图形有什么问题?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-11 07:43:40

在侧线程中创建图形是可能的,这是一个可行的方案。然而,仅凭这一信息还不足以可靠地解释症状。由于你有视频,你应该有视频渲染过滤器,尤指。以窗口模式运行。如果它在这个后台线程上创建了一个窗口,那么该窗口期望线程是活动的,甚至更多的是,您将在这个线程上传递窗口消息。这意味着,您不能在运行图形之后立即退出。

由于windows (可能包括过滤器可能为自己的需要创建的内部窗口),因此在STA线程上创建筛选图更安全。这可以是一个侧STA线程,你在上面创建图形,你保持它的活力,直到你破坏图形,你运行一个消息循环,在此期间。注意,有一个版本的Fitler图形管理器适合于此场景:

CLSID_FilterGraphNoThread在应用程序的线程上创建Filter。如果使用此CLSID,则调用CoCreateInstance的线程必须有一个消息循环来分发消息;否则,可能会出现死锁。此外,在应用程序线程退出之前,它必须释放和所有图形对象(例如过滤器、引脚、引用时钟等)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22318769

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档