summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--libopie2/examples/opiemm/osoundsystemdemo/osoundsystemdemo.cpp3
-rw-r--r--libopie2/opiemm/osoundsystem.cpp25
-rw-r--r--libopie2/opiemm/osoundsystem.h6
3 files changed, 30 insertions, 4 deletions
diff --git a/libopie2/examples/opiemm/osoundsystemdemo/osoundsystemdemo.cpp b/libopie2/examples/opiemm/osoundsystemdemo/osoundsystemdemo.cpp
index b522441..f74a1b9 100644
--- a/libopie2/examples/opiemm/osoundsystemdemo/osoundsystemdemo.cpp
+++ b/libopie2/examples/opiemm/osoundsystemdemo/osoundsystemdemo.cpp
@@ -57,3 +57,4 @@ int main( int argc, char** argv )
{
- odebug << "OSSDEMO: Mixer has channel " << *it << "" << oendl;
+ bool stereo = mixer->isStereo( *it );
+ odebug << "OSSDEMO: Mixer has channel " << *it << ( stereo ? "[stereo]" : "[mono]" ) << oendl;
odebug << "OSSDEMO: +--- volume " << ( mixer->volume( *it ) & 0xff )
diff --git a/libopie2/opiemm/osoundsystem.cpp b/libopie2/opiemm/osoundsystem.cpp
index 13b26e6..09fd28f 100644
--- a/libopie2/opiemm/osoundsystem.cpp
+++ b/libopie2/opiemm/osoundsystem.cpp
@@ -196,3 +196,3 @@ void OMixerInterface::init()
{
- owarn << "OMixerInterface::init(): Can't open mixer." << oendl;
+ owarn << "OMixerInterface::init(): Can't open mixer " << name() << oendl;
return;
@@ -241,2 +241,8 @@ void OMixerInterface::init()
+ devmask = 0;
+ if ( ioctl( _fd, SOUND_MIXER_READ_STEREODEVS, &devmask ) != -1 )
+ {
+ odebug << "stereomask = " << devmask << oendl;
+ }
+
/* ChannelIterator it;
@@ -277,3 +283,3 @@ QStringList OMixerInterface::playChannels() const
-bool OMixerInterface::hasChannel( const QString& channel )
+bool OMixerInterface::hasChannel( const QString& channel ) const
{
@@ -283,2 +289,17 @@ bool OMixerInterface::hasChannel( const QString& channel )
+bool OMixerInterface::isStereo( const QString& channel ) const
+{
+ bool result = false;
+ if ( _channels.contains( channel ) )
+ {
+ int devmask = 0;
+ if ( ioctl( _fd, SOUND_MIXER_READ_STEREODEVS, &devmask ) != -1 )
+ {
+ result = devmask & ( 1 << _channels[channel] );
+ }
+ }
+ return result;
+}
+
+
void OMixerInterface::setVolume( const QString& channel, int left, int right )
diff --git a/libopie2/opiemm/osoundsystem.h b/libopie2/opiemm/osoundsystem.h
index bd69114..ac7a5a7 100644
--- a/libopie2/opiemm/osoundsystem.h
+++ b/libopie2/opiemm/osoundsystem.h
@@ -204,3 +204,7 @@ class OMixerInterface : public QObject
*/
- bool hasChannel( const QString& channel );
+ bool hasChannel( const QString& channel ) const;
+ /**
+ * @returns true, if @a channel is stereo.
+ */
+ bool isStereo( const QString& channel ) const;