pad: add methods to adjust the offset
authorWim Taymans <wim.taymans@collabora.co.uk>
Thu, 19 May 2011 14:26:06 +0000 (16:26 +0200)
committerWim Taymans <wim.taymans@collabora.co.uk>
Thu, 19 May 2011 16:34:43 +0000 (18:34 +0200)
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
gst/gstpad.h

index b058b9e..c2ce2e5 100644 (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
  */
index 18b7776..0e3c19b 100644 (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);