<h1>Project "FreeSWITCH Source" received a push.</h1>

<h2>branch: master updated</h2>
<pre>
       via: 94b680fb45b3fda90bc6652e3f588539fa783192 (commit)
      from: cf827e8f225ad2e30d7356fce982d014023dc077 (commit)


</pre>= COMMIT LOG ===========================================================
<div class="highlight"><pre>committer: Anthony Minessale
comments: 
play files saying vol level in conf in lieu of making a function of say modules to return file_string urls (we need that)

<span style="color: #000080; font-weight: bold">diff --git a/src/mod/applications/mod_conference/mod_conference.c b/src/mod/applications/mod_conference/mod_conference.c</span>
<span style="color: #000080; font-weight: bold">index 35412af..548d8fc 100644</span>
<span style="color: #A00000">--- a/src/mod/applications/mod_conference/mod_conference.c</span>
<span style="color: #00A000">+++ b/src/mod/applications/mod_conference/mod_conference.c</span>
<span style="color: #800080; font-weight: bold">@@ -1598,16 +1598,17 @@ static void conference_loop_fn_deafmute_toggle(conference_member_t *member, call</span>
 
 static void conference_loop_fn_energy_up(conference_member_t *member, caller_control_action_t *action)
 {
<span style="color: #A00000">-        char msg[512];</span>
<span style="color: #00A000">+        char msg[512], str[30] = &quot;&quot;;</span>
         switch_event_t *event;
<span style="color: #00A000">+        char *p;</span>
 
         if (member == NULL)
                 return;
 
         lock_member(member);
         member-&gt;energy_level += 200;
<span style="color: #A00000">-        if (member-&gt;energy_level &gt; 3000) {</span>
<span style="color: #A00000">-                member-&gt;energy_level = 3000;</span>
<span style="color: #00A000">+        if (member-&gt;energy_level &gt; 1800) {</span>
<span style="color: #00A000">+                member-&gt;energy_level = 1800;</span>
         }
 
         if (test_eflag(member-&gt;conference, EFLAG_ENERGY_LEVEL) &amp;&amp;
<span style="color: #800080; font-weight: bold">@@ -1619,13 +1620,23 @@ static void conference_loop_fn_energy_up(conference_member_t *member, caller_con</span>
         }
         unlock_member(member);
 
<span style="color: #A00000">-        switch_snprintf(msg, sizeof(msg), &quot;Energy level %d&quot;, member-&gt;energy_level);</span>
<span style="color: #A00000">-        conference_member_say(member, msg, 0);</span>
<span style="color: #00A000">+        //switch_snprintf(msg, sizeof(msg), &quot;Energy level %d&quot;, member-&gt;energy_level);</span>
<span style="color: #00A000">+        //conference_member_say(member, msg, 0);</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        switch_snprintf(str, sizeof(str), &quot;%d&quot;, abs(member-&gt;energy_level) / 200);</span>
<span style="color: #00A000">+        for (p = str; p &amp;&amp; *p; p++) {</span>
<span style="color: #00A000">+                switch_snprintf(msg, sizeof(msg), &quot;digits/%c.wav&quot;, *p);</span>
<span style="color: #00A000">+                conference_member_play_file(member, msg, 0);</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        </span>
<span style="color: #00A000">+</span>
 }
 
 static void conference_loop_fn_energy_equ_conf(conference_member_t *member, caller_control_action_t *action)
 {
<span style="color: #A00000">-        char msg[512];</span>
<span style="color: #00A000">+        char msg[512], str[30] = &quot;&quot;, *p;</span>
         switch_event_t *event;
 
         if (member == NULL)
<span style="color: #800080; font-weight: bold">@@ -1643,13 +1654,20 @@ static void conference_loop_fn_energy_equ_conf(conference_member_t *member, call</span>
         }
         unlock_member(member);
 
<span style="color: #A00000">-        switch_snprintf(msg, sizeof(msg), &quot;Energy level %d&quot;, member-&gt;energy_level);</span>
<span style="color: #A00000">-        conference_member_say(member, msg, 0);</span>
<span style="color: #00A000">+        //switch_snprintf(msg, sizeof(msg), &quot;Energy level %d&quot;, member-&gt;energy_level);</span>
<span style="color: #00A000">+        //conference_member_say(member, msg, 0);</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        switch_snprintf(str, sizeof(str), &quot;%d&quot;, abs(member-&gt;energy_level) / 200);</span>
<span style="color: #00A000">+        for (p = str; p &amp;&amp; *p; p++) {</span>
<span style="color: #00A000">+                switch_snprintf(msg, sizeof(msg), &quot;digits/%c.wav&quot;, *p);</span>
<span style="color: #00A000">+                conference_member_play_file(member, msg, 0);</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+        </span>
 }
 
 static void conference_loop_fn_energy_dn(conference_member_t *member, caller_control_action_t *action)
 {
<span style="color: #A00000">-        char msg[512];</span>
<span style="color: #00A000">+        char msg[512], str[30] = &quot;&quot;, *p;</span>
         switch_event_t *event;
 
         if (member == NULL)
<span style="color: #800080; font-weight: bold">@@ -1670,8 +1688,15 @@ static void conference_loop_fn_energy_dn(conference_member_t *member, caller_con</span>
         }
         unlock_member(member);
 
<span style="color: #A00000">-        switch_snprintf(msg, sizeof(msg), &quot;Energy level %d&quot;, member-&gt;energy_level);</span>
<span style="color: #A00000">-        conference_member_say(member, msg, 0);</span>
<span style="color: #00A000">+        //switch_snprintf(msg, sizeof(msg), &quot;Energy level %d&quot;, member-&gt;energy_level);</span>
<span style="color: #00A000">+        //conference_member_say(member, msg, 0);</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        switch_snprintf(str, sizeof(str), &quot;%d&quot;, abs(member-&gt;energy_level) / 200);</span>
<span style="color: #00A000">+        for (p = str; p &amp;&amp; *p; p++) {</span>
<span style="color: #00A000">+                switch_snprintf(msg, sizeof(msg), &quot;digits/%c.wav&quot;, *p);</span>
<span style="color: #00A000">+                conference_member_play_file(member, msg, 0);</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+        </span>
 }
 
 static void conference_loop_fn_volume_talk_up(conference_member_t *member, caller_control_action_t *action)
<span style="color: #800080; font-weight: bold">@@ -1695,8 +1720,12 @@ static void conference_loop_fn_volume_talk_up(conference_member_t *member, calle</span>
         }
         unlock_member(member);
 
<span style="color: #A00000">-        switch_snprintf(msg, sizeof(msg), &quot;Volume level %d&quot;, member-&gt;volume_out_level);</span>
<span style="color: #A00000">-        conference_member_say(member, msg, 0);</span>
<span style="color: #00A000">+        //switch_snprintf(msg, sizeof(msg), &quot;Volume level %d&quot;, member-&gt;volume_out_level);</span>
<span style="color: #00A000">+        //conference_member_say(member, msg, 0);</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        switch_snprintf(msg, sizeof(msg), &quot;digits/%d.wav&quot;, member-&gt;volume_out_level);</span>
<span style="color: #00A000">+        conference_member_play_file(member, msg, 0);</span>
<span style="color: #00A000">+</span>
 }
 
 static void conference_loop_fn_volume_talk_zero(conference_member_t *member, caller_control_action_t *action)
<span style="color: #800080; font-weight: bold">@@ -1719,9 +1748,17 @@ static void conference_loop_fn_volume_talk_zero(conference_member_t *member, cal</span>
         }
         unlock_member(member);
 
<span style="color: #A00000">-        switch_snprintf(msg, sizeof(msg), &quot;Volume level %d&quot;, member-&gt;volume_out_level);</span>
<span style="color: #A00000">-        conference_member_say(member, msg, 0);</span>
<span style="color: #00A000">+        //switch_snprintf(msg, sizeof(msg), &quot;Volume level %d&quot;, member-&gt;volume_out_level);</span>
<span style="color: #00A000">+        //conference_member_say(member, msg, 0);</span>
<span style="color: #00A000">+</span>
 
<span style="color: #00A000">+        if (member-&gt;volume_out_level &lt; 0) {</span>
<span style="color: #00A000">+                switch_snprintf(msg, sizeof(msg), &quot;currency/negative.wav&quot;, member-&gt;volume_out_level);</span>
<span style="color: #00A000">+                conference_member_play_file(member, msg, 0);</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        switch_snprintf(msg, sizeof(msg), &quot;digits/%d.wav&quot;, abs(member-&gt;volume_out_level));</span>
<span style="color: #00A000">+        conference_member_play_file(member, msg, 0);</span>
 }
 
 static void conference_loop_fn_volume_talk_dn(conference_member_t *member, caller_control_action_t *action)
<span style="color: #800080; font-weight: bold">@@ -1745,8 +1782,16 @@ static void conference_loop_fn_volume_talk_dn(conference_member_t *member, calle</span>
         }
         unlock_member(member);
 
<span style="color: #A00000">-        switch_snprintf(msg, sizeof(msg), &quot;Volume level %d&quot;, member-&gt;volume_out_level);</span>
<span style="color: #A00000">-        conference_member_say(member, msg, 0);</span>
<span style="color: #00A000">+        //switch_snprintf(msg, sizeof(msg), &quot;Volume level %d&quot;, member-&gt;volume_out_level);</span>
<span style="color: #00A000">+        //conference_member_say(member, msg, 0);</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        if (member-&gt;volume_out_level &lt; 0) {</span>
<span style="color: #00A000">+                switch_snprintf(msg, sizeof(msg), &quot;currency/negative.wav&quot;, member-&gt;volume_out_level);</span>
<span style="color: #00A000">+                conference_member_play_file(member, msg, 0);</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        switch_snprintf(msg, sizeof(msg), &quot;digits/%d.wav&quot;, abs(member-&gt;volume_out_level));</span>
<span style="color: #00A000">+        conference_member_play_file(member, msg, 0);</span>
 }
 
 static void conference_loop_fn_volume_listen_up(conference_member_t *member, caller_control_action_t *action)
<span style="color: #800080; font-weight: bold">@@ -1770,8 +1815,17 @@ static void conference_loop_fn_volume_listen_up(conference_member_t *member, cal</span>
         }
         unlock_member(member);
 
<span style="color: #A00000">-        switch_snprintf(msg, sizeof(msg), &quot;Gain level %d&quot;, member-&gt;volume_in_level);</span>
<span style="color: #A00000">-        conference_member_say(member, msg, 0);</span>
<span style="color: #00A000">+        //switch_snprintf(msg, sizeof(msg), &quot;Gain level %d&quot;, member-&gt;volume_in_level);</span>
<span style="color: #00A000">+        //conference_member_say(member, msg, 0);</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        if (member-&gt;volume_in_level &lt; 0) {</span>
<span style="color: #00A000">+                switch_snprintf(msg, sizeof(msg), &quot;currency/negative.wav&quot;, member-&gt;volume_in_level);</span>
<span style="color: #00A000">+                conference_member_play_file(member, msg, 0);</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        switch_snprintf(msg, sizeof(msg), &quot;digits/%d.wav&quot;, abs(member-&gt;volume_in_level));</span>
<span style="color: #00A000">+        conference_member_play_file(member, msg, 0);</span>
<span style="color: #00A000">+</span>
 }
 
 static void conference_loop_fn_volume_listen_zero(conference_member_t *member, caller_control_action_t *action)
<span style="color: #800080; font-weight: bold">@@ -1794,8 +1848,17 @@ static void conference_loop_fn_volume_listen_zero(conference_member_t *member, c</span>
         }
         unlock_member(member);
 
<span style="color: #A00000">-        switch_snprintf(msg, sizeof(msg), &quot;Gain level %d&quot;, member-&gt;volume_in_level);</span>
<span style="color: #A00000">-        conference_member_say(member, msg, 0);</span>
<span style="color: #00A000">+        //switch_snprintf(msg, sizeof(msg), &quot;Gain level %d&quot;, member-&gt;volume_in_level);</span>
<span style="color: #00A000">+        //conference_member_say(member, msg, 0);</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        if (member-&gt;volume_in_level &lt; 0) {</span>
<span style="color: #00A000">+                switch_snprintf(msg, sizeof(msg), &quot;currency/negative.wav&quot;, member-&gt;volume_in_level);</span>
<span style="color: #00A000">+                conference_member_play_file(member, msg, 0);</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        switch_snprintf(msg, sizeof(msg), &quot;digits/%d.wav&quot;, abs(member-&gt;volume_in_level));</span>
<span style="color: #00A000">+        conference_member_play_file(member, msg, 0);</span>
<span style="color: #00A000">+        </span>
 }
 
 static void conference_loop_fn_volume_listen_dn(conference_member_t *member, caller_control_action_t *action)
<span style="color: #800080; font-weight: bold">@@ -1819,8 +1882,16 @@ static void conference_loop_fn_volume_listen_dn(conference_member_t *member, cal</span>
         }
         unlock_member(member);
 
<span style="color: #A00000">-        switch_snprintf(msg, sizeof(msg), &quot;Gain level %d&quot;, member-&gt;volume_in_level);</span>
<span style="color: #A00000">-        conference_member_say(member, msg, 0);</span>
<span style="color: #00A000">+        //switch_snprintf(msg, sizeof(msg), &quot;Gain level %d&quot;, member-&gt;volume_in_level);</span>
<span style="color: #00A000">+        //conference_member_say(member, msg, 0);</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        if (member-&gt;volume_in_level &lt; 0) {</span>
<span style="color: #00A000">+                switch_snprintf(msg, sizeof(msg), &quot;currency/negative.wav&quot;, member-&gt;volume_in_level);</span>
<span style="color: #00A000">+                conference_member_play_file(member, msg, 0);</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+    switch_snprintf(msg, sizeof(msg), &quot;digits/%d.wav&quot;, abs(member-&gt;volume_in_level));</span>
<span style="color: #00A000">+    conference_member_play_file(member, msg, 0);</span>
 }
 
 static void conference_loop_fn_event(conference_member_t *member, caller_control_action_t *action)
<span style="color: #800080; font-weight: bold">@@ -3441,8 +3512,11 @@ static void conference_list(conference_obj_t *conference, switch_stream_handle_t</span>
                         count++;
                 }
 
<span style="color: #A00000">-                stream-&gt;write_function(stream, &quot;%s%d%s%d%s%d\n&quot;, delim, member-&gt;agc_volume_in_level ? </span>
<span style="color: #A00000">-                                                           member-&gt;agc_volume_in_level : member-&gt;volume_in_level, delim, member-&gt;volume_out_level, delim, member-&gt;energy_level);</span>
<span style="color: #00A000">+                stream-&gt;write_function(stream, &quot;%s%d%s%d%s%d%s%d\n&quot;, delim,</span>
<span style="color: #00A000">+                                                           member-&gt;volume_in_level, </span>
<span style="color: #00A000">+                                                           delim,</span>
<span style="color: #00A000">+                                                           member-&gt;agc_volume_in_level,</span>
<span style="color: #00A000">+                                                           delim, member-&gt;volume_out_level, delim, member-&gt;energy_level);</span>
         }
 
         switch_mutex_unlock(conference-&gt;member_mutex);
