Core Library-GstMiniObject

GstMiniObject是一个基础结构,支持引用计数和内存管理。它被子类化以实现如GstBuffer、GstCaps等对象。refcount用于跟踪对象的使用,当refcount降为0时,会调用dispose和free函数。对象在refcount为1且无其他父对象时是可写的。GstMiniObject还提供了数据关联和弱引用功能,而GstObject则增加了属性和信号支持。
摘要由CSDN通过智能技术生成

GstMiniObject是一个简单的结构,可以用来实现refcounting(引用计数)类型。

子类将包含GstMiniObject作为其结构中的第一个成员,然后调用gst_mini_object_init来初始化GstMiniObject区域。

gst_mini_object_ref和gst_mini_object_unref分别递增和递减refcount。当mini-object的refcount达到0时,首先调用dispose函数,当它返回TRUE时,再调用mini-object的free函数。

可以使用gst_mini_object_copy创建副本。

当对象的refcount恰好是1,然后没有父对象或者单个父对象存在的情况下,这个对象本身是可写的,并且gst_mini_object_is_writable返回TRUE。这意味着当前调用者拥有对该对象的唯一引用。gst_mini_object_make_writable将返回对象的可写版本,当refcount不为1时,该版本可能是一个新的副本。

不透明数据(无法直接赋值的数据)可以通过gst_mini_object_set_qdata和gst_mini_object_get_qdata与GstMiniObject关联。数据是特定于特定对象的,不能用gst_mini_object_copy或类似的方法自动复制。

一个weak引用是能够增加和删除的,分别使用gst_mini_object_weak_ref和gst_mini_object_weak_unref

主要要区别GstObject和GstMiniObject。GstObject中有属性、信号,GstMiniObject没有。

typedef struct _GstMiniObject GstMiniObject;
struct _GstMiniObject {
  GType   type; /* 对象的GType类型 */

  /*< public >*/ /* with COW */
  gint    refcount;
  gint    lockstate;
  guint   flags;

  GstMiniObjectCopyFunction copy;
  GstMiniObjectDisposeFunction dispose;
  GstMiniObjectFreeFunction free;

  /* < private > */
  /* Used to keep track of parents, weak ref notifies and qdata */
  guint priv_uint;
  gpointer priv_pointer;
};
GstMiniObject
    ╰──GstBuffer /*缓冲*/
    ╰──GstCaps /*Pad的相关信息*/
    ╰──GstMessage /*管道的消息*/
    ╰──GstEvent
    ╰──GstQuery

参考:GstMiniObject

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值