diff options
author | Gareth Stockwell <ext-gareth.stockwell@nokia.com> | 2010-01-08 18:09:27 (GMT) |
---|---|---|
committer | Gareth Stockwell <ext-gareth.stockwell@nokia.com> | 2010-01-08 18:09:27 (GMT) |
commit | 4c95ec342c62183ecc3dffe50497b4858bc27c8d (patch) | |
tree | 3888d6454c4e7d346ddcf9ff5d3b63b6b15ecd20 /src/plugins/phonon | |
parent | d44c661d75ff6edcabf70b188b18bc991611628b (diff) | |
download | Qt-4c95ec342c62183ecc3dffe50497b4858bc27c8d.zip Qt-4c95ec342c62183ecc3dffe50497b4858bc27c8d.tar.gz Qt-4c95ec342c62183ecc3dffe50497b4858bc27c8d.tar.bz2 |
Implemented audio effects capability querying in Phonon MMF backend
This patch addresses the following deficiencies in the existing
implementation of audio effects:
1. Native effect objects (e.g. CAudioEqualizer, CBassBoost etc)
were created frequently, just in order to check whether a given
effect is supported, or retrieve the list of parameters which it
requires. Although this is in part due to a deficiency in the
S60 audio effects API (it doesn't have a 'capability query' concept),
it can be improved by using caching. This patch introduces a
singleton EffectFactory object, which lazily initializes a data
structure containing information about support and parameters.
2. In order to either query effect support, the native effect object
ultimately needs to access a DevSound instance. Previously, the
effect object was provided with a CMdaAudioPlayerUtility object.
If this player utility has not loaded an MMF controller plugin
*before* the effects object makes any calls to the player utility,
incorrect results will be returned. This was observed in the
previous code. For querying, we don't actually need to load an
MMF controller; instead, we would like to directly provide a
CMMFDevSound instance to the effect object. Unfortunately, this
API is not available in public S60 SDKs, so we must use the next
lowest interface available, namely CMdaAudioOutputStream.
By making this change, this patch ensures that support and parameter
queries made via the EffectFactory will return the correct result.
At this point, however, effect settings made via the Phonon API
are not actually applied to the audio output. Fixing this will
require notifying the audio effects backend nodes of state changes
in the MediaObject.
Task-number: QTBUG-4659
Reviewed-by: Espen Riskedal
Diffstat (limited to 'src/plugins/phonon')
-rw-r--r-- | src/plugins/phonon/mmf/mmf.pro | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/src/plugins/phonon/mmf/mmf.pro b/src/plugins/phonon/mmf/mmf.pro index 854f893..65a7a29 100644 --- a/src/plugins/phonon/mmf/mmf.pro +++ b/src/plugins/phonon/mmf/mmf.pro @@ -81,6 +81,7 @@ LIBS += -lws32 # For RWindow LIBS += -lefsrv # For file server LIBS += -lapgrfx -lapmime # For recognizer LIBS += -lmmfcontrollerframework # For CMMFMetaDataEntry +LIBS += -lmediaclientaudiostream # For CMdaAudioOutputStream # These are for effects. LIBS += -lAudioEqualizerEffect -lBassBoostEffect -lDistanceAttenuationEffect -lDopplerBase -lEffectBase -lEnvironmentalReverbEffect -lListenerDopplerEffect -lListenerLocationEffect -lListenerOrientationEffect -lLocationBase -lLoudnessEffect -lOrientationBase -lSourceDopplerEffect -lSourceLocationEffect -lSourceOrientationEffect -lStereoWideningEffect |