summaryrefslogtreecommitdiffstats
path: root/gst/level/gstlevel.c
diff options
context:
space:
mode:
authorThomas Vander Stichele <thomas@apestaart.org>2003-09-26 16:45:04 +0000
committerThomas Vander Stichele <thomas@apestaart.org>2003-09-26 16:45:04 +0000
commit3ab75a571e204fbe6981c94d28cebb776124251b (patch)
treec3e50f08f81ca97109762a64cf73837fc6f7598c /gst/level/gstlevel.c
parent46860a7c533203cc3db68afff2936f039833cfde (diff)
added second example with plotting fixed some aesthetics
Original commit message from CVS: added second example with plotting fixed some aesthetics
Diffstat (limited to 'gst/level/gstlevel.c')
-rw-r--r--gst/level/gstlevel.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/gst/level/gstlevel.c b/gst/level/gstlevel.c
index 2b73e479..ca33743f 100644
--- a/gst/level/gstlevel.c
+++ b/gst/level/gstlevel.c
@@ -214,7 +214,7 @@ gst_level_chain (GstPad *pad, GstBuffer *buf)
for (i = 0; i < filter->channels; ++i)
filter->CS[i] = filter->peak[i] = filter->MS[i] = filter->RMS_dB[i] = 0.0;
- in_data = (gint16 *) GST_BUFFER_DATA(buf);
+ in_data = (gint16 *) GST_BUFFER_DATA (buf);
num_samples = GST_BUFFER_SIZE (buf) / (filter->width / 8);
if (num_samples % filter->channels != 0)
@@ -288,14 +288,18 @@ gst_level_chain (GstPad *pad, GstBuffer *buf)
{
if (filter->signal)
{
- gdouble RMS, peak;
+ gdouble RMS, peak, endtime;
for (i = 0; i < filter->channels; ++i)
{
RMS = sqrt (filter->CS[i] / (filter->num_samples / filter->channels));
peak = filter->last_peak[i];
+ num_samples = GST_BUFFER_SIZE (buf) / (filter->width / 8);
+ endtime = (double) GST_BUFFER_TIMESTAMP (buf) / GST_SECOND
+ + (double) num_samples / (double) filter->rate;
g_signal_emit (G_OBJECT (filter), gst_filter_signals[SIGNAL_LEVEL], 0,
- i, 20 * log10 (RMS), 20 * log10 (filter->last_peak[i]),
+ endtime, i,
+ 20 * log10 (RMS), 20 * log10 (filter->last_peak[i]),
20 * log10 (filter->decay_peak[i]));
/* we emitted, so reset cumulative and normal peak */
filter->CS[i] = 0.0;
@@ -397,9 +401,10 @@ gst_level_class_init (GstLevelClass *klass)
gst_filter_signals[SIGNAL_LEVEL] =
g_signal_new ("level", G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (GstLevelClass, level), NULL, NULL,
- gstlevel_cclosure_marshal_VOID__INT_DOUBLE_DOUBLE_DOUBLE,
- G_TYPE_NONE, 4,
- G_TYPE_INT, G_TYPE_DOUBLE, G_TYPE_DOUBLE, G_TYPE_DOUBLE);
+ gstlevel_cclosure_marshal_VOID__DOUBLE_INT_DOUBLE_DOUBLE_DOUBLE,
+ G_TYPE_NONE, 5,
+ G_TYPE_DOUBLE, G_TYPE_INT,
+ G_TYPE_DOUBLE, G_TYPE_DOUBLE, G_TYPE_DOUBLE);
}
static void