diff --git a/ChangeLog b/ChangeLog index c22a67cbe7..9e528184a6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2007-09-13 Wim Taymans + + * gst/level/gstlevel.c: (gst_level_class_init), (gst_level_start), + (gst_level_transform_ip): + * gst/level/gstlevel.h: + Use basetransform segment so that it is correctly managed on flushes and + start/stop. + Report message timestamp as stream time, which is what an application + can understand. + 2007-09-13 Sebastian Dröge * ext/taglib/gstapev2mux.cc: diff --git a/gst/level/gstlevel.c b/gst/level/gstlevel.c index 931d217130..3392d958ce 100644 --- a/gst/level/gstlevel.c +++ b/gst/level/gstlevel.c @@ -147,7 +147,6 @@ static void gst_level_dispose (GObject * obj); static gboolean gst_level_set_caps (GstBaseTransform * trans, GstCaps * in, GstCaps * out); static gboolean gst_level_start (GstBaseTransform * trans); -static gboolean gst_level_event (GstBaseTransform * trans, GstEvent * event); static GstFlowReturn gst_level_transform_ip (GstBaseTransform * trans, GstBuffer * in); @@ -198,7 +197,6 @@ gst_level_class_init (GstLevelClass * klass) trans_class->set_caps = GST_DEBUG_FUNCPTR (gst_level_set_caps); trans_class->start = GST_DEBUG_FUNCPTR (gst_level_start); - trans_class->event = GST_DEBUG_FUNCPTR (gst_level_event); trans_class->transform_ip = GST_DEBUG_FUNCPTR (gst_level_transform_ip); trans_class->passthrough_on_same_caps = TRUE; } @@ -449,36 +447,6 @@ gst_level_start (GstBaseTransform * trans) GstLevel *filter = GST_LEVEL (trans); filter->num_frames = 0; - gst_segment_init (&filter->segment, GST_FORMAT_UNDEFINED); - - return TRUE; -} - -static gboolean -gst_level_event (GstBaseTransform * trans, GstEvent * event) -{ - GstLevel *filter = GST_LEVEL (trans); - - switch (GST_EVENT_TYPE (event)) { - 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; - } return TRUE; } @@ -621,7 +589,7 @@ gst_level_transform_ip (GstBaseTransform * trans, GstBuffer * in) if (filter->message) { GstMessage *m; GstClockTime endtime = - gst_segment_to_running_time (&filter->segment, GST_FORMAT_TIME, + gst_segment_to_stream_time (&trans->segment, GST_FORMAT_TIME, GST_BUFFER_TIMESTAMP (in)) + GST_FRAMES_TO_CLOCK_TIME (num_frames, filter->rate); diff --git a/gst/level/gstlevel.h b/gst/level/gstlevel.h index f91b620c8f..3cd5d3a867 100644 --- a/gst/level/gstlevel.h +++ b/gst/level/gstlevel.h @@ -78,8 +78,6 @@ struct _GstLevel { gdouble *RMS_dB; /* RMS in dB to emit */ GstClockTime *decay_peak_age; /* age of last peak */ - GstSegment segment; - void (*process)(gpointer, guint, guint, gdouble*, gdouble*); };