diff --git a/src/media/audio/opensl/opensllayer.cpp b/src/media/audio/opensl/opensllayer.cpp index 913c3b063fe006839091058cdcd31803ad02157e..4f40755f390521db90c4bb0a7877cc418668c90f 100644 --- a/src/media/audio/opensl/opensllayer.cpp +++ b/src/media/audio/opensl/opensllayer.cpp @@ -22,10 +22,10 @@ #include "client/ring_signal.h" -#include "audio/resampler.h" #include "audio/ringbufferpool.h" #include "audio/ringbuffer.h" #include "audio/dcblocker.h" +#include "libav_utils.h" #include "manager.h" #include "logger.h" #include "array_size.h" @@ -350,8 +350,12 @@ OpenSLLayer::startAudioCapture() if (buf->size_ > 0) { auto nb_samples = buf->size_ / hardwareFormat_.getBytesPerFrame(); auto out = std::make_unique<AudioFrame>(hardwareFormat_, nb_samples); - std::copy_n((const AudioSample*)buf->buf_, nb_samples, (AudioSample*)out->pointer()->data[0]); - audioCaptureFillBuffer(std::move(out)); + if (isCaptureMuted_) + libav_utils::fillWithSilence(out->pointer()); + else + std::copy_n((const AudioSample*)buf->buf_, nb_samples, (AudioSample*)out->pointer()->data[0]); + // dcblocker_.process(buffer); + mainRingBuffer_->put(std::move(out)); } buf->size_ = 0; freeRecBufQueue_.push(buf); @@ -476,15 +480,6 @@ void OpenSLLayer::updatePreference(AudioPreference& /*preference*/, int /*index*/, DeviceType /*type*/) {} -void OpenSLLayer::audioCaptureFillBuffer(std::unique_ptr<AudioFrame>&& frame) -{ - RingBufferPool &mbuffer = Manager::instance().getRingBufferPool(); - - // buffer.applyGain(isCaptureMuted_ ? 0.0 : captureGain_); - // dcblocker_.process(buffer); - mainRingBuffer_->put(resampler_->resample(std::move(frame), mbuffer.getInternalAudioFormat())); -} - void dumpAvailableEngineInterfaces() { SLresult result; diff --git a/src/media/audio/opensl/opensllayer.h b/src/media/audio/opensl/opensllayer.h index d45c7ff5e36d287036b551db60c042abf854795d..219a18dbfb45b16242d09ca207075c53a97e290b 100644 --- a/src/media/audio/opensl/opensllayer.h +++ b/src/media/audio/opensl/opensllayer.h @@ -118,8 +118,6 @@ class OpenSLLayer : public AudioLayer { void engineServiceRec(bool waiting); private: - void audioCaptureFillBuffer(std::unique_ptr<AudioFrame>&& buffer); - /** * Get the index of the audio card for capture * @return int The index of the card used for capture