aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/Output/alsa
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/Output/alsa')
-rw-r--r--src/plugins/Output/alsa/outputalsa.cpp44
-rw-r--r--src/plugins/Output/alsa/outputalsa.h15
-rw-r--r--src/plugins/Output/alsa/outputalsafactory.cpp4
-rw-r--r--src/plugins/Output/alsa/outputalsafactory.h6
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);