[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