aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/Output/alsa/outputalsa.cpp
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2008-09-27 20:49:23 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2008-09-27 20:49:23 +0000
commitd26eba2fad30b2bf23135d0e9b203fdee2a935b5 (patch)
tree9caac3416b5ffa0f0b2030a57e2462a64a1e330f /src/plugins/Output/alsa/outputalsa.cpp
parent3503bb88cdb79aa9114b88f7fe5c8478f824caf6 (diff)
downloadqmmp-d26eba2fad30b2bf23135d0e9b203fdee2a935b5.tar.gz
qmmp-d26eba2fad30b2bf23135d0e9b203fdee2a935b5.tar.bz2
qmmp-d26eba2fad30b2bf23135d0e9b203fdee2a935b5.zip
volume control api
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@568 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/Output/alsa/outputalsa.cpp')
-rw-r--r--src/plugins/Output/alsa/outputalsa.cpp89
1 files changed, 54 insertions, 35 deletions
diff --git a/src/plugins/Output/alsa/outputalsa.cpp b/src/plugins/Output/alsa/outputalsa.cpp
index 5ec6b7748..1491c4584 100644
--- a/src/plugins/Output/alsa/outputalsa.cpp
+++ b/src/plugins/Output/alsa/outputalsa.cpp
@@ -49,21 +49,21 @@ OutputALSA::OutputALSA(QObject * parent, bool useVolume)
pcm_name = strdup(dev_name.toAscii().data());
pcm_handle = 0;
//alsa mixer
- mixer = 0;
+ /*mixer = 0;
if (useVolume)
{
QString card = settings.value("ALSA/mixer_card","hw:0").toString();
QString dev = settings.value("ALSA/mixer_device", "PCM").toString();
setupMixer(card, dev);
- }
+ }*/
}
OutputALSA::~OutputALSA()
{
uninitialize();
free (pcm_name);
- if (mixer)
- snd_mixer_close(mixer);
+ /*if (mixer)
+ snd_mixer_close(mixer);*/
}
void OutputALSA::stop()
@@ -487,7 +487,53 @@ void OutputALSA::uninitialize()
}
/* ****** MIXER ******* */
-int OutputALSA::setupMixer(QString card, QString device)
+VolumeControlALSA::VolumeControlALSA(QObject *parent) : VolumeControl(parent)
+{
+ //alsa mixer
+ mixer = 0;
+ QSettings settings(QDir::homePath()+"/.qmmp/qmmprc", QSettings::IniFormat);
+ QString card = settings.value("ALSA/mixer_card","hw:0").toString();
+ QString dev = settings.value("ALSA/mixer_device", "PCM").toString();
+ setupMixer(card, dev);
+}
+
+
+VolumeControlALSA::~VolumeControlALSA()
+{
+ if (mixer)
+ snd_mixer_close(mixer);
+}
+
+void VolumeControlALSA::setVolume(int l, int r)
+{
+
+ 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);
+}
+
+void VolumeControlALSA::volume(int *l, int *r)
+{
+ if (!pcm_element)
+ return;
+
+ long ll = *l, lr = *r;
+ 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;
+}
+
+
+
+int VolumeControlALSA::setupMixer(QString card, QString device)
{
char *name;
long int a, b;
@@ -539,7 +585,7 @@ int OutputALSA::setupMixer(QString card, QString device)
return 0;
}
-void OutputALSA::parseMixerName(char *str, char **name, int *index)
+void VolumeControlALSA::parseMixerName(char *str, char **name, int *index)
{
char *end;
@@ -559,7 +605,7 @@ void OutputALSA::parseMixerName(char *str, char **name, int *index)
}
}
-snd_mixer_elem_t* OutputALSA::getMixerElem(snd_mixer_t *mixer, char *name, int index)
+snd_mixer_elem_t* VolumeControlALSA::getMixerElem(snd_mixer_t *mixer, char *name, int index)
{
snd_mixer_selem_id_t* selem_id;
snd_mixer_elem_t* elem;
@@ -575,34 +621,7 @@ snd_mixer_elem_t* OutputALSA::getMixerElem(snd_mixer_t *mixer, char *name, int i
return elem;
}
-void OutputALSA::setVolume(int l, int r)
-{
-
- 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);
-}
-
-void OutputALSA::volume(int *l, int *r)
-{
- if (!pcm_element)
- return;
-
- long ll = *l, lr = *r;
- 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;
-}
-
-int OutputALSA::getMixer(snd_mixer_t **mixer, QString card)
+int VolumeControlALSA::getMixer(snd_mixer_t **mixer, QString card)
{
char *dev;
int err;