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