diff options
Diffstat (limited to 'gst/spectrum')
-rw-r--r-- | gst/spectrum/gstspectrum.c | 23 | ||||
-rw-r--r-- | gst/spectrum/gstspectrum.h | 1 |
2 files changed, 21 insertions, 3 deletions
diff --git a/gst/spectrum/gstspectrum.c b/gst/spectrum/gstspectrum.c index 36e8b6a3..3747b249 100644 --- a/gst/spectrum/gstspectrum.c +++ b/gst/spectrum/gstspectrum.c @@ -297,6 +297,7 @@ gst_spectrum_start (GstBaseTransform * trans) GstSpectrum *filter = GST_SPECTRUM (trans); filter->num_frames = 0; + gst_segment_init (&filter->segment, GST_FORMAT_UNDEFINED); return TRUE; } @@ -321,6 +322,22 @@ gst_spectrum_event (GstBaseTransform * trans, GstEvent * event) case GST_EVENT_EOS: gst_adapter_clear (filter->adapter); break; + case GST_EVENT_NEWSEGMENT:{ + GstFormat format; + gdouble rate, arate; + gint64 start, stop, time; + gboolean update; + + /* the newsegment values are used to clip the input samples + * and to convert the incomming timestamps to running time */ + gst_event_parse_new_segment_full (event, &update, &rate, &arate, &format, + &start, &stop, &time); + + /* now configure the values */ + gst_segment_set_newsegment_full (&filter->segment, update, + rate, arate, format, start, stop, time); + break; + } default: break; } @@ -369,9 +386,9 @@ gst_spectrum_transform_ip (GstBaseTransform * trans, GstBuffer * in) gfloat pos, step; guchar *spect = spectrum->spect; - /* FIXME, the buffer timestamp does not mean anything, maybe you mean - * stream_time or running_time? */ - GstClockTime endtime = GST_BUFFER_TIMESTAMP (in); + GstClockTime endtime = + gst_segment_to_running_time (&spectrum->segment, GST_FORMAT_TIME, + GST_BUFFER_TIMESTAMP (in)); GstClockTime blktime = GST_FRAMES_TO_CLOCK_TIME (spectrum->len, spectrum->rate); diff --git a/gst/spectrum/gstspectrum.h b/gst/spectrum/gstspectrum.h index 3bfdd489..70ab25c9 100644 --- a/gst/spectrum/gstspectrum.h +++ b/gst/spectrum/gstspectrum.h @@ -45,6 +45,7 @@ struct _GstSpectrum { GstPad *sinkpad,*srcpad; GstAdapter *adapter; + GstSegment segment; /* properties */ gboolean message; /* whether or not to post messages */ |