pad: add methods to adjust the offset

Add methods to adjust the offset. This will be used to change the segment events
with an offset so that we can tweak the timing of the stream on a per-pad base.
This commit is contained in:
Wim Taymans 2011-05-19 16:26:06 +02:00
parent 9c4ce4ae16
commit c8340e7762
2 changed files with 49 additions and 0 deletions

View file

@ -3584,6 +3584,48 @@ flushing:
}
}
/* pad offsets */
/**
* gst_pad_get_offset:
* @pad: a #GstPad
*
* Get the offset applied to the running time of @pad.
*
* Returns: the offset.
*/
gint64
gst_pad_get_offset (GstPad * pad)
{
gint64 result;
g_return_val_if_fail (GST_IS_PAD (pad), 0);
GST_OBJECT_LOCK (pad);
result = pad->offset;
GST_OBJECT_UNLOCK (pad);
return result;
}
/**
* gst_pad_set_offset:
* @pad: a #GstPad
* @offset: the offset
*
* Set the offset that will be applied to the running time of @pad.
*/
void
gst_pad_set_offset (GstPad * pad, gint64 offset)
{
g_return_if_fail (GST_IS_PAD (pad));
GST_OBJECT_LOCK (pad);
pad->offset = offset;
GST_OBJECT_UNLOCK (pad);
}
/**********************************************************************
* Data passing functions
*/

View file

@ -630,6 +630,9 @@ struct _GstPad {
GstPadGetRangeFunction getrangefunc;
GstPadEventFunction eventfunc;
/* pad offset */
gint64 offset;
/* generic query method */
GstPadQueryTypeFunction querytypefunc;
GstPadQueryFunction queryfunc;
@ -865,6 +868,10 @@ gboolean gst_pad_peer_accept_caps (GstPad * pad, GstCaps *caps);
GstCaps * gst_pad_get_allowed_caps (GstPad * pad);
GstCaps * gst_pad_get_negotiated_caps (GstPad * pad);
/* pad offsets */
gint64 gst_pad_get_offset (GstPad *pad);
void gst_pad_set_offset (GstPad *pad, gint64 offset);
/* data passing functions to peer */
GstFlowReturn gst_pad_push (GstPad *pad, GstBuffer *buffer);
GstFlowReturn gst_pad_push_list (GstPad *pad, GstBufferList *list);