Top |
GstDataQueue is an object that handles threadsafe queueing of objects. It also provides size-related functionality. This object should be used for any GstElement that wishes to provide some sort of queueing functionality.
gboolean (*GstDataQueueCheckFullFunction) (GstDataQueue *queue
,guint visible
,guint bytes
,guint64 time
,gpointer checkdata
);
The prototype of the function used to inform the queue that it should be considered as full.
[skip]
queue |
a GstDataQueue. |
|
visible |
The number of visible items currently in the queue. |
|
bytes |
The amount of bytes currently in the queue. |
|
time |
The accumulated duration of the items currently in the queue. |
|
checkdata |
The gpointer registered when the GstDataQueue was created. |
void (*GstDataQueueEmptyCallback) (GstDataQueue *queue
,gpointer checkdata
);
void (*GstDataQueueFullCallback) (GstDataQueue *queue
,gpointer checkdata
);
GstDataQueue * gst_data_queue_new (GstDataQueueCheckFullFunction checkfull
,GstDataQueueFullCallback fullcallback
,GstDataQueueEmptyCallback emptycallback
,gpointer checkdata
);
Creates a new GstDataQueue. If fullcallback
or emptycallback
are supplied, then
the GstDataQueue will call the respective callback to signal full or empty condition.
If the callbacks are NULL the GstDataQueue will instead emit 'full' and 'empty'
signals.
[skip]
checkfull |
the callback used to tell if the element considers the queue full or not. |
|
fullcallback |
the callback which will be called when the queue is considered full. |
|
emptycallback |
the callback which will be called when the queue is considered empty. |
|
checkdata |
a gpointer that will be passed to the |
Since: 1.2
gboolean gst_data_queue_push (GstDataQueue *queue
,GstDataQueueItem *item
);
Pushes a GstDataQueueItem (or a structure that begins with the same fields)
on the queue
. If the queue
is full, the call will block until space is
available, OR the queue
is set to flushing state.
MT safe.
Note that this function has slightly different semantics than gst_pad_push()
and gst_pad_push_event()
: this function only takes ownership of item
and
the GstMiniObject contained in item
if the push was successful. If FALSE
is returned, the caller is responsible for freeing item
and its contents.
[skip]
Since: 1.2
gboolean gst_data_queue_push_force (GstDataQueue *queue
,GstDataQueueItem *item
);
Pushes a GstDataQueueItem (or a structure that begins with the same fields)
on the queue
. It ignores if the queue
is full or not and forces the item
to be pushed anyway.
MT safe.
Note that this function has slightly different semantics than gst_pad_push()
and gst_pad_push_event()
: this function only takes ownership of item
and
the GstMiniObject contained in item
if the push was successful. If FALSE
is returned, the caller is responsible for freeing item
and its contents.
[skip]
Since: 1.2
gboolean gst_data_queue_pop (GstDataQueue *queue
,GstDataQueueItem **item
);
Retrieves the first item
available on the queue
. If the queue is currently
empty, the call will block until at least one item is available, OR the
queue
is set to the flushing state.
MT safe.
[skip]
Since: 1.2
gboolean gst_data_queue_peek (GstDataQueue *queue
,GstDataQueueItem **item
);
Retrieves the first item
available on the queue
without removing it.
If the queue is currently empty, the call will block until at least
one item is available, OR the queue
is set to the flushing state.
MT safe.
[skip]
Since: 1.2
void
gst_data_queue_flush (GstDataQueue *queue
);
Flushes all the contents of the queue
. Any call to gst_data_queue_push and
gst_data_queue_pop will be released.
MT safe.
[skip]
Since: 1.2
void gst_data_queue_set_flushing (GstDataQueue *queue
,gboolean flushing
);
Sets the queue to flushing state if flushing
is TRUE
. If set to flushing
state, any incoming data on the queue
will be discarded. Any call currently
blocking on gst_data_queue_push or gst_data_queue_pop will return straight
away with a return value of FALSE
. While the queue
is in flushing state,
all calls to those two functions will return FALSE
.
MT Safe.
[skip]
Since: 1.2
gboolean gst_data_queue_drop_head (GstDataQueue *queue
,GType type
);
Pop and unref the head-most GstMiniObject with the given GType.
[skip]
Since: 1.2
gboolean
gst_data_queue_is_full (GstDataQueue *queue
);
Queries if queue
is full. This check will be done using the
GstDataQueueCheckFullFunction registered with queue
.
MT safe.
[skip]
Since: 1.2
gboolean
gst_data_queue_is_empty (GstDataQueue *queue
);
Queries if there are any items in the queue
.
MT safe.
[skip]
Since: 1.2
void gst_data_queue_get_level (GstDataQueue *queue
,GstDataQueueSize *level
);
Get the current level of the queue.
[skip]
Since: 1.2
void
gst_data_queue_limits_changed (GstDataQueue *queue
);
Inform the queue that the limits for the fullness check have changed and that
any blocking gst_data_queue_push()
should be unblocked to recheck the limits.
[skip]
Since: 1.2
struct GstDataQueueSize { guint visible; guint bytes; guint64 time; };
Structure describing the size of a queue.
struct GstDataQueueItem { GstMiniObject *object; guint size; guint64 duration; gboolean visible; /* user supplied destroy function */ GDestroyNotify destroy; };
Structure used by GstDataQueue. You can supply a different structure, as long as the top of the structure is identical to this structure.
GstMiniObject * |
the GstMiniObject to queue. |
|
guint |
the size in bytes of the miniobject. |
|
the duration in GstClockTime of the miniobject. Can not be
|
||
gboolean |
|
|
GDestroyNotify |
The GDestroyNotify function to use to free the GstDataQueueItem.
This function should also drop the reference to |