1
/*  This file is part of the KDE project.
2
3
Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
4
5
This library is free software: you can redistribute it and/or modify
6
it under the terms of the GNU Lesser General Public License as published by
7
the Free Software Foundation, either version 2.1 or 3 of the License.
8
9
This library is distributed in the hope that it will be useful,
10
but WITHOUT ANY WARRANTY; without even the implied warranty of
11
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
GNU Lesser General Public License for more details.
13
14
You should have received a copy of the GNU Lesser General Public License
15
along with this library.  If not, see <http://www.gnu.org/licenses/>.
16
17
*/
18
19
#include <StereoWideningBase.h>
20
#include "stereowidening.h"
21
22
QT_BEGIN_NAMESPACE
23
24
using namespace Phonon;
25
using namespace Phonon::MMF;
26
27
// Define functions which depend on concrete native effect class name
28
PHONON_MMF_DEFINE_EFFECT_FUNCTIONS(StereoWidening)
29
30
/*! \class MMF::StereoWidening
31
  \internal
32
*/
33
34
StereoWidening::StereoWidening(QObject *parent, const QList<EffectParameter>& parameters)
35
    :   AbstractAudioEffect::AbstractAudioEffect(parent, parameters)
36
{
37
38
}
39
40
int StereoWidening::parameterChanged(const EffectParameter &param,
41
                                 const QVariant &value)
42
{
43
    Q_ASSERT_X(param.id() == ParameterBase, Q_FUNC_INFO, "Invalid parameter ID");
44
45
    const qreal externalLevel = value.toReal();
46
    const int internalLevel = param.toInternalValue(externalLevel);
47
48
    TRAPD(err, concreteEffect()->SetStereoWideningLevelL(internalLevel));
49
50
    return err;
51
}
52
53
//-----------------------------------------------------------------------------
54
// Static functions
55
//-----------------------------------------------------------------------------
56
57
const char* StereoWidening::description()
58
{
59
    return "Stereo widening";
60
}
61
62
bool StereoWidening::getParameters(CMdaAudioOutputStream *stream,
63
    QList<EffectParameter> &parameters)
64
{
65
    bool supported = false;
66
67
    QScopedPointer<CStereoWidening> effect;
68
    TRAPD(err, effect.reset(CStereoWidening::NewL(*stream)));
69
70
    if (KErrNone == err) {
71
        supported = true;
72
73
        const qreal defaultValue =
74
            Phonon::MMF::EffectParameter::toExternalValue
75
                (effect->StereoWideningLevel(), 0, 100);
76
77
        EffectParameter param(
78
             /* parameterId */        ParameterBase,
79
             /* name */               tr("Level (%)"),
80
             /* hints */              EffectParameter::IntegerHint,
81
             /* defaultValue */       QVariant(defaultValue),
82
             /* minimumValue */       QVariant(qreal(-1.0)),
83
             /* maximumValue */       QVariant(qreal(+1.0)));
84
85
        param.setInternalRange(0, 100);
86
        parameters.append(param);
87
    }
88
89
    return supported;
90
}
91
92
QT_END_NAMESPACE