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/oss | |
| 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/oss')
| -rw-r--r-- | src/plugins/Output/oss/outputoss.cpp | 33 | ||||
| -rw-r--r-- | src/plugins/Output/oss/outputoss.h | 16 | ||||
| -rw-r--r-- | src/plugins/Output/oss/outputossfactory.cpp | 4 | ||||
| -rw-r--r-- | src/plugins/Output/oss/outputossfactory.h | 9 |
4 files changed, 28 insertions, 34 deletions
diff --git a/src/plugins/Output/oss/outputoss.cpp b/src/plugins/Output/oss/outputoss.cpp index a612b0d23..db2165353 100644 --- a/src/plugins/Output/oss/outputoss.cpp +++ b/src/plugins/Output/oss/outputoss.cpp @@ -180,7 +180,7 @@ void OutputOSS::reset() } /***** MIXER *****/ -VolumeControlOSS::VolumeControlOSS(QObject *parent) : VolumeControl(parent) +VolumeOSS::VolumeOSS() { m_master = true; m_mixer_fd = -1; @@ -190,7 +190,7 @@ VolumeControlOSS::VolumeControlOSS(QObject *parent) : VolumeControl(parent) } -VolumeControlOSS::~VolumeControlOSS() +VolumeOSS::~VolumeOSS() { if (m_mixer_fd >= 0) { @@ -199,11 +199,14 @@ VolumeControlOSS::~VolumeControlOSS() } } -void VolumeControlOSS::setVolume(int l, int r) +void VolumeOSS::setVolume(int channel, int value) { if (m_mixer_fd < 0) return; - int v; + + int l = (channel == Volume::LEFT_CHANNEL) ? value : volume(Volume::LEFT_CHANNEL); + int r = (channel == Volume::RIGHT_CHANNEL) ? value : volume(Volume::RIGHT_CHANNEL); + long cmd; int devs = 0; ioctl(m_mixer_fd, SOUND_MIXER_READ_DEVMASK, &devs); @@ -216,16 +219,14 @@ void VolumeControlOSS::setVolume(int l, int r) //close(mifd); return; } - v = (r << 8) | l; + int v = (r << 8) | l; ioctl(m_mixer_fd, cmd, &v); } -void VolumeControlOSS::volume(int *ll,int *rr) +int VolumeOSS::volume(int channel) { - *ll = 0; - *rr = 0; if(m_mixer_fd < 0) - return; + return 0; int cmd; int v, devs = 0; ioctl(m_mixer_fd, SOUND_MIXER_READ_DEVMASK, &devs); @@ -235,19 +236,15 @@ void VolumeControlOSS::volume(int *ll,int *rr) else if ((devs & SOUND_MASK_VOLUME) && m_master) cmd = SOUND_MIXER_READ_VOLUME; else - return; + return 0; ioctl(m_mixer_fd, cmd, &v); - *ll = (v & 0xFF00) >> 8; - *rr = (v & 0x00FF); - - *ll = (*ll > 100) ? 100 : *ll; - *rr = (*rr > 100) ? 100 : *rr; - *ll = (*ll < 0) ? 0 : *ll; - *rr = (*rr < 0) ? 0 : *rr; + if(channel == Volume::LEFT_CHANNEL) + return (v & 0xFF00) >> 8; + return (v & 0x00FF); } -void VolumeControlOSS::openMixer() +void VolumeOSS::openMixer() { if (m_mixer_fd >= 0) return; diff --git a/src/plugins/Output/oss/outputoss.h b/src/plugins/Output/oss/outputoss.h index 8864339c4..a04e6f474 100644 --- a/src/plugins/Output/oss/outputoss.h +++ b/src/plugins/Output/oss/outputoss.h @@ -26,7 +26,7 @@ class OutputOSS; #include <qmmp/output.h> -#include <qmmp/volumecontrol.h> +#include <qmmp/volume.h> class OutputOSS : public Output { @@ -43,8 +43,7 @@ private: qint64 writeAudio(unsigned char *data, qint64 maxSize); void drain(); void reset(); - -private: + //oss void post(); void sync(); QString m_audio_device; @@ -54,15 +53,14 @@ private: long bl, br; }; -class VolumeControlOSS : public VolumeControl +class VolumeOSS : public Volume { - Q_OBJECT public: - VolumeControlOSS(QObject *parent = 0); - ~VolumeControlOSS(); + VolumeOSS(); + ~VolumeOSS(); - void setVolume(int left, int right); - void volume(int *left, int *right); + void setVolume(int channel, int value); + int volume(int channel); private: //oss mixer diff --git a/src/plugins/Output/oss/outputossfactory.cpp b/src/plugins/Output/oss/outputossfactory.cpp index 982419c62..2005d843f 100644 --- a/src/plugins/Output/oss/outputossfactory.cpp +++ b/src/plugins/Output/oss/outputossfactory.cpp @@ -40,9 +40,9 @@ const OutputProperties OutputOSSFactory::properties() const return properties; } -VolumeControl *OutputOSSFactory::createVolumeControl(QObject *parent) +Volume *OutputOSSFactory::createVolume() { - return new VolumeControlOSS(parent); + return new VolumeOSS; } void OutputOSSFactory::showSettings(QWidget* parent) diff --git a/src/plugins/Output/oss/outputossfactory.h b/src/plugins/Output/oss/outputossfactory.h index 22e9f35a5..83fa2f936 100644 --- a/src/plugins/Output/oss/outputossfactory.h +++ b/src/plugins/Output/oss/outputossfactory.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 * @@ -30,16 +30,15 @@ #include <qmmp/outputfactory.h> -class OutputOSSFactory : public QObject, - OutputFactory +class OutputOSSFactory : 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); |
