AUDIO: Add complementary functions for getting channel volume and balance

This commit is contained in:
Eugene Sandulenko 2011-06-11 14:08:21 +03:00
parent eea48434f5
commit eb13803709
3 changed files with 56 additions and 0 deletions

View file

@ -93,6 +93,13 @@ public:
*/ */
void setVolume(const byte volume); void setVolume(const byte volume);
/**
* Gets the channel's own volume.
*
* @return volume
*/
byte getVolume();
/** /**
* Sets the channel's balance setting. * Sets the channel's balance setting.
* *
@ -100,6 +107,13 @@ public:
*/ */
void setBalance(const int8 balance); void setBalance(const int8 balance);
/**
* Gets the channel's balance setting.
*
* @return balance
*/
int8 getBalance();
/** /**
* Notifies the channel that the global sound type * Notifies the channel that the global sound type
* volume settings changed. * volume settings changed.
@ -342,6 +356,14 @@ void MixerImpl::setChannelVolume(SoundHandle handle, byte volume) {
_channels[index]->setVolume(volume); _channels[index]->setVolume(volume);
} }
byte MixerImpl::getChannelVolume(SoundHandle handle) {
const int index = handle._val % NUM_CHANNELS;
if (!_channels[index] || _channels[index]->getHandle()._val != handle._val)
return 0;
return _channels[index]->getVolume();
}
void MixerImpl::setChannelBalance(SoundHandle handle, int8 balance) { void MixerImpl::setChannelBalance(SoundHandle handle, int8 balance) {
Common::StackLock lock(_mutex); Common::StackLock lock(_mutex);
@ -352,6 +374,14 @@ void MixerImpl::setChannelBalance(SoundHandle handle, int8 balance) {
_channels[index]->setBalance(balance); _channels[index]->setBalance(balance);
} }
int8 MixerImpl::getChannelBalance(SoundHandle handle) {
const int index = handle._val % NUM_CHANNELS;
if (!_channels[index] || _channels[index]->getHandle()._val != handle._val)
return 0;
return _channels[index]->getBalance();
}
uint32 MixerImpl::getSoundElapsedTime(SoundHandle handle) { uint32 MixerImpl::getSoundElapsedTime(SoundHandle handle) {
return getElapsedTime(handle).msecs(); return getElapsedTime(handle).msecs();
} }
@ -482,11 +512,19 @@ void Channel::setVolume(const byte volume) {
updateChannelVolumes(); updateChannelVolumes();
} }
byte Channel::getVolume() {
return _volume;
}
void Channel::setBalance(const int8 balance) { void Channel::setBalance(const int8 balance) {
_balance = balance; _balance = balance;
updateChannelVolumes(); updateChannelVolumes();
} }
int8 Channel::getBalance() {
return _balance;
}
void Channel::updateChannelVolumes() { void Channel::updateChannelVolumes() {
// From the channel balance/volume and the global volume, we compute // From the channel balance/volume and the global volume, we compute
// the effective volume for the left and right channel. Note the // the effective volume for the left and right channel. Note the

View file

@ -210,6 +210,14 @@ public:
*/ */
virtual void setChannelVolume(SoundHandle handle, byte volume) = 0; virtual void setChannelVolume(SoundHandle handle, byte volume) = 0;
/**
* Get the channel volume for the given handle.
*
* @param handle the sound to affect
* @return channel volume
*/
virtual byte getChannelVolume(SoundHandle handle) = 0;
/** /**
* Set the channel balance for the given handle. * Set the channel balance for the given handle.
* *
@ -219,6 +227,14 @@ public:
*/ */
virtual void setChannelBalance(SoundHandle handle, int8 balance) = 0; virtual void setChannelBalance(SoundHandle handle, int8 balance) = 0;
/**
* Get the channel balance for the given handle.
*
* @param handle the sound to affect
* @return channel balance
*/
virtual int8 getChannelBalance(SoundHandle handle) = 0;
/** /**
* Get approximation of for how long the channel has been playing. * Get approximation of for how long the channel has been playing.
*/ */

View file

@ -105,7 +105,9 @@ public:
virtual bool isSoundTypeMuted(SoundType type) const; virtual bool isSoundTypeMuted(SoundType type) const;
virtual void setChannelVolume(SoundHandle handle, byte volume); virtual void setChannelVolume(SoundHandle handle, byte volume);
virtual byte getChannelVolume(SoundHandle handle);
virtual void setChannelBalance(SoundHandle handle, int8 balance); virtual void setChannelBalance(SoundHandle handle, int8 balance);
virtual int8 getChannelBalance(SoundHandle handle);
virtual uint32 getSoundElapsedTime(SoundHandle handle); virtual uint32 getSoundElapsedTime(SoundHandle handle);
virtual Timestamp getElapsedTime(SoundHandle handle); virtual Timestamp getElapsedTime(SoundHandle handle);