gpt4 book ai didi

c++ - 使用 GstDiscoverer (GStreamer) 的段错误

转载 作者:可可西里 更新时间:2023-11-01 11:49:14 25 4
gpt4 key购买 nike

我正在使用 Qt 进行 GUI 和 GStreamer 进行音频处理,在 C++ 上为 Windows 编写桌面应用程序。

在我的应用程序中,我需要监控多个互联网 aac 音频流(如果它们在线),并收听具有最高优先级的可用流。对于此任务,我使用 GStreamer 中的 GstDiscoverer 对象,但我遇到了一些问题。

我每 1-2 秒检查一次音频流,因此经常调用 GstDiscoverer。每次我的应用程序运行时,最终它都会在 GstDiscoverer 检查期间因段错误而崩溃。

我尝试了调用 GstDiscoverer 的同步和异步方法(gst_discoverer_discover_uri(), gst_discoverer_discover_uri_async()),两者的工作方式相同。

崩溃发生在 gsttypefindfunctions.c 第 1122 行(下面第二行代码)的 aac_type_find() 函数中。

len = ((c.data[offset + 3] & 0x03) << 11) |
(c.data[offset + 4] << 3) | ((c.data[offset + 5] & 0xe0) >> 5);

在其中一次崩溃期间从调试器接收到的局部变量: enter image description here

正如我们所见,offset 变量大于 c.size,因此 c.data[offset] 超出范围,我认为这就是发生段错误的原因。这种情况不经常发生。该程序可以工作几个小时或十分钟。但在我看来,如果 GstDiscoverer 调用之间的时间间隔很小,它会更频繁地发生。因此,调用 aac_type_find() 有一定的崩溃概率。

我尝试了 GStreamer 1.6.1 和最新的 1.6.2 版本,两者都存在错误。

有人可以帮我解决这个问题吗?这是 Gstreamer 错误还是我做错了什么?

最佳答案

已向此处的 GStreamer 项目报告并合并了崩溃补丁并将在下一个版本中:https://bugzilla.gnome.org/show_bug.cgi?id=759910

关于c++ - 使用 GstDiscoverer (GStreamer) 的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34479267/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com