Gstreamer核心组件
文章平均质量分 66
学习笔记
李尔阳
这个作者很懒,什么都没留下…
展开
-
Core Library-GstMiniObject
当对象的refcount恰好是1,然后没有父对象或者单个父对象存在的情况下,这个对象本身是可写的,并且gst_mini_object_is_writable返回TRUE。不透明数据(无法直接赋值的数据)可以通过gst_mini_object_set_qdata和gst_mini_object_get_qdata与GstMiniObject关联。一个weak引用是能够增加和删除的,分别使用gst_mini_object_weak_ref和gst_mini_object_weak_unref。原创 2023-01-05 09:35:48 · 305 阅读 · 0 评论 -
Core Library-GstObject
我查了GInitiallyUnowned的相关资料,在gobject.h文件中从语法角度理解,GObject和GInitiallyUnowned指向的结构体是相同的,也就是两者并无区别。但是从中了解到:GInitiallyUnowned源自GObject。两者之间唯一的区别是GInitiallyUnowned的初始引用被标记为floating引用。这意味着它不被任何代码部分明确声明为“拥有”。提供floating引用的主要动机是C语言的便利性。原创 2023-01-03 21:22:54 · 530 阅读 · 0 评论 -
四、GstEvent
事件是一系列控制粒子,随着缓冲区被发送到管道的上游和下游。下游事件通知流状态相同的元件,可能的事件包括中断,flush,流的终止信号。在应用程序与元件之间的交互以及事件与事件之间的交互中,上游事件被用于改变管道中数据流的状态,如查找。 这一部分我的理解也比较浅,就无法进一步总结了。大概功能就是控制元件的上下游,但是大多是控制播放速度,这个也可以通过Application和Element交互实现,所以Event一般用到很少,我猜测大概率是在插件编写中会用到,等学到插件编写后,再回来补充这一部分。管道原创 2021-09-26 19:05:47 · 112 阅读 · 0 评论 -
三、GstPad与GstCap
1 简介 两个元素直接连接是通过Pad,数据流从一个元件的src到另一元件的sink。2 可用性Availability2.1 永久性 Always 一直存在。2.2 请求型 request 需要用户请求去创建pad。 pad = gst_element_get_request_pad (tee, "src%d"); name = gst_pad_get_name (pad); g_print ("A new pad %s was created\n", name); g_原创 2021-09-26 19:05:27 · 926 阅读 · 0 评论 -
二、GstStructure
1 简介 GstStructure是键值对的集合。这里键值对中keys是GQuarks的表示,values是Gtype的表示。struct _GstStructure { GType type; /*< private >*/ GQuark name;}; GstStructure并没有引用计数,因为它是对象的一部分,例如:GstCaps,GstMessage,GstEvent,GstQuery。2 序列化格式例如:a-structure, key = valu原创 2021-09-25 15:42:00 · 812 阅读 · 0 评论 -
一、Gstreamer总线(bus)
以下总结三种监听Bus总线消息的方式。1 Gst阻塞监听[..]bus = gst_element_get_bus (pipeline);/*阻塞,一直等到出现error和eos消息*/GstMessage * gst_bus_timed_pop_filtered (GstBus * bus, GstClockTime timeout, /*超时时间*/原创 2021-09-24 17:56:40 · 1082 阅读 · 0 评论