| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
Task-number: QTBUG-4659
Reviewed-by: Espen Riskedal
|
|
|
|
|
| |
Task-number: QTBUG-4659
Reviewed-by: Espen Riskedal
|
|
|
|
|
| |
Task-number: QTBUG-4659
Reviewed-by: Espen Riskedal
|
|
|
|
|
| |
Task-number: QTBUG-4659
Reviewed-by: Espen Riskedal
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
By refactoring the static capabilities / parameters interface
exposed by AbstractAudioEffect-derived classes to the EffectFactory,
the latter's implementation no longer needs access to the headers
for native effect classes.
Previously, during the initialization phase, the EffectFactory
tried to create an instance of each native effect class, in order to
determine whether that effect is supported. This is now done inside
the backend class for each effect, thereby improving encapsulation.
Task-number: QTBUG-4659
Reviewed-by: Espen Riskedal
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When applying effects to an audio stream, we must ensure that the MMF
utility API (CMdaAudioPlayerUtility or CVideoPlayerUtility) instance has
loaded a controller before calling attempting to create a CAudioEffect-
derived object. If the controller has not been loaded, construction of
the effect object will fail. Even if we mitigate against this, calling
CAudioEffect::ApplyL() will only have an effect if there is a controller
object - or more precisely, a DevSound instance - on which to apply the
effect.
This patch delays construction of the effect object until the MediaObject
has transitioned out of the LoadingState, indicating that an underlying
DevSound instance will have been created.
Task-number: QTBUG-4659
Reviewed-by: Espen Riskedal
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This change is to work around a limitation in the Phonon::EffectWidget
class. This widget only displays sliders for parameters with numeric
values if the variant type of the parameter is QReal and the range is
exactly -1.0 to +1.0; otherwise, a spinbox is displayed. This is
rather inconvenient for many effects, such as the audio equalizer, for
which a slider is a much more natural UI control.
The MMF backend therefore reports the type of numeric parameters to
be QReal, and the range to be -1.0 to +1.0. Internally, the integer
range for the parameter is stored. Changes to the parameter value are
converted from the client-side, floating point representation to the
internal, integer representation.
Task-number: QTBUG-4659
Reviewed-by: Espen Riskedal
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
| |
Removed calls to the video overload of the audio effect
constructors, e.g. CAudioEqualizer::NewL(VideoPlayerUtility&)
Task-number: QTBUG-7223
Reviewed-by: trustme
|
|
|
|
|
| |
Task-number: QTBUG-4663
Reviewed-by: Frans Englich
|
|
|
|
|
|
| |
The constructor initializer relied on member variables.
Task-number: QTBUG-4689
|
|
|
|
|
|
| |
- Forward declaration of QScopedPointer containee type was causing an error
- Audio effect libraries were declared in the .pro file as e.g. -lBassBoostEffect.lib, causing toolchain to try to link statically
- Added several missing MMF:: namespace qualifiers
|
|
|
|
|
| |
Previously the MediaObject propagation was only done for effects, but now it's
for all kinds of nodes. This is needed for AudioOutput.
|
|
This extends the framework for being able to handle audio effects, largely
affecting how the audio chain is set up, connected and disconnected, and
therefore the Backend has been refactored slightly, and the class MediaNode
introduced, see its documentation.
In addition two effects has been written: BassBoost and AudioEqualizer.
|