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

Chetan Vaity chetanv at gmail.com
Mon Feb 9 00:10:22 CST 2009


OK.
Didn't know about _int64. Will do that.

Thanks!

- C

On Mon, Feb 9, 2009 at 3:00 AM, Vadim Lebedev <vadim at mbdsys.com> wrote:
> I wonder why are you using FP math?
>
> _int64 for accumulator would be pefectly ok here
>
>
> Thanks
> Vadim
>
> Le 8 févr. 09 à 20:24, chetanv at gmail.com a écrit :
>
>>
>> -----------------------------------------------------------
>> 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
>>
>
>



More information about the asterisk-dev mailing list