Gstreamer元素内存泄漏

时间:2013-04-18 01:24:34

标签: memory-leaks gstreamer

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

3 个答案:

答案 0 :(得分:0)

您可以使用valgrind(memcheck)或asan(地址清理程序)等工具来检查此类问题。 Refcount问题很难找到。

答案 1 :(得分:0)

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

E.G。更改以下方法

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秒内崩溃。现在它一直运行直到我杀了它。

答案 2 :(得分:0)