diff --git a/src/conference.cpp b/src/conference.cpp index 8ffd545c269d1b3da9dbd3836c8fc9ded97f433f..c625f7144c91ffe98ecf6645ba877286f9b18ab7 100644 --- a/src/conference.cpp +++ b/src/conference.cpp @@ -1777,7 +1777,11 @@ Conference::bindHostAudio() } // Bind audio if (source.label_ == sip_utils::DEFAULT_AUDIO_STREAMID) { - rbPool.bindRingbuffers(id, RingBufferPool::DEFAULT_ID); + bool isParticipantMuted = isMuted(call->getCallId()); + if (isParticipantMuted) + rbPool.bindHalfDuplexOut(id, RingBufferPool::DEFAULT_ID); + else + rbPool.bindRingbuffers(id, RingBufferPool::DEFAULT_ID); } else { auto buffer = source.sourceUri_; static const std::string& sep = libjami::Media::VideoProtocolPrefix::SEPARATOR; @@ -1852,10 +1856,10 @@ Conference::bindSubCallAudio(const std::string& callId) // Bind local participant to other participants only if the // local is attached to the conference. if (getState() == State::ACTIVE_ATTACHED) { - if (isMediaSourceMuted(MediaType::MEDIA_AUDIO)) + bool isHostMuted = isMuted("host"sv); + if (isMediaSourceMuted(MediaType::MEDIA_AUDIO) or isHostMuted) rbPool.bindHalfDuplexOut(RingBufferPool::DEFAULT_ID, stream.first); - else - rbPool.bindRingbuffers(stream.first, RingBufferPool::DEFAULT_ID); + else rbPool.bindRingbuffers(stream.first, RingBufferPool::DEFAULT_ID); rbPool.flush(RingBufferPool::DEFAULT_ID); } }