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