[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