--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/3rdparty/phonon/mmf/effectfactory.cpp Mon Jan 11 14:00:40 2010 +0000
@@ -0,0 +1,155 @@
+/* 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 <http://www.gnu.org/licenses/>.
+
+*/
+
+#include <QObject>
+#include <QCoreApplication>
+
+#include <AudioEqualizerBase.h>
+#include <BassBoostBase.h>
+#include <DistanceAttenuationBase.h>
+#include <DopplerBase.h>
+#include <EnvironmentalReverbBase.h>
+#include <ListenerOrientationBase.h>
+#include <LocationBase.h>
+#include <LoudnessBase.h>
+#include <SourceOrientationBase.h>
+#include <StereoWideningBase.h>
+
+#include "audioequalizer.h"
+#include "bassboost.h"
+
+#include "effectfactory.h"
+
+QT_BEGIN_NAMESPACE
+
+using namespace Phonon;
+using namespace Phonon::MMF;
+
+/*! \class MMF::EffectFactory
+ \internal
+*/
+
+QHash<QByteArray, QVariant> EffectFactory::constructEffectDescription(const QString &name,
+ const QString &description)
+{
+ QHash<QByteArray, QVariant> retval;
+
+ retval.insert("name", name);
+ retval.insert("description", description);
+ retval.insert("available", true);
+
+ return retval;
+}
+
+
+QHash<QByteArray, QVariant> EffectFactory::audioEffectDescriptions(AbstractAudioEffect::Type type)
+{
+ switch (type)
+ {
+ case AbstractAudioEffect::EffectAudioEqualizer:
+ return constructEffectDescription(QCoreApplication::translate("Phonon::MMF::EffectFactory", "audio equalizer"), "Audio equalizer.");
+ case AbstractAudioEffect::EffectBassBoost:
+ return constructEffectDescription(QCoreApplication::translate("Phonon::MMF::EffectFactory", "Bass boost"), "Bass boost.");
+ case AbstractAudioEffect::EffectDistanceAttenuation:
+ return constructEffectDescription(QCoreApplication::translate("Phonon::MMF::EffectFactory", "Distance Attenuation"), "Distance Attenuation.");
+ case AbstractAudioEffect::EffectEnvironmentalReverb:
+ return constructEffectDescription(QCoreApplication::translate("Phonon::MMF::EffectFactory", "Environmental Reverb"), "Environmental Reverb.");
+ case AbstractAudioEffect::EffectListenerOrientation:
+ return constructEffectDescription(QCoreApplication::translate("Phonon::MMF::EffectFactory", "Environmental Reverb"), "Environmental Reverb.");
+ case AbstractAudioEffect::EffectLoudness:
+ return constructEffectDescription(QCoreApplication::translate("Phonon::MMF::EffectFactory", "Loudness"), "Loudness.");
+ case AbstractAudioEffect::EffectSourceOrientation:
+ return constructEffectDescription(QCoreApplication::translate("Phonon::MMF::EffectFactory", "Source Orientation"), "Source Orientation.");
+ case AbstractAudioEffect::EffectStereoWidening:
+ return constructEffectDescription(QCoreApplication::translate("Phonon::MMF::EffectFactory", "Stereo Widening"), "Stereo Widening.");
+ }
+
+ Q_ASSERT_X(false, Q_FUNC_INFO, "Unknown effect type.");
+ return QHash<QByteArray, QVariant>();
+}
+
+AbstractAudioEffect *EffectFactory::createAudioEffect(AbstractAudioEffect::Type type,
+ QObject *parent)
+{
+ Q_ASSERT(parent);
+
+ switch (type)
+ {
+ case AbstractAudioEffect::EffectBassBoost:
+ return new BassBoost(parent);
+ case AbstractAudioEffect::EffectAudioEqualizer:
+ return new AudioEqualizer(parent);
+ case AbstractAudioEffect::EffectDistanceAttenuation:
+ case AbstractAudioEffect::EffectEnvironmentalReverb:
+ case AbstractAudioEffect::EffectListenerOrientation:
+ case AbstractAudioEffect::EffectLoudness:
+ case AbstractAudioEffect::EffectSourceOrientation:
+ case AbstractAudioEffect::EffectStereoWidening:
+ ;
+ }
+
+ Q_ASSERT_X(false, Q_FUNC_INFO, "Unknown effect.");
+ return 0;
+}
+
+template<typename TEffect>
+bool isEffectSupported()
+{
+ AudioPlayer audioPlayer;
+
+ QScopedPointer<TEffect> eff;
+ TRAPD(errorCode, eff.reset(TEffect::NewL(*audioPlayer.player())));
+
+ return errorCode != KErrNone;
+}
+
+QList<int> EffectFactory::effectIndexes()
+{
+ QList<int> retval;
+
+ if (isEffectSupported<CAudioEqualizer>())
+ retval.append(AbstractAudioEffect::EffectAudioEqualizer);
+
+ if (isEffectSupported<CBassBoost>())
+ retval.append(AbstractAudioEffect::EffectBassBoost);
+
+ /* We haven't implemented these yet.
+ if (isEffectSupported<CDistanceAttenuation>())
+ retval.append(AbstractAudioEffect::EffectDistanceAttenuation);
+
+ if (isEffectSupported<CEnvironmentalReverb>())
+ retval.append(AbstractAudioEffect::EffectEnvironmentalReverb);
+
+ if (isEffectSupported<CLoudness>())
+ retval.append(AbstractAudioEffect::EffectLoudness);
+
+ if (isEffectSupported<CListenerOrientation>())
+ retval.append(AbstractAudioEffect::EffectListenerOrientation);
+
+ if (isEffectSupported<CSourceOrientation>())
+ retval.append(AbstractAudioEffect::EffectSourceOrientation);
+
+ if (isEffectSupported<CStereoWidening>())
+ retval.append(AbstractAudioEffect::EffectStereoWidening);
+ */
+
+ return retval;
+}
+
+QT_END_NAMESPACE
+