【问题标题】:Gstreamer elements memory leakGstreamer 元素内存泄漏
【发布时间】:2013-04-10 23:30:11
【问题描述】:

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

【问题讨论】:

    标签: memory-leaks gstreamer


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      例如改变如下方法

      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);
      }
      

      以前我的这个示例会在

      【讨论】:

        【解决方案3】:

        【讨论】:

          猜你喜欢
          • 2015-02-15
          • 2017-01-15
          • 2012-02-17
          • 1970-01-01
          • 2012-05-14
          • 2011-09-16
          • 2017-12-03
          • 2012-02-20
          • 1970-01-01
          相关资源
          最近更新 更多