2013-04-18 144 views
0

如何在gstreamer元素/插件中查找内存泄漏问题?如何分析内存/对象泄漏/ refcount的gst refcount?任何例子? 我正在使用appsrc和appsink来往和从gstreamer管道中拖放缓冲区。似乎这些元素存在一些内存问题。我有将数据提供给流水线的实时源,通常在实时源的appsrc和appsink上设置哪些属性? Thanks-opensidGstreamer元素内存泄漏

回答

0

您可以使用像valgrind(memcheck)或asan(address sanitizer)这样的工具来检查这些问题。 Refcount问题很难找到。

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