2013-04-18 185 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秒崩潰。現在它運行,直到我殺了它。