author | mickeyl <mickeyl> | 2005-01-24 18:56:14 (UTC) |
---|---|---|
committer | mickeyl <mickeyl> | 2005-01-24 18:56:14 (UTC) |
commit | fa3041f9acfd171b62c0ab73cde8b9d0f0772a9c (patch) (side-by-side diff) | |
tree | c2ba9f2aaa744abaf4ac698eeeb27311dd81a50b /libopie2/opiemm/osoundsystem.cpp | |
parent | 176a421ade3f5baf07be9327cbdbfedea41fdd3c (diff) | |
download | opie-fa3041f9acfd171b62c0ab73cde8b9d0f0772a9c.zip opie-fa3041f9acfd171b62c0ab73cde8b9d0f0772a9c.tar.gz opie-fa3041f9acfd171b62c0ab73cde8b9d0f0772a9c.tar.bz2 |
add isStereo to OMixerInterface to gather whether a given channel is a stereo or mono channel
Diffstat (limited to 'libopie2/opiemm/osoundsystem.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | libopie2/opiemm/osoundsystem.cpp | 25 |
1 files changed, 23 insertions, 2 deletions
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 @@ -193,9 +193,9 @@ void OMixerInterface::init() // open the device _fd = ::open( name(), O_RDWR ); if ( _fd == -1 ) { - owarn << "OMixerInterface::init(): Can't open mixer." << oendl; + owarn << "OMixerInterface::init(): Can't open mixer " << name() << oendl; return; } // construct the device capabilities @@ -238,8 +238,14 @@ void OMixerInterface::init() if ( devmask & ( 1 << SOUND_MIXER_OGAIN ) ) _channels.insert( "RecOutputGain", SOUND_MIXER_OGAIN ); //odebug << "recmask available and constructed." << oendl; } + devmask = 0; + if ( ioctl( _fd, SOUND_MIXER_READ_STEREODEVS, &devmask ) != -1 ) + { + odebug << "stereomask = " << devmask << oendl; + } + /* ChannelIterator it; for ( it = _channels.begin(); it != _channels.end(); ++it ) { odebug << "Channel " << it.key() << " available (bit " << it.data() << ")" << oendl; @@ -274,14 +280,29 @@ QStringList OMixerInterface::playChannels() const return QStringList(); } -bool OMixerInterface::hasChannel( const QString& channel ) +bool OMixerInterface::hasChannel( const QString& channel ) const { return _channels.contains( 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 ) { int volume = left; volume |= ( right == -1 ) ? left << 8 : right << 8; |