/* This file is part of the KDE project. Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). This library is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 2.1 or 3 of the License. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library. If not, see . */ #include #include "audioequalizer.h" QT_BEGIN_NAMESPACE using namespace Phonon; using namespace Phonon::MMF; /*! \class MMF::AudioEqualizer \internal */ AudioEqualizer::AudioEqualizer(QObject *parent, const QList ¶meters) : AbstractAudioEffect::AbstractAudioEffect(parent, parameters) { } void AudioEqualizer::parameterChanged(const int pid, const QVariant &value) { if (m_effect.data()) { const int band = pid; const int level = value.toInt(); setBandLevel(band, level); } } void AudioEqualizer::connectAudioPlayer(AudioPlayer::NativePlayer *player) { CAudioEqualizer *ptr = 0; QT_TRAP_THROWING(ptr = CAudioEqualizer::NewL(*player)); m_effect.reset(ptr); } void AudioEqualizer::applyParameters() { if (m_effect.data()) { EffectParameter param; foreach (param, parameters()) { const int band = param.id(); const int level = parameterValue(param).toInt(); setBandLevel(band, level); } } } void AudioEqualizer::setBandLevel(int band, int level) { CAudioEqualizer *const effect = static_cast(m_effect.data()); // TODO: handle audio effect errors TRAP_IGNORE(effect->SetBandLevelL(band, level)); } //----------------------------------------------------------------------------- // Static functions //----------------------------------------------------------------------------- const char* AudioEqualizer::description() { return "Audio equalizer"; } void AudioEqualizer::getParameters(NativeEffect *effect, QList ¶meters) { TInt32 dbMin; TInt32 dbMax; effect->DbLevelLimits(dbMin, dbMax); const int bandCount = effect->NumberOfBands(); // For some reason, band IDs are 1-based, as opposed to the // 0-based indices used in just about other Symbian API...! for (int i = 1; i <= bandCount; ++i) { const qint32 hz = effect->CenterFrequency(i); const qint32 defVol = effect->BandLevel(i); parameters.append(EffectParameter( /* parameterId */ i, /* name */ tr("%1 Hz").arg(hz), /* hints */ EffectParameter::LogarithmicHint, /* defaultValue */ QVariant(qint32(defVol)), /* minimumValue */ QVariant(qint32(dbMin)), /* maximumValue */ QVariant(qint32(dbMax)), /* values */ QVariantList(), /* description */ QString())); } } QT_END_NAMESPACE