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

audio processor: avoid drops in some cases

Avoid dropping the mic input or the output feedback if both feeds are late,
by adding the condition that the dropped stream should have a buffer
at least twice as large as the other one.

Change-Id: I99180f299e3ee848fd0c0d4a6ee0d39f7919be32
parent 63b3b9f4
Branches
No related tags found
No related merge requests found
...@@ -118,16 +118,20 @@ protected: ...@@ -118,16 +118,20 @@ protected:
*/ */
bool tidyQueues() bool tidyQueues()
{ {
while (recordQueue_.samples() > recordQueue_.frameSize() * 10) { auto recordFrameSize = recordQueue_.frameSize();
JAMI_DBG("record overflow %d / %d", recordQueue_.samples(), frameSize_); auto playbackFrameSize = playbackQueue_.frameSize();
while (recordQueue_.samples() > recordFrameSize * 10
&& 2 * playbackQueue_.samples() * recordFrameSize < recordQueue_.samples() * playbackFrameSize) {
JAMI_LOG("record overflow {:d} / {:d} - playback: {:d}", recordQueue_.samples(), frameSize_, playbackQueue_.samples());
recordQueue_.dequeue(); recordQueue_.dequeue();
} }
while (playbackQueue_.samples() > playbackQueue_.frameSize() * 10) { while (playbackQueue_.samples() > playbackFrameSize * 10
JAMI_DBG("playback overflow %d / %d", playbackQueue_.samples(), frameSize_); && 2 * recordQueue_.samples() * playbackFrameSize < playbackQueue_.samples() * recordFrameSize) {
JAMI_LOG("playback overflow {:d} / {:d} - record: {:d}", playbackQueue_.samples(), frameSize_, recordQueue_.samples());
playbackQueue_.dequeue(); playbackQueue_.dequeue();
} }
if (recordQueue_.samples() < recordQueue_.frameSize() if (recordQueue_.samples() < recordFrameSize
|| playbackQueue_.samples() < playbackQueue_.frameSize()) { || playbackQueue_.samples() < playbackFrameSize) {
// If there are not enough samples in either queue, we can't // If there are not enough samples in either queue, we can't
// process anything. // process anything.
return true; return true;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment