From e5f1ac31a821436da3915d485193c4f536b6f9db Mon Sep 17 00:00:00 2001 From: Phil Taylor Date: Tue, 2 Mar 2021 14:35:33 +0000 Subject: [PATCH] Identify if we have missing audio seq numbers. --- audiohandler.cpp | 9 +++++++-- audiohandler.h | 1 + 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/audiohandler.cpp b/audiohandler.cpp index 23bcef7..13e4614 100644 --- a/audiohandler.cpp +++ b/audiohandler.cpp @@ -959,8 +959,9 @@ qint64 audioHandler::readData(char* data, qint64 maxlen) //qDebug(logAudio()) << "Packet " << hex << packet->seq << " arrived too late (increase rx buffer size!) " << dec << packet->time.msecsTo(QTime::currentTime()) << "ms"; packet = audioBuffer.erase(packet); // returns next packet } - else //if (timediff > (int)latency / 2) + else if (packet->seq == lastSeq+1 || packet->seq <= lastSeq) { + lastSeq = packet->seq; //qDebug(logAudio()) << "Packet " << hex << packet->seq << " arrived on time " << dec << packet->time.msecsTo(QTime::currentTime()) << "ms"; // Will this packet fit in the current buffer? int send = qMin((int)((maxlen/divisor) - (sentlen/divisor)), packet->data.length() - packet->sent); @@ -992,6 +993,7 @@ qint64 audioHandler::readData(char* data, qint64 maxlen) if (send == packet->data.length()) { + lastSeq = packet->seq; packet = audioBuffer.erase(packet); // returns next packet if (maxlen - sentlen == 0) { @@ -1010,7 +1012,10 @@ qint64 audioHandler::readData(char* data, qint64 maxlen) qDebug(logAudio()) << "Packet " << hex << packet->seq << " is partial, sent=" << dec << packet->sent << " sentlen=" << sentlen; break; } - } + } else { + qDebug(logAudio()) << "Missing audio packet(s) from: " << lastSeq + 1 << " to " << packet->seq - 1; + lastSeq = packet->seq; + } } } diff --git a/audiohandler.h b/audiohandler.h index b5946e2..27f86e7 100644 --- a/audiohandler.h +++ b/audiohandler.h @@ -82,6 +82,7 @@ private: bool isInput; // Used to determine whether input or output audio float volume; int chunkSize; + quint16 lastSeq; QAudioFormat format; QAudioDeviceInfo deviceInfo;