mirror of
https://github.com/tomahawk-player/tomahawk.git
synced 2025-08-11 16:44:05 +02:00
Added Equalizer support on AudioEngine class
Two public methods added : * int equalizerBandCount() * bool setEqualizerBand(int band, int value) One private method : * void initEqualizer() Settings and GUI must be made in an external plugin
This commit is contained in:
@@ -182,6 +182,7 @@ AudioEngine::AudioEngine()
|
||||
d->waitingOnNewTrack = false;
|
||||
d->state = Stopped;
|
||||
d->coverTempFile = 0;
|
||||
d->audioEffect = 0;
|
||||
|
||||
d->s_instance = this;
|
||||
tDebug() << "Init AudioEngine";
|
||||
@@ -191,7 +192,7 @@ AudioEngine::AudioEngine()
|
||||
|
||||
d->mediaObject = new Phonon::MediaObject( this );
|
||||
d->audioOutput = new Phonon::AudioOutput( Phonon::MusicCategory, this );
|
||||
Phonon::createPath( d->mediaObject, d->audioOutput );
|
||||
d->audioPath = Phonon::createPath( d->mediaObject, d->audioOutput );
|
||||
|
||||
d->mediaObject->setTickInterval( 150 );
|
||||
connect( d->mediaObject, SIGNAL( stateChanged( Phonon::State, Phonon::State ) ), d_func(), SLOT( onStateChanged( Phonon::State, Phonon::State ) ) );
|
||||
@@ -207,6 +208,8 @@ AudioEngine::AudioEngine()
|
||||
onVolumeChanged( d->audioOutput->volume() );
|
||||
|
||||
setVolume( TomahawkSettings::instance()->volume() );
|
||||
|
||||
initEqualizer();
|
||||
}
|
||||
|
||||
|
||||
@@ -1231,3 +1234,55 @@ AudioEngine::setCurrentTrackPlaylist( const playlistinterface_ptr& playlist )
|
||||
emit currentTrackPlaylistChanged( d->currentTrackPlaylist );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
AudioEngine::initEqualizer()
|
||||
{
|
||||
Q_D( AudioEngine );
|
||||
|
||||
QList< Phonon::EffectDescription > effectDescriptions = Phonon::BackendCapabilities::availableAudioEffects();
|
||||
foreach ( Phonon::EffectDescription effectDesc, effectDescriptions )
|
||||
{
|
||||
if ( effectDesc.name().toLower().contains( "eq" ) )
|
||||
{
|
||||
d->audioEffect = new Phonon::Effect( effectDesc );
|
||||
d->audioPath.insertEffect( d->audioEffect );
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
AudioEngine::equalizerBandCount()
|
||||
{
|
||||
Q_D( AudioEngine );
|
||||
|
||||
if ( d->audioEffect )
|
||||
{
|
||||
QList< Phonon::EffectParameter > params = d->audioEffect->parameters();
|
||||
return params.size();
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
bool
|
||||
AudioEngine::setEqualizerBand( int band, int value )
|
||||
{
|
||||
Q_D( AudioEngine );
|
||||
|
||||
if ( d->audioEffect )
|
||||
{
|
||||
QList< Phonon::EffectParameter > params = d->audioEffect->parameters();
|
||||
if ( band < params.size() )
|
||||
{
|
||||
d->audioEffect->setParameterValue( params.at( band ), value );
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
@@ -62,6 +62,9 @@ public:
|
||||
qint64 currentTime() const;
|
||||
qint64 currentTrackTotalTime() const;
|
||||
|
||||
int equalizerBandCount();
|
||||
bool setEqualizerBand( int band, int value );
|
||||
|
||||
public slots:
|
||||
void playPause();
|
||||
void play();
|
||||
@@ -145,6 +148,7 @@ private:
|
||||
void queueState( AudioState state );
|
||||
void setState( AudioState state );
|
||||
void setCurrentTrackPlaylist( const Tomahawk::playlistinterface_ptr& playlist );
|
||||
void initEqualizer();
|
||||
|
||||
Q_DECLARE_PRIVATE( AudioEngine );
|
||||
AudioEnginePrivate* d_ptr;
|
||||
|
@@ -1,7 +1,10 @@
|
||||
|
||||
#include <phonon/MediaObject>
|
||||
#include <phonon/AudioOutput>
|
||||
#include <phonon/Path>
|
||||
#include <phonon/BackendCapabilities>
|
||||
#include <phonon/Effect>
|
||||
#include <phonon/EffectParameter>
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
@@ -37,6 +40,8 @@ private:
|
||||
|
||||
Phonon::MediaObject* mediaObject;
|
||||
Phonon::AudioOutput* audioOutput;
|
||||
Phonon::Path audioPath;
|
||||
Phonon::Effect* audioEffect;
|
||||
|
||||
unsigned int timeElapsed;
|
||||
bool expectStop;
|
||||
|
Reference in New Issue
Block a user