GstMiniObject

GstMiniObject — Lightweight base class for the GStreamer object hierarchy

Functions

Types and Values

Includes

#include <gst/gst.h>

Description

GstMiniObject is a baseclass like GObject, but has been stripped down of features to be fast and small. It offers sub-classing and ref-counting in the same way as GObject does. It has no properties and no signal-support though.

Last reviewed on 2005-11-23 (0.9.5)

Functions

GstMiniObjectCopyFunction ()

GstMiniObject *
(*GstMiniObjectCopyFunction) (const GstMiniObject *obj);

Virtual function prototype for methods to create copies of instances.

Parameters

obj

MiniObject to copy

 

Returns

reference to cloned instance.


GstMiniObjectFinalizeFunction ()

void
(*GstMiniObjectFinalizeFunction) (GstMiniObject *obj);

Virtual function prototype for methods to free ressources used by mini-objects. Subclasses of the mini object are allowed to revive the passed object by doing a gst_mini_object_ref(). If the object is not revived after the finalize function, the memory associated with the object is freed.

Parameters

obj

MiniObject to finalize

 

GstMiniObjectWeakNotify ()

void
(*GstMiniObjectWeakNotify) (gpointer data,
                            GstMiniObject *where_the_mini_object_was);

A GstMiniObjectWeakNotify function can be added to a mini object as a callback that gets triggered when the mini object is finalized. Since the mini object is already being finalized when the GstMiniObjectWeakNotify is called, there's not much you could do with the object, apart from e.g. using its adress as hash-index or the like.

Parameters

data

data that was provided when the weak reference was established

 

where_the_mini_object_was

the mini object being finalized

 

Since 0.10.35


GST_MINI_OBJECT_FLAGS()

#define GST_MINI_OBJECT_FLAGS(obj)  (GST_MINI_OBJECT_CAST(obj)->flags)

This macro returns the entire set of flags for the mini-object.

Parameters

obj

MiniObject to return flags for.

 

GST_MINI_OBJECT_FLAG_IS_SET()

#define GST_MINI_OBJECT_FLAG_IS_SET(obj,flag)        !!(GST_MINI_OBJECT_FLAGS (obj) & (flag))

This macro checks to see if the given flag is set.

Parameters

obj

MiniObject to check for flags.

 

flag

Flag to check for

 

GST_MINI_OBJECT_FLAG_SET()

#define GST_MINI_OBJECT_FLAG_SET(obj,flag)           (GST_MINI_OBJECT_FLAGS (obj) |= (flag))

This macro sets the given bits.

Parameters

obj

MiniObject to set flag in.

 

flag

Flag to set, can by any number of bits in guint32.

 

GST_MINI_OBJECT_FLAG_UNSET()

#define GST_MINI_OBJECT_FLAG_UNSET(obj,flag)         (GST_MINI_OBJECT_FLAGS (obj) &= ~(flag))

This macro usets the given bits.

Parameters

obj

MiniObject to unset flag in.

 

flag

Flag to set, must be a single bit in guint32.

 

GST_MINI_OBJECT_REFCOUNT()

#define GST_MINI_OBJECT_REFCOUNT(obj)           ((GST_MINI_OBJECT_CAST(obj))->refcount)

Get access to the reference count field of the mini-object.

Parameters

obj

a GstMiniObject

 

GST_MINI_OBJECT_REFCOUNT_VALUE()

#define GST_MINI_OBJECT_REFCOUNT_VALUE(obj)     (g_atomic_int_get (&(GST_MINI_OBJECT_CAST(obj))->refcount))

Get the reference count value of the mini-object.

Parameters

obj

a GstMiniObject

 

gst_mini_object_new ()

GstMiniObject *
gst_mini_object_new (GType type);

Creates a new mini-object of the desired type.

MT safe

Parameters

type

the GType of the mini-object to create

 

Returns

the new mini-object.

[transfer full]


gst_mini_object_copy ()

GstMiniObject *
gst_mini_object_copy (const GstMiniObject *mini_object);

Creates a copy of the mini-object.

MT safe

Parameters

mini_object

the mini-object to copy

 

Returns

the new mini-object.

[transfer full]


gst_mini_object_is_writable ()

gboolean
gst_mini_object_is_writable (const GstMiniObject *mini_object);

Checks if a mini-object is writable. A mini-object is writable if the reference count is one and the GST_MINI_OBJECT_FLAG_READONLY flag is not set. Modification of a mini-object should only be done after verifying that it is writable.

MT safe

Parameters

mini_object

the mini-object to check

 

Returns

TRUE if the object is writable.


gst_mini_object_make_writable ()

GstMiniObject *
gst_mini_object_make_writable (GstMiniObject *mini_object);

Checks if a mini-object is writable. If not, a writable copy is made and returned. This gives away the reference to the original mini object, and returns a reference to the new object.

MT safe

Parameters

mini_object

the mini-object to make writable.

[transfer full]

Returns

a mini-object (possibly the same pointer) that is writable.

[transfer full]


gst_mini_object_ref ()

GstMiniObject *
gst_mini_object_ref (GstMiniObject *mini_object);

Increase the reference count of the mini-object.

