0

如何在 gstreamer 元素/插件中找到内存泄漏问题?如何分析内存/对象泄漏/引用计数的 gst 引用计数?有什么例子吗?我正在使用appsrc 和appsink 将缓冲区推入和拉出gstreamer 管道。这些元素似乎存在一些内存问题。我有将数据提供给管道的实时源,通常要在 appsrc 和 appsink 上为实时源设置哪些属性?谢谢-opensid

4

3 回答 3

0

您可以使用 valgrind (memcheck) 或 asan (address sanitizer) 等工具来检查此类问题。Refcount 问题很难找到。

于 2013-04-18T16:42:16.140 回答
0

如果您使用的是 AppSrc 示例,那么有一个相当简单的解决方案就是将 Gst.Buffer 分配包装在 using 语句中。

EG 改变以下方法

static void PushAppData (object o, Gst.App.NeedDataArgs args) {
  ulong mseconds = 0;
  if (appsrc.Clock != null)
    mseconds = appsrc.Clock.Time / Clock.MSecond;
  Gst.Buffer buffer = DrawData (mseconds);
  appsrc.PushBuffer (buffer);
}

对此

static void PushAppData (object o, Gst.App.NeedDataArgs args) {
  ulong mseconds = 0;
  if (appsrc.Clock != null)
    mseconds = appsrc.Clock.Time / Clock.MSecond;
  using(Gst.Buffer buffer = DrawData (mseconds))
    appsrc.PushBuffer (buffer);
}

以前我的这个示例会在 <30 秒内崩溃。现在它一直运行,直到我杀死它。

于 2014-07-09T03:42:48.363 回答
0

尝试使用Valgrind 工具

看到这个样本: http ://cs.ecs.baylor.edu/~donahoo/tools/valgrind/

于 2016-03-15T11:14:21.477 回答