gst/spectrum/gstspectrum.*: One FIXME less, by resolving message timestamps against...
authorStefan Kost <ensonic@users.sourceforge.net>
Wed, 7 Mar 2007 11:23:20 +0000 (11:23 +0000)
committerStefan Kost <ensonic@users.sourceforge.net>
Wed, 7 Mar 2007 11:23:20 +0000 (11:23 +0000)
Original commit message from CVS:
* 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.

ChangeLog
common
gst/spectrum/gstspectrum.c
gst/spectrum/gstspectrum.h

index f1b3ad9..83f6c0b 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2007-03-07  Stefan Kost  <ensonic@users.sf.net>
+
+       * 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  <wim@fluendo.com>
 
        * gst/spectrum/gstspectrum.c: (gst_spectrum_class_init),
diff --git a/common b/common
index 9a56e28..c4f56a6 160000 (submodule)
--- a/common
+++ b/common
@@ -1 +1 @@
-Subproject commit 9a56e28fc15440eb6852411321c46312e1d1bb73
+Subproject commit c4f56a657d79aee0e3fc25ef2bcf876f9f3c1593
index 36e8b6a..3747b24 100644 (file)
@@ -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);
 
index 3bfdd48..70ab25c 100644 (file)
@@ -45,6 +45,7 @@ struct _GstSpectrum {
 
   GstPad *sinkpad,*srcpad;
   GstAdapter *adapter;
+  GstSegment segment;
 
   /* properties */
   gboolean message;             /* whether or not to post messages */