[mythtv] AGC for audio
Håkon Alstadheim
hakon at alstadheim.priv.no
Fri May 16 11:54:03 UTC 2008
John Fulton wrote:
> Mark Spieth wrote:
>
>>> Hi devs,
>>>
>>> With a recent upgrade to 0.21 I found that audio channels from my DVB
>>> tuners and the DVD were low - in my setup this was obvious with
>>> mythmusic starting mp3 playback after exiting a video recording and the
>>> speaker cones nearly flying across the room. I've also noticed that
>>> other users complain about varying levels between channels or tuners.
>>>
>>> I've coded up a simple Auto Gain Control (AGC) based on this post
>>> http://www.dsprelated.com/showmessage/21943/1.php . It's modified to
>>> take into account that the gain can go too high during periods of
>>> silence.
>>>
>>> I placed the call to ManageAGC() in AddAudioData() before any calls to
>>> AddSamples() in NuppleVideoPlayer.cpp . It seems to be working well. In
>>> normal operation it has two floating point multiplications and 2
>>> add/subtracts per an audio sample.
>>>
>>> I've coded it against the release-0-21-fixes branch and placed a svn
>>> diff patch here if anyone would like to try it out:
>>> http://people.connect.net.au/bf/john/agc_svn_diff
>>>
>> nice and simple. Ive always refrained from agc as it usually adds
>> artifacts.
>> however, it could go in audiooutputbase (the correct place for this).
>> with a config item for enabling in DB and mythfrontend setup.
>> also gain needs to be scaled with samplerate so that the timeconstant
>> remains "constant" with varying samplerates.
>>
>> how well does it work with speech as I can see this amplifying
>> background noise and then making sudden bursts of speech too loud.
>>
>> also why did you choose 0.05 as the set point.
>>
>> cheers
>> mark
>>
> I made the gain as small as possible (1e-9) to avoid amplifying noise
> around speech. It can not be set any smaller unless the floating point
> variables are double. Having the gain so low means that it will respond
> slowly to overall changes in volume.
>
> As to how well it works for speech: I tested it against the evening news
> (ABC Australia) and the following current affairs program with no
> problems. For large changes in volume level I tested against a couple
> of David Attenborough wildlife specials - this has quite animals
> together with David's (relatively loud to the animals) voice over.
> As for action stuff I've tested it with a DVD of Fantastic 4 and DVB
> broadcast of Pirates of the Caribbean. I didn't notice any artefacts.
>
> I can see that an analogue tuner combined with large instantaneous noise
> - light switch turning on or lighting - may cause short (30 seconds) of
> low audio volume.
>
> As to the set point. This was set more with trial and error, The value
> 0.05 * NUM_MAX just made the code which cuts in against over-driving the
> output trigger less often. Values up to 0.2 seem acceptable.
>
Interesting. How about some soft music followed by a commercial break ?
Falling asleep to Katie Meluha and waking up to a detergent song is
among the worst things in life.
--
Håkon Alstadheim
47 35 39 38
More information about the mythtv-dev
mailing list