diff --git a/src/media/audio/audio_input.cpp b/src/media/audio/audio_input.cpp
index 8aba3472e6cd16ca5d10a63819c5d17897238643..eae1587e7b3eca1de821bc9ec1e70b13955be3a8 100644
--- a/src/media/audio/audio_input.cpp
+++ b/src/media/audio/audio_input.cpp
@@ -2,6 +2,7 @@
  *  Copyright (C) 2018 Savoir-faire Linux Inc.
  *
  *  Author: Hugo Lefeuvre <hugo.lefeuvre@savoirfairelinux.com>
+ *  Author: Philippe Gorley <philippe.gorley@savoirfairelinux.com>
  *
  *  This program is free software; you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License as published by
@@ -31,9 +32,9 @@ namespace ring {
 
 AudioInput::AudioInput(const std::string& id) :
     id_(id),
-    loop_([] {return true;}, // setup()
-          [this] {return process();},
-          [this] {return cleanup();})
+    loop_([] { return true; },
+          [this] { process(); },
+          [] {})
 {
     loop_.start();
 }
@@ -59,23 +60,22 @@ void
 AudioInput::process()
 {
     auto& mainBuffer = Manager::instance().getRingBufferPool();
-    auto ringBuffer = mainBuffer.getRingBuffer(id_);
-    auto bufferFormat = ringBuffer->getFormat();
+    auto bufferFormat = mainBuffer.getInternalAudioFormat();
 
-    // compute number of bytes contained in a frame with duration msPerPacket_
-    auto bytesPerPacket = msPerPacket_ * bufferFormat.sample_rate;
-    const std::size_t bytesToGet = std::chrono::duration_cast<std::chrono::seconds>(bytesPerPacket).count();
+    // compute number of samples contained in a frame with duration msPerPacket_
+    const auto samplesPerPacket = msPerPacket_ * bufferFormat.sample_rate;
+    const std::size_t samplesToGet = std::chrono::duration_cast<std::chrono::seconds>(samplesPerPacket).count();
 
-    if (ringBuffer->availableForGet(id_) < bytesToGet
-        && not ringBuffer->waitForDataAvailable(id_, bytesToGet)) {
+    if (mainBuffer.availableForGet(id_) < samplesToGet
+        && not mainBuffer.waitForDataAvailable(id_, samplesToGet, msPerPacket_)) {
         return;
     }
 
     // get data
     micData_.setFormat(bufferFormat);
-    micData_.resize(bytesToGet);
-    const auto samples = ringBuffer->get(micData_, id_);
-    if (samples != bytesToGet)
+    micData_.resize(samplesToGet);
+    const auto samples = mainBuffer.getData(micData_, id_);
+    if (samples != samplesToGet)
         return;
 
     if (muteState_) // audio is muted, set samples to 0
@@ -95,12 +95,6 @@ AudioInput::process()
     }
 }
 
-void
-AudioInput::cleanup()
-{
-    micData_.clear();
-}
-
 void
 AudioInput::setMuted(bool isMuted)
 {
diff --git a/src/media/audio/audio_input.h b/src/media/audio/audio_input.h
index abc3647adfd892a6119e841060cd4868b4c07f51..2eba6d8b18d86175785b0761045e7b31834a8d35 100644
--- a/src/media/audio/audio_input.h
+++ b/src/media/audio/audio_input.h
@@ -2,6 +2,7 @@
  *  Copyright (C) 2018 Savoir-faire Linux Inc.
  *
  *  Author: Hugo Lefeuvre <hugo.lefeuvre@savoirfairelinux.com>
+ * Author: Philippe Gorley <philippe.gorley@savoirfairelinux.com>
  *
  *  This program is free software; you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License as published by
@@ -54,7 +55,6 @@ private:
 
     ThreadLoop loop_;
     void process();
-    void cleanup();
 };
 
 } // namespace ring