1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-08-12 00:54:20 +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:
dridri
2013-07-10 01:23:56 +00:00
committed by Dominik Schmidt
parent 18e1fa1585
commit c8ec48577e
3 changed files with 65 additions and 1 deletions

View File

@@ -182,6 +182,7 @@ AudioEngine::AudioEngine()
d->waitingOnNewTrack = false; d->waitingOnNewTrack = false;
d->state = Stopped; d->state = Stopped;
d->coverTempFile = 0; d->coverTempFile = 0;
d->audioEffect = 0;
d->s_instance = this; d->s_instance = this;
tDebug() << "Init AudioEngine"; tDebug() << "Init AudioEngine";
@@ -191,7 +192,7 @@ AudioEngine::AudioEngine()
d->mediaObject = new Phonon::MediaObject( this ); d->mediaObject = new Phonon::MediaObject( this );
d->audioOutput = new Phonon::AudioOutput( Phonon::MusicCategory, 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 ); d->mediaObject->setTickInterval( 150 );
connect( d->mediaObject, SIGNAL( stateChanged( Phonon::State, Phonon::State ) ), d_func(), SLOT( onStateChanged( Phonon::State, Phonon::State ) ) ); 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() ); onVolumeChanged( d->audioOutput->volume() );
setVolume( TomahawkSettings::instance()->volume() ); setVolume( TomahawkSettings::instance()->volume() );
initEqualizer();
} }
@@ -1231,3 +1234,55 @@ AudioEngine::setCurrentTrackPlaylist( const playlistinterface_ptr& playlist )
emit currentTrackPlaylistChanged( d->currentTrackPlaylist ); 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;
}

View File

@@ -62,6 +62,9 @@ public:
qint64 currentTime() const; qint64 currentTime() const;
qint64 currentTrackTotalTime() const; qint64 currentTrackTotalTime() const;
int equalizerBandCount();
bool setEqualizerBand( int band, int value );
public slots: public slots:
void playPause(); void playPause();
void play(); void play();
@@ -145,6 +148,7 @@ private:
void queueState( AudioState state ); void queueState( AudioState state );
void setState( AudioState state ); void setState( AudioState state );
void setCurrentTrackPlaylist( const Tomahawk::playlistinterface_ptr& playlist ); void setCurrentTrackPlaylist( const Tomahawk::playlistinterface_ptr& playlist );
void initEqualizer();
Q_DECLARE_PRIVATE( AudioEngine ); Q_DECLARE_PRIVATE( AudioEngine );
AudioEnginePrivate* d_ptr; AudioEnginePrivate* d_ptr;

View File

@@ -1,7 +1,10 @@
#include <phonon/MediaObject> #include <phonon/MediaObject>
#include <phonon/AudioOutput> #include <phonon/AudioOutput>
#include <phonon/Path>
#include <phonon/BackendCapabilities> #include <phonon/BackendCapabilities>
#include <phonon/Effect>
#include <phonon/EffectParameter>
#include <stdint.h> #include <stdint.h>
@@ -37,6 +40,8 @@ private:
Phonon::MediaObject* mediaObject; Phonon::MediaObject* mediaObject;
Phonon::AudioOutput* audioOutput; Phonon::AudioOutput* audioOutput;
Phonon::Path audioPath;
Phonon::Effect* audioEffect;
unsigned int timeElapsed; unsigned int timeElapsed;
bool expectStop; bool expectStop;