source: trunk/src/3rdparty/phonon/mmf/audioequalizer.cpp

Last change on this file was 651, checked in by Dmitry A. Kuminov, 16 years ago

trunk: Merged in qt 4.6.2 sources.

  • Property svn:eol-style set to native
File size: 3.3 KB
Line 
1/* This file is part of the KDE project.
2
3Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
4
5This library is free software: you can redistribute it and/or modify
6it under the terms of the GNU Lesser General Public License as published by
7the Free Software Foundation, either version 2.1 or 3 of the License.
8
9This library is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU Lesser General Public License for more details.
13
14You should have received a copy of the GNU Lesser General Public License
15along with this library. If not, see <http://www.gnu.org/licenses/>.
16
17*/
18
19#include <AudioEqualizerBase.h>
20#include "audioequalizer.h"
21
22QT_BEGIN_NAMESPACE
23
24using namespace Phonon;
25using namespace Phonon::MMF;
26
27/*! \class MMF::AudioEqualizer
28 \internal
29*/
30
31// Define functions which depend on concrete native effect class name
32PHONON_MMF_DEFINE_EFFECT_FUNCTIONS(AudioEqualizer)
33
34AudioEqualizer::AudioEqualizer(QObject *parent, const QList<EffectParameter>& parameters)
35 : AbstractAudioEffect::AbstractAudioEffect(parent, parameters)
36{
37
38}
39
40int AudioEqualizer::effectParameterChanged(const EffectParameter &param,
41 const QVariant &value)
42{
43 const int band = param.id() - ParameterBase + 1;
44
45 const qreal externalLevel = value.toReal();
46 const int internalLevel = param.toInternalValue(externalLevel);
47
48 TRAPD(err, concreteEffect()->SetBandLevelL(band, internalLevel));
49 return err;
50}
51
52
53//-----------------------------------------------------------------------------
54// Static functions
55//-----------------------------------------------------------------------------
56
57const char* AudioEqualizer::description()
58{
59 return "Audio equalizer";
60}
61
62bool AudioEqualizer::getParameters(CMdaAudioOutputStream *stream,
63 QList<EffectParameter>& parameters)
64{
65 bool supported = false;
66
67 QScopedPointer<CAudioEqualizer> effect;
68 TRAPD(err, effect.reset(CAudioEqualizer::NewL(*stream)));
69
70 if (KErrNone == err) {
71 supported = true;
72
73 TInt32 dbMin;
74 TInt32 dbMax;
75 effect->DbLevelLimits(dbMin, dbMax);
76
77 const int bandCount = effect->NumberOfBands();
78
79 for (int i = 0; i < bandCount; ++i) {
80 // For some reason, band IDs are 1-based, as opposed to the
81 // 0-based indices used in just about other Symbian API...!
82 const int band = i + 1;
83
84 const qint32 hz = effect->CenterFrequency(band);
85
86 // We pass a floating-point parameter range of -1.0 to +1.0 for
87 // each band in order to work around a limitation in
88 // Phonon::EffectWidget. See documentation of EffectParameter
89 // for more details.
90 EffectParameter param(
91 /* parameterId */ ParameterBase + i,
92 /* name */ tr("%1 Hz").arg(hz),
93 /* hints */ EffectParameter::LogarithmicHint,
94 /* defaultValue */ QVariant(qreal(0.0)),
95 /* minimumValue */ QVariant(qreal(-1.0)),
96 /* maximumValue */ QVariant(qreal(+1.0)));
97
98 param.setInternalRange(dbMin, dbMax);
99 parameters.append(param);
100 }
101 }
102
103 return supported;
104}
105
106QT_END_NAMESPACE
Note: See TracBrowser for help on using the repository browser.