diff options
Diffstat (limited to 'src/plugins/Output/alsa')
| -rw-r--r-- | src/plugins/Output/alsa/outputalsa.cpp | 44 | ||||
| -rw-r--r-- | src/plugins/Output/alsa/outputalsa.h | 15 | ||||
| -rw-r--r-- | src/plugins/Output/alsa/outputalsafactory.cpp | 4 | ||||
| -rw-r--r-- | src/plugins/Output/alsa/outputalsafactory.h | 6 |
4 files changed, 32 insertions, 37 deletions
diff --git a/src/plugins/Output/alsa/outputalsa.cpp b/src/plugins/Output/alsa/outputalsa.cpp index 097e7790e..8aad0fb58 100644 --- a/src/plugins/Output/alsa/outputalsa.cpp +++ b/src/plugins/Output/alsa/outputalsa.cpp @@ -359,7 +359,7 @@ void OutputALSA::uninitialize() } /* ****** MIXER ******* */ -VolumeControlALSA::VolumeControlALSA(QObject *parent) : VolumeControl(parent) +VolumeALSA::VolumeALSA() { //alsa mixer mixer = 0; @@ -370,42 +370,40 @@ VolumeControlALSA::VolumeControlALSA(QObject *parent) : VolumeControl(parent) } -VolumeControlALSA::~VolumeControlALSA() +VolumeALSA::~VolumeALSA() { if (mixer) snd_mixer_close(mixer); } -void VolumeControlALSA::setVolume(int l, int r) +void VolumeALSA::setVolume(int channel, int value) { - if (!pcm_element) return; - snd_mixer_selem_set_playback_volume(pcm_element, - SND_MIXER_SCHN_FRONT_LEFT, l); - snd_mixer_selem_set_playback_volume(pcm_element, - SND_MIXER_SCHN_FRONT_RIGHT, r); + _snd_mixer_selem_channel_id channel_id = SND_MIXER_SCHN_FRONT_LEFT; + if(channel == Volume::RIGHT_CHANNEL) + channel_id = SND_MIXER_SCHN_FRONT_RIGHT; + + snd_mixer_selem_set_playback_volume(pcm_element, channel_id, value); } -void VolumeControlALSA::volume(int *l, int *r) +int VolumeALSA::volume(int channel) { if (!pcm_element) - return; + return 0; - long ll = *l, lr = *r; + _snd_mixer_selem_channel_id channel_id = SND_MIXER_SCHN_FRONT_LEFT; + if(channel == Volume::RIGHT_CHANNEL) + channel_id = SND_MIXER_SCHN_FRONT_RIGHT; + + long value = 0; snd_mixer_handle_events(mixer); - snd_mixer_selem_get_playback_volume(pcm_element, - SND_MIXER_SCHN_FRONT_LEFT, &ll); - snd_mixer_selem_get_playback_volume(pcm_element, - SND_MIXER_SCHN_FRONT_RIGHT, &lr); - *l = ll; - *r = lr; + snd_mixer_selem_get_playback_volume(pcm_element, channel_id, &value); + return value; } - - -int VolumeControlALSA::setupMixer(QString card, QString device) +int VolumeALSA::setupMixer(QString card, QString device) { char *name; int err, index; @@ -439,7 +437,7 @@ int VolumeControlALSA::setupMixer(QString card, QString device) return 0; } -void VolumeControlALSA::parseMixerName(char *str, char **name, int *index) +void VolumeALSA::parseMixerName(char *str, char **name, int *index) { char *end; @@ -459,7 +457,7 @@ void VolumeControlALSA::parseMixerName(char *str, char **name, int *index) } } -snd_mixer_elem_t* VolumeControlALSA::getMixerElem(snd_mixer_t *mixer, char *name, int index) +snd_mixer_elem_t* VolumeALSA::getMixerElem(snd_mixer_t *mixer, char *name, int index) { snd_mixer_selem_id_t* selem_id; snd_mixer_elem_t* elem; @@ -475,7 +473,7 @@ snd_mixer_elem_t* VolumeControlALSA::getMixerElem(snd_mixer_t *mixer, char *name return elem; } -int VolumeControlALSA::getMixer(snd_mixer_t **mixer, QString card) +int VolumeALSA::getMixer(snd_mixer_t **mixer, QString card) { char *dev; int err; diff --git a/src/plugins/Output/alsa/outputalsa.h b/src/plugins/Output/alsa/outputalsa.h index dc1a75dce..50974c629 100644 --- a/src/plugins/Output/alsa/outputalsa.h +++ b/src/plugins/Output/alsa/outputalsa.h @@ -31,7 +31,7 @@ extern "C" } #include <qmmp/output.h> -#include <qmmp/volumecontrol.h> +#include <qmmp/volume.h> class OutputALSA : public Output @@ -70,17 +70,14 @@ private: bool m_can_pause; }; -class VolumeControlALSA : public VolumeControl +class VolumeALSA : public Volume { - Q_OBJECT public: - VolumeControlALSA(QObject *parent = 0); - ~VolumeControlALSA(); - - void setVolume(int left, int right) ; + VolumeALSA(); + ~VolumeALSA(); -protected: - void volume(int *left, int *right); + void setVolume(int channel, int value); + int volume(int channel); private: //alsa mixer diff --git a/src/plugins/Output/alsa/outputalsafactory.cpp b/src/plugins/Output/alsa/outputalsafactory.cpp index dcd003cb0..4553110c7 100644 --- a/src/plugins/Output/alsa/outputalsafactory.cpp +++ b/src/plugins/Output/alsa/outputalsafactory.cpp @@ -40,9 +40,9 @@ Output* OutputALSAFactory::create(QObject* parent) return new OutputALSA(parent); } -VolumeControl *OutputALSAFactory::createVolumeControl(QObject *parent) +Volume *OutputALSAFactory::createVolume() { - return new VolumeControlALSA(parent); + return new VolumeALSA(); } void OutputALSAFactory::showSettings(QWidget* parent) diff --git a/src/plugins/Output/alsa/outputalsafactory.h b/src/plugins/Output/alsa/outputalsafactory.h index 98f35ed4f..9649f8fb8 100644 --- a/src/plugins/Output/alsa/outputalsafactory.h +++ b/src/plugins/Output/alsa/outputalsafactory.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2007-2008 by Ilya Kotov * + * Copyright (C) 2007-2012 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -34,12 +34,12 @@ class OutputALSAFactory : public QObject, OutputFactory { Q_OBJECT -Q_INTERFACES(OutputFactory); +Q_INTERFACES(OutputFactory) public: const OutputProperties properties() const; Output* create(QObject* parent); - VolumeControl *createVolumeControl(QObject *parent); + Volume *createVolume(); void showSettings(QWidget* parent); void showAbout(QWidget *parent); QTranslator *createTranslator(QObject *parent); |