<span style="color: #800080; font-weight: bold">@@ -3969,9 +4043,8 @@ static void conference_xlist(conference_obj_t *conference, switch_xml_t x_confer</span>
                 switch_snprintf(tmp, sizeof(tmp), &quot;%d&quot;, member-&gt;agc_volume_in_level ? member-&gt;agc_volume_in_level : member-&gt;volume_in_level);
                 x_tag = add_x_tag(x_member, &quot;input-volume&quot;, tmp, toff++);
 
<span style="color: #A00000">-                if (member-&gt;agc_volume_in_level) {</span>
<span style="color: #A00000">-                        switch_xml_set_attr_d(x_tag, &quot;auto&quot;, &quot;true&quot;);</span>
<span style="color: #A00000">-                }</span>
<span style="color: #00A000">+                switch_snprintf(tmp, sizeof(tmp), &quot;%d&quot;, member-&gt;agc_volume_in_level);</span>
<span style="color: #00A000">+                x_tag = add_x_tag(x_member, &quot;auto-adjusted-input-volume&quot;, tmp, toff++);</span>
 
         }
 
<span style="color: #000080; font-weight: bold">diff --git a/src/switch_resample.c b/src/switch_resample.c</span>
<span style="color: #000080; font-weight: bold">index 949b351..9c7f9b9 100644</span>
<span style="color: #A00000">--- a/src/switch_resample.c</span>
<span style="color: #00A000">+++ b/src/switch_resample.c</span>
<span style="color: #800080; font-weight: bold">@@ -309,22 +309,26 @@ SWITCH_DECLARE(void) switch_change_sln_volume_granular(int16_t *data, uint32_t s</span>
 SWITCH_DECLARE(void) switch_change_sln_volume(int16_t *data, uint32_t samples, int32_t vol)
 {
         double newrate = 0;
<span style="color: #A00000">-        int div = 0;</span>
<span style="color: #00A000">+        double pos[4] = {1.3, 2.3, 3.3, 4.3};</span>
<span style="color: #00A000">+        double neg[4] = {.80, .60, .40, .20};</span>
<span style="color: #00A000">+        double *chart;</span>
<span style="color: #00A000">+        uint32_t i;</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        if (vol == 0) return;</span>
 
         switch_normalize_volume(vol);
 
         if (vol &gt; 0) {
<span style="color: #A00000">-                vol++;</span>
<span style="color: #A00000">-        } else if (vol &lt; 0) {</span>
<span style="color: #A00000">-                vol--;</span>
<span style="color: #00A000">+                chart = pos;</span>
<span style="color: #00A000">+        } else {</span>
<span style="color: #00A000">+                chart = neg;</span>
         }
<span style="color: #00A000">+        </span>
<span style="color: #00A000">+        i = abs(vol) - 1;</span>
<span style="color: #00A000">+        </span>
<span style="color: #00A000">+        switch_assert(i &lt; 4);</span>
 
<span style="color: #A00000">-        newrate = vol * 1.3;</span>
<span style="color: #A00000">-</span>
<span style="color: #A00000">-        if (vol &lt; 0) {</span>
<span style="color: #A00000">-                newrate *= -1;</span>
<span style="color: #A00000">-                div++;</span>
<span style="color: #A00000">-        }</span>
<span style="color: #00A000">+        newrate = chart[i];</span>
 
         if (newrate) {
                 int32_t tmp;
<span style="color: #800080; font-weight: bold">@@ -332,7 +336,7 @@ SWITCH_DECLARE(void) switch_change_sln_volume(int16_t *data, uint32_t samples, i</span>
                 int16_t *fp = data;
 
                 for (x = 0; x &lt; samples; x++) {
<span style="color: #A00000">-                        tmp = (int32_t) (div ? fp[x] / newrate : fp[x] * newrate);</span>
<span style="color: #00A000">+                        tmp = (int32_t) (fp[x] * newrate);</span>
                         switch_normalize_to_16bit(tmp);
                         fp[x] = (int16_t) tmp;
                 }
</pre></div>
========================================================================<pre>

Summary of changes:
 .../applications/mod_conference/mod_conference.c   |  129 +++++++++++++++-----
 src/switch_resample.c                              |   26 +++--
 2 files changed, 116 insertions(+), 39 deletions(-)
</pre>
<p>this email was generated because of /git/your-repo.git/hooks/post-receive by the file /git-core/contrib/hooks/post-receive-email<br />
For more info, see <a href="http://blog.chomperstomp.com/?p=630">http://blog.chomperstomp.com/?p=630</a>
-- <br />
FreeSWITCH Source</p>