mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-07-10 00:25:53 +00:00
level: calculate the message-intervall when it changes
This commit is contained in:
parent
f5b3392fa6
commit
71044b37b6
|
@ -281,6 +281,10 @@ gst_level_set_property (GObject * object, guint prop_id,
|
||||||
break;
|
break;
|
||||||
case PROP_SIGNAL_INTERVAL:
|
case PROP_SIGNAL_INTERVAL:
|
||||||
filter->interval = g_value_get_uint64 (value);
|
filter->interval = g_value_get_uint64 (value);
|
||||||
|
if (filter->rate) {
|
||||||
|
filter->interval_frames =
|
||||||
|
GST_CLOCK_TIME_TO_FRAMES (filter->interval, filter->rate);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case PROP_PEAK_TTL:
|
case PROP_PEAK_TTL:
|
||||||
filter->decay_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->decay_peak_age[i] = G_GUINT64_CONSTANT (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
filter->interval_frames =
|
||||||
|
GST_CLOCK_TIME_TO_FRAMES (filter->interval, filter->rate);
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -648,8 +655,7 @@ gst_level_transform_ip (GstBaseTransform * trans, GstBuffer * in)
|
||||||
filter->num_frames += num_frames;
|
filter->num_frames += num_frames;
|
||||||
|
|
||||||
/* do we need to message ? */
|
/* do we need to message ? */
|
||||||
if (filter->num_frames >=
|
if (filter->num_frames >= filter->interval_frames) {
|
||||||
GST_CLOCK_TIME_TO_FRAMES (filter->interval, filter->rate)) {
|
|
||||||
if (filter->message) {
|
if (filter->message) {
|
||||||
GstMessage *m;
|
GstMessage *m;
|
||||||
GstClockTime duration =
|
GstClockTime duration =
|
||||||
|
|
|
@ -67,6 +67,7 @@ struct _GstLevel {
|
||||||
gdouble decay_peak_falloff; /* falloff in dB/sec */
|
gdouble decay_peak_falloff; /* falloff in dB/sec */
|
||||||
gint num_frames; /* frame count (1 sample per channel)
|
gint num_frames; /* frame count (1 sample per channel)
|
||||||
* since last emit */
|
* since last emit */
|
||||||
|
gint interval_frames; /* after how many frame to sent a message */
|
||||||
GstClockTime message_ts; /* starttime for next message */
|
GstClockTime message_ts; /* starttime for next message */
|
||||||
|
|
||||||
/* per-channel arrays for intermediate values */
|
/* per-channel arrays for intermediate values */
|
||||||
|
|
Loading…
Reference in a new issue