1/*
2 Copyright (C) 2013 Harald Sitter <sitter@kde.org>
3
4 This library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 2.1 of the License, or (at your option) any later version.
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 GNU
12 Lesser General Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public
15 License along with this library. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#include "equalizereffect.h"
19
20#include "mediaplayer.h"
21#include "utils/debug.h"
22
23namespace Phonon {
24namespace VLC {
25
26EqualizerEffect::EqualizerEffect(QObject *parent)
27 : QObject(parent)
28 , SinkNode()
29 , EffectInterface()
30 , m_equalizer(libvlc_audio_equalizer_new())
31{
32 // Amarok decided to make up rules because phonon didn't manage to
33 // pre-amp string needs to be pre-amp
34 // bands need to be xxHz
35 // That way they can be consistently mapped to localized/formatted strings.
36
37 EffectParameter preamp(-1, "pre-amp", {} /* hint */, 0.0f, -20.0f, 20.0f);
38 m_bands.append(t: preamp);
39
40 const unsigned int bandCount = libvlc_audio_equalizer_get_band_count();
41 for (unsigned int i = 0; i < bandCount; ++i) {
42 const float frequency = libvlc_audio_equalizer_get_band_frequency(u_index: i);
43 const QString name = QString("%1Hz").arg(a: QString::number(frequency));
44 EffectParameter parameter(i, name, {} /* hint */, 0.0f, -20.0f, 20.0f);
45 m_bands.append(t: parameter);
46 }
47}
48
49EqualizerEffect::~EqualizerEffect()
50{
51 libvlc_audio_equalizer_release(p_equalizer: m_equalizer);
52}
53
54QList<EffectParameter> EqualizerEffect::parameters() const
55{
56 return m_bands;
57}
58
59QVariant EqualizerEffect::parameterValue(const EffectParameter &parameter) const
60{
61 return libvlc_audio_equalizer_get_amp_at_index(p_equalizer: m_equalizer, u_band: parameter.id());
62}
63
64void EqualizerEffect::setParameterValue(const EffectParameter &parameter,
65 const QVariant &newValue)
66{
67 if (parameter.id() == -1)
68 libvlc_audio_equalizer_set_preamp(p_equalizer: m_equalizer, f_preamp: newValue.toFloat());
69 else
70 libvlc_audio_equalizer_set_amp_at_index(p_equalizer: m_equalizer, f_amp: newValue.toFloat(), u_band: parameter.id());
71}
72
73void EqualizerEffect::handleConnectToMediaObject(MediaObject *mediaObject)
74{
75 Q_UNUSED(mediaObject);
76 m_player->setEqualizer(m_equalizer);
77}
78
79} // namespace VLC
80} // namespace Phonon
81

source code of phonon-vlc/src/equalizereffect.cpp