diff --git a/src/media/audio/opensl/buf_manager.h b/src/media/audio/opensl/buf_manager.h
index 8af485c9c5c2897867262f82e41d147b5d7aade3..497402e648d8645857962df52314c52813f7944e 100644
--- a/src/media/audio/opensl/buf_manager.h
+++ b/src/media/audio/opensl/buf_manager.h
@@ -19,6 +19,7 @@
 
 #include "audio/audiobuffer.h"
 #include "logger.h"
+#include "noncopyable.h"
 
 #include <SLES/OpenSLES.h>
 #include <sys/types.h>
@@ -146,6 +147,7 @@ public:
     }
 
 private:
+    NON_COPYABLE(ProducerConsumerQueue);
     std::vector<T> buffer_;
 
     // forcing cache line alignment to eliminate false sharing of the
@@ -162,9 +164,16 @@ struct sample_buf {
     size_t   size_ {0};      // audio sample size (n buf) in byte
     sample_buf() {}
     sample_buf(size_t alloc, size_t size) : buf_(new uint8_t[alloc]), cap_(size) {}
+    sample_buf(sample_buf&& o) : buf_(o.buf_), cap_(o.cap_), size_(o.size_) {
+        o.buf_ = nullptr;
+        o.cap_ = 0;
+        o.size_ = 0;
+    }
+
     ~sample_buf() {
         if (buf_) delete[] buf_;
     }
+    NON_COPYABLE(sample_buf);
 };
 
 using AudioQueue = ProducerConsumerQueue<sample_buf*>;
diff --git a/src/media/audio/opensl/opensllayer.cpp b/src/media/audio/opensl/opensllayer.cpp
index 51ba7c33f023e16013da94ffa85cedde5099ce18..d02e010e19f16f4b6ed1eb104ff913981c34bd2a 100644
--- a/src/media/audio/opensl/opensllayer.cpp
+++ b/src/media/audio/opensl/opensllayer.cpp
@@ -48,7 +48,6 @@ namespace ring {
 // Constructor
 OpenSLLayer::OpenSLLayer(const AudioPreference &pref)
     : AudioLayer(pref),
-     audioInputDescriptor_(),
      mainRingBuffer_(Manager::instance().getRingBufferPool().getRingBuffer(RingBufferPool::DEFAULT_ID))
 {}
 
@@ -408,25 +407,23 @@ OpenSLLayer::getCaptureDeviceList() const
     SLresult res;
 
     // Get the Audio IO DEVICE CAPABILITIES interface, implicit
-    RING_DBG("Get the Audio IO DEVICE CAPABILITIES interface, implicit");
-
-    res = (*engineObject_)->GetInterface(engineObject_, SL_IID_AUDIOIODEVICECAPABILITIES, (void*)&AudioIODeviceCapabilitiesItf);
+    SLAudioIODeviceCapabilitiesItf deviceCapabilities {nullptr};
+    res = (*engineObject_)->GetInterface(engineObject_, SL_IID_AUDIOIODEVICECAPABILITIES, (void*)&deviceCapabilities);
     if (res != SL_RESULT_SUCCESS)
         return captureDeviceList;
 
-    RING_DBG("Get the Audio IO DEVICE CAPABILITIES interface, implicit");
     numInputs = MAX_NUMBER_INPUT_DEVICES;
-
-    res = (*AudioIODeviceCapabilitiesItf)->GetAvailableAudioInputs(AudioIODeviceCapabilitiesItf, &numInputs, InputDeviceIDs);
+    res = (*deviceCapabilities)->GetAvailableAudioInputs(deviceCapabilities, &numInputs, InputDeviceIDs);
     if (res != SL_RESULT_SUCCESS)
         return captureDeviceList;
 
     // Search for either earpiece microphone or headset microphone input
     // device - with a preference for the latter
     for (int i = 0; i < numInputs; i++) {
-        res = (*AudioIODeviceCapabilitiesItf)->QueryAudioInputCapabilities(AudioIODeviceCapabilitiesItf,
+        SLAudioInputDescriptor audioInputDescriptor_;
+        res = (*deviceCapabilities)->QueryAudioInputCapabilities(deviceCapabilities,
                                                                            InputDeviceIDs[i],
-                                                                           (SLAudioInputDescriptor_ *)&audioInputDescriptor_);
+                                                                           &audioInputDescriptor_);
         if (res != SL_RESULT_SUCCESS)
             return captureDeviceList;
 
diff --git a/src/media/audio/opensl/opensllayer.h b/src/media/audio/opensl/opensllayer.h
index e44d96fb4e653336887569218240adb31f7ae67b..f3785b8fc3a888898ae1d89669242e8d335a30da 100644
--- a/src/media/audio/opensl/opensllayer.h
+++ b/src/media/audio/opensl/opensllayer.h
@@ -188,9 +188,6 @@ class OpenSLLayer : public AudioLayer {
 
         std::vector<sample_buf> bufs_;
 
-        SLAudioIODeviceCapabilitiesItf AudioIODeviceCapabilitiesItf {nullptr};
-        SLAudioInputDescriptor audioInputDescriptor_;
-
         AudioFormat hardwareFormat_ {AudioFormat::MONO()};
         size_t hardwareBuffSize_ {BUFFER_SIZE};