Skip to content
Snippets Groups Projects
Commit 6d1378cb authored by Andreas Traczyk's avatar Andreas Traczyk
Browse files

portaudiolayer: calculate frames to copy with number of channels

- also honor isCaptureMuted

Change-Id: Ic0c17ea2acecf8d773fc34f3487b0c12c0706247
parent ab992d2f
No related branches found
No related tags found
No related merge requests found
......@@ -268,13 +268,14 @@ PortAudioLayer::PortAudioLayerImpl::paOutputCallback(PortAudioLayer& parent,
(void) timeInfo;
(void) statusFlags;
const auto& ringBuff = parent.getToRing(parent.audioFormat_, framesPerBuffer);
const auto& playBuff = parent.getToPlay(parent.audioFormat_, framesPerBuffer);
auto toPlay = ringBuff ? ringBuff : playBuff;
if (!toPlay)
auto toPlay = parent.getPlayback(parent.audioFormat_, framesPerBuffer);
if (!toPlay) {
std::fill_n(outputBuffer, framesPerBuffer * parent.audioFormat_.nb_channels, 0);
return paContinue;
}
std::copy_n((AudioSample*)toPlay->pointer()->extended_data[0], toPlay->pointer()->nb_samples, outputBuffer);
auto nFrames = toPlay->pointer()->nb_samples * toPlay->pointer()->channels;
std::copy_n((AudioSample*)toPlay->pointer()->extended_data[0], nFrames, outputBuffer);
return paContinue;
}
......@@ -298,8 +299,11 @@ PortAudioLayer::PortAudioLayerImpl::paInputCallback(PortAudioLayer& parent,
}
auto inBuff = std::make_unique<AudioFrame>(parent.audioInputFormat_, framesPerBuffer);
std::copy_n(inputBuffer, framesPerBuffer, (AudioSample*)inBuff->pointer()->extended_data[0]);
//inBuff.applyGain(parent.isCaptureMuted_ ? 0.0 : parent.captureGain_);
auto nFrames = framesPerBuffer * parent.audioInputFormat_.nb_channels;
if (parent.isCaptureMuted_)
libav_utils::fillWithSilence(inBuff->pointer());
else
std::copy_n(inputBuffer, nFrames, (AudioSample*)inBuff->pointer()->extended_data[0]);
mainRingBuffer_->put(std::move(inBuff));
return paContinue;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment