[X10] mute audio when fifo buffer is empty (#5875)

* [X10] mute audio when fifo buffer is empty
* do not push audio data if volume is muted.
This commit is contained in:
Raphael Coeffic
2018-05-08 22:27:19 +02:00
committed by Bertrand Songis
parent f2d444e2d5
commit 54d430f3c5
2 changed files with 30 additions and 4 deletions
+9 -4
View File
@@ -792,13 +792,18 @@ void AudioQueue::wakeup()
if (size > 0) {
// TRACE("pushing buffer %p", buffer);
buffer->size = size;
#if defined(SOFTWARE_VOLUME)
for(uint32_t i=0; i<buffer->size; ++i) {
int32_t tmpSample = (int32_t) ((uint32_t) (buffer->data[i]) - AUDIO_DATA_SILENCE); // conversion from uint16_t
buffer->data[i] = (int16_t) (((tmpSample * currentSpeakerVolume) / VOLUME_LEVEL_MAX) + AUDIO_DATA_SILENCE);
if (currentSpeakerVolume > 0) {
for (uint32_t i=0; i<buffer->size; ++i) {
int32_t tmpSample = (int32_t) ((uint32_t) (buffer->data[i]) - AUDIO_DATA_SILENCE); // conversion from uint16_t
buffer->data[i] = (int16_t) (((tmpSample * currentSpeakerVolume) / VOLUME_LEVEL_MAX) + AUDIO_DATA_SILENCE);
}
buffersFifo.audioPushBuffer();
}
#endif
#else
buffersFifo.audioPushBuffer();
#endif
}
else {
// break the endless loop