summaryrefslogtreecommitdiff
path: root/gst/frei0r/gstfrei0rfilter.c
diff options
context:
space:
mode:
Diffstat (limited to 'gst/frei0r/gstfrei0rfilter.c')
-rw-r--r--gst/frei0r/gstfrei0rfilter.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/gst/frei0r/gstfrei0rfilter.c b/gst/frei0r/gstfrei0rfilter.c
index fc60a9034..cc0c3d277 100644
--- a/gst/frei0r/gstfrei0rfilter.c
+++ b/gst/frei0r/gstfrei0rfilter.c
@@ -26,6 +26,8 @@
#include "gstfrei0r.h"
#include "gstfrei0rfilter.h"
+#include <gst/controller/gstcontroller.h>
+
GST_DEBUG_CATEGORY_EXTERN (frei0r_debug);
#define GST_CAT_DEFAULT frei0r_debug
@@ -64,6 +66,24 @@ gst_frei0r_filter_stop (GstBaseTransform * trans)
return TRUE;
}
+static void
+gst_frei0r_filter_before_transform (GstBaseTransform * trans,
+ GstBuffer * buffer)
+{
+ GstClockTime timestamp;
+ GstFrei0rFilter *self = GST_FREI0R_FILTER (trans);
+
+ timestamp = GST_BUFFER_TIMESTAMP (buffer);
+ timestamp =
+ gst_segment_to_stream_time (&trans->segment, GST_FORMAT_TIME, timestamp);
+
+ GST_DEBUG_OBJECT (self, "sync to %" GST_TIME_FORMAT,
+ GST_TIME_ARGS (timestamp));
+
+ if (GST_CLOCK_TIME_IS_VALID (timestamp))
+ gst_object_sync_values (G_OBJECT (self), timestamp);
+}
+
static GstFlowReturn
gst_frei0r_filter_transform (GstBaseTransform * trans, GstBuffer * inbuf,
GstBuffer * outbuf)
@@ -193,6 +213,8 @@ gst_frei0r_filter_class_init (GstFrei0rFilterClass * klass,
gsttrans_class->set_caps = GST_DEBUG_FUNCPTR (gst_frei0r_filter_set_caps);
gsttrans_class->stop = GST_DEBUG_FUNCPTR (gst_frei0r_filter_stop);
gsttrans_class->transform = GST_DEBUG_FUNCPTR (gst_frei0r_filter_transform);
+ gsttrans_class->before_transform =
+ GST_DEBUG_FUNCPTR (gst_frei0r_filter_before_transform);
}
static void