diff options
Diffstat (limited to 'gst/frei0r/gstfrei0rfilter.c')
-rw-r--r-- | gst/frei0r/gstfrei0rfilter.c | 22 |
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 |