[asterisk-dev] [Code Review] Automatic Gain Normalization in meetme
Vadim Lebedev
vadim at mbdsys.com
Mon Feb 9 07:26:36 CST 2009
Steve Underwood wrote:
> Vadim Lebedev wrote:
>
>> I wonder why are you using FP math?
>>
>>
> He probably wants to maxmise speed.
>
>> _int64 for accumulator would be pefectly ok here
>>
>>
> Maybe, but it will be slower on a 32 bit machines, and no better on 64
> bit machines.
>
>
It'l be slower on 32 bit machines having an FPU... like X86. On most
ARM's it will be faster than floating point emulators
Maybe conditional compilation is in order here...
Thanks
Vadim
> Regards,
> Steve
>
>
>> 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
>>>
>>>
>>>
>
>
> _______________________________________________
> --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 --------------
An HTML attachment was scrubbed...
URL: http://lists.digium.com/pipermail/asterisk-dev/attachments/20090209/4c4edeff/attachment.htm
More information about the asterisk-dev
mailing list