[MOVED FROM GST-P-FARSIGHT] The DTMF tone generator now respects the volume argument...
authorYouness Alaoui <youness.alaoui@collabora.co.uk>
Wed, 22 Aug 2007 20:16:53 +0000 (20:16 +0000)
committerEdward Hervey <bilboed@bilboed.com>
Sat, 21 Feb 2009 16:48:00 +0000 (17:48 +0100)
20070822201653-4f0f6-8b7ff874006e11f5a74d0fd91e5a9a43cd082ada.gz

gst/dtmf/gstdtmfsrc.c

index 6a3e6e6..f04119c 100644 (file)
@@ -621,6 +621,7 @@ gst_dtmf_src_generate_tone(GstDTMFSrcEvent *event, DTMF_KEY key, float duration,
   gint tone_size;
   double i = 0;
   double amplitude, f1, f2;
+  double volume_factor;
 
   /* Create a buffer for the tone */
   tone_size = ((duration/1000)*SAMPLE_RATE*SAMPLE_SIZE*CHANNELS)/8;
@@ -630,6 +631,8 @@ gst_dtmf_src_generate_tone(GstDTMFSrcEvent *event, DTMF_KEY key, float duration,
 
   p = (gint16 *) GST_BUFFER_MALLOCDATA (buffer);
 
+  volume_factor = pow (10, (-event->volume) / 20);
+
   /*
    * For each sample point we calculate 'x' as the
    * the amplitude value.
@@ -643,6 +646,9 @@ gst_dtmf_src_generate_tone(GstDTMFSrcEvent *event, DTMF_KEY key, float duration,
 
     amplitude = (f1 + f2) / 2;
 
+    /* Adjust the volume */
+    amplitude *= volume_factor;
+
     /* Make the [-1:1] interval into a [-32767:32767] interval */
     amplitude *= 32767;