diff --git a/gst/gstpad.c b/gst/gstpad.c index b058b9e675..c2ce2e5ee9 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 18b7776d6f..0e3c19b8e6 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);