Note that the refcount affects the writeability of mini -object, see gst_mini_object_is_writable(). It is important to note that keeping additional references to GstMiniObject instances can potentially increase the number of memcpy operations in a pipeline, especially if the miniobject is a GstBuffer.

Parameters

mini_object

the mini-object

 

Returns

the mini-object.

[transfer full]


gst_mini_object_unref ()

void
gst_mini_object_unref (GstMiniObject *mini_object);

Decreases the reference count of the mini-object, possibly freeing the mini-object.

Parameters

mini_object

the mini-object

 

gst_mini_object_replace ()

void
gst_mini_object_replace (GstMiniObject **olddata,
                         GstMiniObject *newdata);

Modifies a pointer to point to a new mini-object. The modification is done atomically, and the reference counts are updated correctly. Either newdata and the value pointed to by olddata may be NULL.

Parameters

olddata

pointer to a pointer to a mini-object to be replaced.

[inout][transfer full]

newdata

pointer to new mini-object

 

gst_mini_object_weak_ref ()

void
gst_mini_object_weak_ref (GstMiniObject *object,
                          GstMiniObjectWeakNotify notify,
                          gpointer data);

Adds a weak reference callback to a mini object. Weak references are used for notification when a mini object is finalized. They are called "weak references" because they allow you to safely hold a pointer to the mini object without calling gst_mini_object_ref() (gst_mini_object_ref() adds a strong reference, that is, forces the object to stay alive).

Parameters

object

GstMiniObject to reference weakly

 

notify

callback to invoke before the mini object is freed

 

data

extra data to pass to notify

 

Since 0.10.36


gst_mini_object_weak_unref ()

void
gst_mini_object_weak_unref (GstMiniObject *object,
                            GstMiniObjectWeakNotify notify,
                            gpointer data);

Removes a weak reference callback to a mini object.

Parameters

object

GstMiniObject to remove a weak reference from

 

notify

callback to search for

 

data

data to search for

 

Since 0.10.36


gst_param_spec_mini_object ()

GParamSpec *
gst_param_spec_mini_object (const char *name,
                            const char *nick,
                            const char *blurb,
                            GType object_type,
                            GParamFlags flags);

Creates a new GParamSpec instance that hold GstMiniObject references.

Parameters

name

the canonical name of the property

 

nick

the nickname of the property

 

blurb

a short description of the property

 

object_type

the GstMiniObject GType for the property

 

flags

a combination of GParamFlags

 

Returns

a newly allocated GParamSpec instance.

[transfer full]


gst_value_set_mini_object ()

void
gst_value_set_mini_object (GValue *value,
                           GstMiniObject *mini_object);

Set the contents of a GST_TYPE_MINI_OBJECT derived GValue to mini_object . The caller retains ownership of the reference.

Parameters

value

a valid GValue of GST_TYPE_MINI_OBJECT derived type

 

mini_object

mini object value to set.

[transfer none]

gst_value_take_mini_object ()

void
gst_value_take_mini_object (GValue *value,
                            GstMiniObject *mini_object);

Set the contents of a GST_TYPE_MINI_OBJECT derived GValue to mini_object . Takes over the ownership of the caller's reference to mini_object ; the caller doesn't have to unref it any more.

Parameters

value

a valid GValue of GST_TYPE_MINI_OBJECT derived type

 

mini_object

mini object value to take.

[transfer full]

gst_value_get_mini_object ()

GstMiniObject *
gst_value_get_mini_object (const GValue *value);

Get the contents of a GST_TYPE_MINI_OBJECT derived GValue. Does not increase the refcount of the returned object.

Parameters

value

a valid GValue of GST_TYPE_MINI_OBJECT derived type

 

Returns

mini object contents of value .

[transfer none]


gst_value_dup_mini_object ()

GstMiniObject *
gst_value_dup_mini_object (const GValue *value);

Get the contents of a GST_TYPE_MINI_OBJECT derived GValue, increasing its reference count. If the contents of the GValue are NULL, NULL will be returned.

Parameters

value

a valid GValue of GST_TYPE_MINI_OBJECT derived type

 

Returns

mini object contents of value .

[transfer full]

Since 0.10.20

Types and Values

struct GstMiniObject

struct GstMiniObject {
  GTypeInstance instance;
  gint refcount;
  guint flags;
};

Base class for refcounted lightweight objects. Ref Func: gst_mini_object_ref Unref Func: gst_mini_object_unref Set Value Func: gst_value_set_mini_object Get Value Func: gst_value_get_mini_object

Members

GTypeInstance instance;

type instance

 

gint refcount;

atomic refcount

 

guint flags;

extra flags.

 

enum GstMiniObjectFlags

Flags for the mini object

Members

GST_MINI_OBJECT_FLAG_READONLY

is the miniobject readonly or writable

 

GST_MINI_OBJECT_FLAG_RESERVED1

a flag reserved for internal use e.g. as GST_BUFFER_FLAG_MEDIA4. Since: 0.10.33.

 

GST_MINI_OBJECT_FLAG_LAST

first flag that can be used by subclasses.

 

struct GstParamSpecMiniObject

struct GstParamSpecMiniObject {
  GParamSpec parent_instance;
};

A GParamSpec derived structure that contains the meta data for GstMiniObject properties.

Members

GParamSpec parent_instance;

private GParamSpec portion