码迷,mamicode.com
首页 > 其他好文 > 详细

gstreamer的一些debug经验

时间:2018-02-04 22:54:54      阅读:1366      评论:0      收藏:0      [点我收藏+]

标签:deb   pipeline   父类   uri   ram   get   als   切换   gpo   

gstreamer使用不当,很容易引起内存泄漏。以下是注意事项:

1、gst_element_get_name

使用g_free释放name,并设为null

2、g_io_channel_read_line

g_free释放line,并设为null

3、gst_structure_to_string/gst_caps_to_string

g_free释放返回值,并设为null

4、g_filename_to_uri

g_free释放返回值,并设为null

5、gst_pad_get_name/gst_omx_video_find_nearest_frame

不使用时,需要做unref

6、gst_bus_add_watch

返回的watchid占用source资源,有两种释放方式:

1)callback函数返回FALSE,让gstreamer自动释放

2)主动调用g_source_remove释放;根据经验,只有当handle message函数收到pipeline切换到NULL state后,调用g_source_remove释放资源才有效

7、g_timeout_add

timer资源通常采用callback函数返回FALSE,让gst自动释放

8、gst_pad_get_peer

返回的object,带有ref,因此需要gst_object_unref释放

9、gst_buffer_map

此函数会对buffer做ref,因此需要调用gst_buffer_unmap

10、子类重载父类的dispose,因此在子类调用结束时调用父类的dispose函数,G_OBJECT_CLASS(parent_class)->dispose(object)

11、g_object_get获得GstElement类型变量时,会对返回的element做ref操作,因此elment不再使用时,调用gst_object_unref

gstreamer的一些debug经验

标签:deb   pipeline   父类   uri   ram   get   als   切换   gpo   

原文地址:https://www.cnblogs.com/green-crosswalk/p/8414134.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!