Skip to content
Snippets Groups Projects
Commit 6a6d9010 authored by Adrien Béraud's avatar Adrien Béraud
Browse files

audio: honor isCaptureMuted

Change-Id: I18d301f44fde5e342da4d8af799f6e1a28ef91fb
parent d333b18a
Branches
Tags
No related merge requests found
......@@ -27,8 +27,8 @@
#include "client/ring_signal.h"
#include "audio/ringbufferpool.h"
#include "audio/ringbuffer.h"
#include "audio/resampler.h"
#include "audio/audioloop.h"
#include "libav_utils.h"
#include <thread>
#include <atomic>
......@@ -697,7 +697,8 @@ void AlsaLayer::capture()
const int framesPerBufferAlsa = 2048;
toGetFrames = std::min(framesPerBufferAlsa, toGetFrames);
if (auto r = read(toGetFrames)) {
//captureBuff_.applyGain(isCaptureMuted_ ? 0.0 : captureGain_);
if (isCaptureMuted_)
libav_utils::fillWithSilence(r->pointer());
//dcblocker_.process(captureBuff_);
mainRingBuffer_->put(std::move(r));
} else
......
......@@ -22,9 +22,9 @@
#include "corelayer.h"
#include "manager.h"
#include "noncopyable.h"
#include "audio/resampler.h"
#include "audio/ringbufferpool.h"
#include "audio/ringbuffer.h"
#include "libav_utils.h"
#include <cmath>
#include <vector>
......@@ -426,9 +426,13 @@ CoreLayer::read(AudioUnitRenderActionFlags* ioActionFlags,
auto format = audioInputFormat_;
format.sampleFormat = AV_SAMPLE_FMT_FLTP;
auto inBuff = std::make_unique<AudioFrame>(audioInputFormat_, inNumberFrames);
auto& in = *inBuff->pointer();
for (unsigned i = 0; i < inChannelsPerFrame_; ++i)
std::copy_n((Float32*)captureBuff_->mBuffers[i].mData, inNumberFrames, (Float32*)in.extended_data[i]);
if (isCaptureMuted_) {
libav_utils::fillWithSilence(inBuff->pointer());
} else {
auto& in = *inBuff->pointer();
for (unsigned i = 0; i < inChannelsPerFrame_; ++i)
std::copy_n((Float32*)captureBuff_->mBuffers[i].mData, inNumberFrames, (Float32*)in.extended_data[i]);
}
mainRingBuffer_->put(std::move(inBuff));
}
......
......@@ -24,10 +24,10 @@
#include "compiler_intrinsics.h"
#include "audiostream.h"
#include "pulselayer.h"
#include "audio/resampler.h"
#include "audio/dcblocker.h"
#include "audio/ringbufferpool.h"
#include "audio/ringbuffer.h"
#include "libav_utils.h"
#include "logger.h"
#include "manager.h"
......@@ -80,10 +80,6 @@ PulseLayer::PulseLayer(AudioPreference &pref)
, preference_(pref)
, mainRingBuffer_(Manager::instance().getRingBufferPool().getRingBuffer(RingBufferPool::DEFAULT_ID))
{
setCaptureGain(pref.getVolumemic());
setPlaybackGain(pref.getVolumespkr());
muteCapture(pref.getCaptureMuted());
if (!mainloop_)
throw std::runtime_error("Couldn't create pulseaudio mainloop");
......@@ -465,7 +461,10 @@ void PulseLayer::readFromMic()
const size_t samples = bytes / sample_size;
auto out = std::make_unique<AudioFrame>(record_->format(), samples);
std::memcpy(out->pointer()->data[0], data, bytes);
if (isCaptureMuted_)
libav_utils::fillWithSilence(out->pointer());
else
std::memcpy(out->pointer()->data[0], data, bytes);
if (pa_stream_drop(record_->stream()) < 0)
RING_ERR("Capture stream drop failed: %s" , pa_strerror(pa_context_errno(context_)));
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment