diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2012-03-07 20:04:51 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2012-03-07 20:04:51 +0000 |
| commit | 74afcc2d9356fef5dbd25f4e7aaabb021c0bfc29 (patch) | |
| tree | f76222901b123facc552c614bf9d1753e2da0afc /src/plugins/Output/oss4 | |
| parent | 7559299d77b3c375e9b718f986bc079215bf1d27 (diff) | |
| download | qmmp-74afcc2d9356fef5dbd25f4e7aaabb021c0bfc29.tar.gz qmmp-74afcc2d9356fef5dbd25f4e7aaabb021c0bfc29.tar.bz2 qmmp-74afcc2d9356fef5dbd25f4e7aaabb021c0bfc29.zip | |
some volume api changes
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@2673 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/Output/oss4')
| -rw-r--r-- | src/plugins/Output/oss4/outputoss4.cpp | 26 | ||||
| -rw-r--r-- | src/plugins/Output/oss4/outputoss4.h | 18 | ||||
| -rw-r--r-- | src/plugins/Output/oss4/outputoss4factory.cpp | 4 | ||||
| -rw-r--r-- | src/plugins/Output/oss4/outputoss4factory.h | 9 |
4 files changed, 29 insertions, 28 deletions
diff --git a/src/plugins/Output/oss4/outputoss4.cpp b/src/plugins/Output/oss4/outputoss4.cpp index 71cda5dda..6d3bad527 100644 --- a/src/plugins/Output/oss4/outputoss4.cpp +++ b/src/plugins/Output/oss4/outputoss4.cpp @@ -45,7 +45,7 @@ extern "C" #include "outputoss4.h" OutputOSS4 *OutputOSS4::m_instance = 0; -VolumeControlOSS4 *OutputOSS4::m_vc = 0; +VolumeOSS4 *OutputOSS4::m_vc = 0; OutputOSS4::OutputOSS4(QObject *parent) : Output(parent) { @@ -194,7 +194,7 @@ void OutputOSS4::reset() } /***** MIXER *****/ -VolumeControlOSS4::VolumeControlOSS4(QObject *parent) : VolumeControl(parent) +VolumeOSS4::VolumeOSS4() { QSettings settings(Qmmp::configFile(), QSettings::IniFormat); m_volume = settings.value("OSS4/volume", 0x3232).toInt(); @@ -202,15 +202,17 @@ VolumeControlOSS4::VolumeControlOSS4(QObject *parent) : VolumeControl(parent) restore(); } -VolumeControlOSS4::~VolumeControlOSS4() +VolumeOSS4::~VolumeOSS4() { OutputOSS4::m_vc = 0; QSettings settings(Qmmp::configFile(), QSettings::IniFormat); settings.setValue("OSS4/volume", m_volume); } -void VolumeControlOSS4::setVolume(int l, int r) +void VolumeOSS4::setVolume(int channel, int value) { + int l = (channel == Volume::LEFT_CHANNEL) ? value : volume(Volume::LEFT_CHANNEL); + int r = (channel == Volume::RIGHT_CHANNEL) ? value : volume(Volume::RIGHT_CHANNEL); m_volume = (r << 8) | l; if(OutputOSS4::instance() && OutputOSS4::instance()->fd() >= 0) { @@ -218,27 +220,27 @@ void VolumeControlOSS4::setVolume(int l, int r) } } -void VolumeControlOSS4::volume(int *ll,int *rr) +int VolumeOSS4::volume(int channel) { - *ll = 0; - *rr = 0; if(OutputOSS4::instance() && OutputOSS4::instance()->fd() >= 0) { int v = 0; if (ioctl(OutputOSS4::instance()->fd(), SNDCTL_DSP_GETPLAYVOL, &v) < 0) v = 0; - *rr = (v & 0xFF00) >> 8; - *ll = (v & 0x00FF); m_volume = v; + if(channel == Volume::LEFT_CHANNEL) + return (v & 0x00FF); + return (v & 0xFF00) >> 8; } else { - *rr = (m_volume & 0xFF00) >> 8; - *ll = (m_volume & 0x00FF); + if(channel == Volume::LEFT_CHANNEL) + return (m_volume & 0x00FF); + return (m_volume & 0xFF00) >> 8; } } -void VolumeControlOSS4::restore() +void VolumeOSS4::restore() { setVolume((m_volume & 0x00FF), (m_volume & 0xFF00) >> 8); } diff --git a/src/plugins/Output/oss4/outputoss4.h b/src/plugins/Output/oss4/outputoss4.h index 90c9eb85a..06d4b13e3 100644 --- a/src/plugins/Output/oss4/outputoss4.h +++ b/src/plugins/Output/oss4/outputoss4.h @@ -22,12 +22,12 @@ #define OUTPUTOSS4_H #include <qmmp/output.h> -#include <qmmp/volumecontrol.h> +#include <qmmp/volume.h> #define DEFAULT_DEV "/dev/dsp" #define DEFAULT_MIXER "/dev/mixer" -class VolumeControlOSS4; +class VolumeOSS4; /** @author Ilya Kotov <forkotov@hotmail.ru> @@ -36,7 +36,7 @@ class OutputOSS4 : public Output { Q_OBJECT public: - OutputOSS4(QObject * parent); + OutputOSS4(); virtual ~OutputOSS4(); bool initialize(quint32, int, Qmmp::AudioFormat format); @@ -44,7 +44,7 @@ public: qint64 latency(); static OutputOSS4 *instance(); - static VolumeControlOSS4 *m_vc; + static VolumeOSS4 *m_vc; private: //output api @@ -62,15 +62,15 @@ private: }; -class VolumeControlOSS4 : public VolumeControl +class VolumeOSS4 : public Volume { Q_OBJECT public: - VolumeControlOSS4(QObject *parent); - ~VolumeControlOSS4(); + VolumeOSS4(QObject *parent); + ~VolumeOSS4(); - void setVolume(int left, int right); - void volume(int *left, int *right); + void setVolume(int channel, int value); + int volume(int channel); void restore(); private: diff --git a/src/plugins/Output/oss4/outputoss4factory.cpp b/src/plugins/Output/oss4/outputoss4factory.cpp index 95b5340a2..aeac150dd 100644 --- a/src/plugins/Output/oss4/outputoss4factory.cpp +++ b/src/plugins/Output/oss4/outputoss4factory.cpp @@ -40,9 +40,9 @@ const OutputProperties OutputOSS4Factory::properties() const return properties; } -VolumeControl *OutputOSS4Factory::createVolumeControl(QObject *parent) +Volume *OutputOSS4Factory::createVolumeControl() { - return new VolumeControlOSS4(parent); + return new VolumeOSS4; } void OutputOSS4Factory::showSettings(QWidget* parent) diff --git a/src/plugins/Output/oss4/outputoss4factory.h b/src/plugins/Output/oss4/outputoss4factory.h index 04855d54c..ead729e4a 100644 --- a/src/plugins/Output/oss4/outputoss4factory.h +++ b/src/plugins/Output/oss4/outputoss4factory.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2006 by Ilya Kotov * + * Copyright (C) 2006-2012 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -29,16 +29,15 @@ #include <qmmp/outputfactory.h> -class OutputOSS4Factory : public QObject, - OutputFactory +class OutputOSS4Factory : 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); |
