diff --git a/ChangeLog b/ChangeLog index f1b3ad9773..83f6c0b791 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2007-03-07 Stefan Kost + + * gst/spectrum/gstspectrum.c: (gst_spectrum_start), + (gst_spectrum_event), (gst_spectrum_transform_ip): + * gst/spectrum/gstspectrum.h: + One FIXME less, by resolving message timestamps against the playback + segment. + 2007-03-06 Wim Taymans * gst/spectrum/gstspectrum.c: (gst_spectrum_class_init), diff --git a/common b/common index 9a56e28fc1..c4f56a657d 160000 --- a/common +++ b/common @@ -1 +1 @@ -Subproject commit 9a56e28fc15440eb6852411321c46312e1d1bb73 +Subproject commit c4f56a657d79aee0e3fc25ef2bcf876f9f3c1593 diff --git a/gst/spectrum/gstspectrum.c b/gst/spectrum/gstspectrum.c index 36e8b6a387..3747b24902 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 3bfdd48995..70ab25c901 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 */