[asterisk-dev] [Code Review] Automatic Gain Normalization in meetme

David Hansen applexpanther at mac.com
Sun Feb 8 13:30:11 CST 2009


This would be great.  I get a lot of complaints about volume levels  
when people use meetme.

On Feb 8, 2009, at 1:24 PM, chetanv at gmail.com wrote:

>
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> http://reviewboard.digium.com/r/146/
> -----------------------------------------------------------
>
> Review request for Asterisk Developers.
>
>
> Summary
> -------
>
> Often during an audio conference, one of the participants has set a  
> high mic volume. Whenever he speaks, the other listeners hear his  
> relatively high volume. Similarly, someone has a low voice or has  
> set a low mic volume. Other participants have to strain to hear him.
>
> This patch tries to overcome this problem by estimating the volume  
> of the participants and adjusting their gain. This adjustment is  
> done every 2 seconds in the meetme app.
>
> The patch adds a "g" flag to the meetme app. This option is tied up  
> with the "T" flag - talker detection. Both have to be on for this to  
> work.
>
> Changes are in apps/app_meetme.c, include/asterisk/dsp.h, main/dsp.c
>
> In app_meetme, if the user is talking, his frame is used for gain  
> related calculations (ast_dsp_gain()) and his volume is adjusted  
> using the current value of the gain multiplication factor.
> The current gain multiplication factor is based on the past 100  
> frames of that user (past 2 seconds).
>
> Three new fields have been added to ast_dsp structure:
>  * gain_mult_factor: The gain multiplication factor
>  * gain_buckets[]: The buckets array used in estimating the value of  
> the gain multiplication factor
>  * numgainframes: Number of gain frames which have been processed
>
> For every frame, the RMS gain (actually - square of RMS) is  
> calculated and bucketed into 10 buckets (histogram). After 100  
> frames are bucketed this way, the histogram is used to estimate the  
> gain multiplication factor. Starting from the right side of the  
> histogram, the bucket with at-least 4 frames is picked and the  
> corresponding gain multiplication factor is chosen. (There is a on- 
> to-one mapping between the buckets of the histogram and the gain  
> multiplication factor - GMF_VALUES[])
>
>
> Diffs
> -----
>
>  trunk/apps/app_meetme.c 169716
>  trunk/include/asterisk/dsp.h 169716
>  trunk/main/dsp.c 169716
>
> Diff: http://reviewboard.digium.com/r/146/diff
>
>
> Testing
> -------
>
>
> Thanks,
>
> chetanv
>
>
> _______________________________________________
> --Bandwidth and Colocation Provided by http://www.api-digital.com--
>
> asterisk-dev mailing list
> To UNSUBSCRIBE or update options visit:
>   http://lists.digium.com/mailman/listinfo/asterisk-dev

-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 1733 bytes
Desc: not available
Url : http://lists.digium.com/pipermail/asterisk-dev/attachments/20090208/67226983/attachment.bin 


More information about the asterisk-dev mailing list