level: calculate the message-intervall when it changes

This commit is contained in:
Stefan Kost 2009-11-01 00:29:24 +02:00
parent f5b3392fa6
commit 71044b37b6
2 changed files with 9 additions and 2 deletions

View file

@ -281,6 +281,10 @@ gst_level_set_property (GObject * object, guint prop_id,
break;
case PROP_SIGNAL_INTERVAL:
filter->interval = g_value_get_uint64 (value);
if (filter->rate) {
filter->interval_frames =
GST_CLOCK_TIME_TO_FRAMES (filter->interval, filter->rate);
}
break;
case PROP_PEAK_TTL:
filter->decay_peak_ttl =
@ -483,6 +487,9 @@ gst_level_set_caps (GstBaseTransform * trans, GstCaps * in, GstCaps * out)
filter->decay_peak_age[i] = G_GUINT64_CONSTANT (0);
}
filter->interval_frames =
GST_CLOCK_TIME_TO_FRAMES (filter->interval, filter->rate);
return TRUE;
}
@ -648,8 +655,7 @@ gst_level_transform_ip (GstBaseTransform * trans, GstBuffer * in)
filter->num_frames += num_frames;
/* do we need to message ? */
if (filter->num_frames >=
GST_CLOCK_TIME_TO_FRAMES (filter->interval, filter->rate)) {
if (filter->num_frames >= filter->interval_frames) {
if (filter->message) {
GstMessage *m;
GstClockTime duration =

View file

@ -67,6 +67,7 @@ struct _GstLevel {
gdouble decay_peak_falloff; /* falloff in dB/sec */
gint num_frames; /* frame count (1 sample per channel)
* since last emit */
gint interval_frames; /* after how many frame to sent a message */
GstClockTime message_ts; /* starttime for next message */
/* per-channel arrays for intermediate values */