/* 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
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include "audioequalizer.h"
#include "bassboost.h"
#include "effectfactory.h"
QT_BEGIN_NAMESPACE
using namespace Phonon;
using namespace Phonon::MMF;
QHash EffectFactory::constructEffectDescription(const QString &name,
const QString &description)
{
QHash retval;
retval.insert("name", name);
retval.insert("description", description);
retval.insert("available", true);
return retval;
}
QHash EffectFactory::audioEffectDescriptions(AbstractAudioEffect::Type type)
{
switch (type)
{
case AbstractAudioEffect::EffectAudioEqualizer:
return constructEffectDescription(QObject::tr("audio equalizer"), "Audio equalizer.");
case AbstractAudioEffect::EffectBassBoost:
return constructEffectDescription(QObject::tr("Bass boost"), "Bass boost.");
case AbstractAudioEffect::EffectDistanceAttenuation:
return constructEffectDescription(QObject::tr("Distance Attenuation"), "Distance Attenuation.");
case AbstractAudioEffect::EffectEnvironmentalReverb:
return constructEffectDescription(QObject::tr("Environmental Reverb"), "Environmental Reverb.");
case AbstractAudioEffect::EffectListenerOrientation:
return constructEffectDescription(QObject::tr("Environmental Reverb"), "Environmental Reverb.");
case AbstractAudioEffect::EffectLoudness:
return constructEffectDescription(QObject::tr("Loudness"), "Loudness.");
//case EffectRoomLevel:
case AbstractAudioEffect::EffectSourceOrientation:
return constructEffectDescription(QObject::tr("Source Orientation"), "Source Orientation.");
case AbstractAudioEffect::EffectStereoWidening:
return constructEffectDescription(QObject::tr("Stereo Widening"), "Stereo Widening.");
}
Q_ASSERT_X(false, Q_FUNC_INFO, "Unknown effect type.");
return QHash();
}
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:
//AbstractAudioEffect::EffectRoomLevel,
case AbstractAudioEffect::EffectSourceOrientation:
case AbstractAudioEffect::EffectStereoWidening:
;
}
Q_ASSERT_X(false, Q_FUNC_INFO, "Unknown effect.");
return 0;
}
template
bool isEffectSupported()
{
AudioPlayer audioPlayer;
QScopedPointer eff;
TRAPD(errorCode, eff.reset(TEffect::NewL(*audioPlayer.player())));
return errorCode != KErrNone;
}
QList EffectFactory::effectIndexes()
{
QList retval;
if (isEffectSupported())
retval.append(AbstractAudioEffect::EffectAudioEqualizer);
if (isEffectSupported())
retval.append(AbstractAudioEffect::EffectBassBoost);
if (isEffectSupported())
retval.append(AbstractAudioEffect::EffectDistanceAttenuation);
if (isEffectSupported())
retval.append(AbstractAudioEffect::EffectEnvironmentalReverb);
if (isEffectSupported())
retval.append(AbstractAudioEffect::EffectLoudness);
if (isEffectSupported())
retval.append(AbstractAudioEffect::EffectListenerOrientation);
if (isEffectSupported())
retval.append(AbstractAudioEffect::EffectSourceOrientation);
/*
if (isEffectSupported())
retval.append(EffectRoomLevel);
*/
if (isEffectSupported())
retval.append(AbstractAudioEffect::EffectStereoWidening);
return retval;
}
QT_END_NAMESPACE