如何确保在关闭 DirectShow 过滤器图表时 Sample Grabber 过滤器不会生成更多回调?

发布于 2024-12-18 12:22:39 字数 211 浏览 2 评论 0原文

我有一个使用 DSPACK 组件库用 Delphi 6 编写的 DirectShow 应用程序。当我关闭过滤器图表(停止播放)时,由于在拥有回调方法的对象被销毁之后发生来自 Sample Grabber DirectShow 过滤器的回调,因此出现访问冲突。这种情况并非每次都会发生,但相当频繁。有人可以向我指出一个代码示例或文档,告诉我关闭图表所需的步骤,以确保所有待处理的示例抓取器回调均已收到或消除吗?

I have a DirectShow application written in Delphi 6 using the DSPACK component library. When I shut down my filter graphs (stop play), I get an access violation due to a callback from the Sample Grabber DirectShow filter occurring after the object that owns the callback method has been destroyed. It doesn't happen every time, but fairly often. Can someone point me to a code sample or document that tells me the steps I need to take to shut down my graphs in a way that that makes sure all pending Sample Grabber callbacks have been received or eliminated?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

甜警司 2024-12-25 12:22:40

在停止/释放过滤器图之前发出 ISampleGrabber::SetCallback(NULL, ...) 怎么样?

更重要的是,您可以设置一个指示终止的内部标志,并在必须执行的回调中检查它立即返回,无需进一步处理。

What about issuing ISampleGrabber::SetCallback(NULL, ... prior to stopping/releasing the filter graph?

More to this, you can set an internal flag indicating termination and check it in the callbacks you have to immeditely return without further processing.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文