From c8340e77620fbd9d1090590dc1d00e201541ee67 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Thu, 19 May 2011 16:26:06 +0200 Subject: [PATCH] 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. --- gst/gstpad.c | 42 ++++++++++++++++++++++++++++++++++++++++++ gst/gstpad.h | 7 +++++++ 2 files changed, 49 insertions(+) diff --git a/gst/gstpad.c b/gst/gstpad.c index b058b9e..c2ce2e5 100644 --- a/gst/gstpad.c +++ b/gst/gstpad.c @@ -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 */ diff --git a/gst/gstpad.h b/gst/gstpad.h index 18b7776..0e3c19b 100644 --- a/gst/gstpad.h +++ b/gst/gstpad.h @@ -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); -- 2.7.4