Merge pull request #262 from pljones/bugfix/234-frame-count-can-be-wrong

#234 Fix from @Snayler for offset problem in recorder
This commit is contained in:
Volker Fischer 2020-05-22 19:44:59 +02:00 committed by GitHub
commit 0d6262edc4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 10 additions and 2 deletions

View file

@ -109,6 +109,7 @@ void CJamClient::Disconnect()
CJamSession::CJamSession(QDir recordBaseDir) : CJamSession::CJamSession(QDir recordBaseDir) :
sessionDir (QDir(recordBaseDir.absoluteFilePath("Jam-" + QDateTime().currentDateTimeUtc().toString("yyyyMMdd-HHmmsszzz")))), sessionDir (QDir(recordBaseDir.absoluteFilePath("Jam-" + QDateTime().currentDateTimeUtc().toString("yyyyMMdd-HHmmsszzz")))),
currentFrame (0), currentFrame (0),
chIdDisconnected (-1),
vecptrJamClients (MAX_NUM_CHANNELS), vecptrJamClients (MAX_NUM_CHANNELS),
jamClientConnections() jamClientConnections()
{ {
@ -130,8 +131,6 @@ CJamSession::CJamSession(QDir recordBaseDir) :
// Explicitly set all the pointers to "empty" // Explicitly set all the pointers to "empty"
vecptrJamClients.fill(nullptr); vecptrJamClients.fill(nullptr);
currentFrame = 0;
} }
/** /**
@ -150,6 +149,7 @@ void CJamSession::DisconnectClient(int iChID)
delete vecptrJamClients[iChID]; delete vecptrJamClients[iChID];
vecptrJamClients[iChID] = nullptr; vecptrJamClients[iChID] = nullptr;
chIdDisconnected = iChID;
} }
/** /**
@ -167,6 +167,13 @@ void CJamSession::DisconnectClient(int iChID)
*/ */
void CJamSession::Frame(const int iChID, const QString name, const CHostAddress address, const int numAudioChannels, const CVector<int16_t> data, int iServerFrameSizeSamples) void CJamSession::Frame(const int iChID, const QString name, const CHostAddress address, const int numAudioChannels, const CVector<int16_t> data, int iServerFrameSizeSamples)
{ {
if ( iChID == chIdDisconnected )
{
// DisconnectClient has just been called for this channel - this frame is "too late"
chIdDisconnected = -1;
return;
}
if (vecptrJamClients[iChID] == nullptr) if (vecptrJamClients[iChID] == nullptr)
{ {
// then we have not seen this client this session // then we have not seen this client this session

View file

@ -128,6 +128,7 @@ private:
const QDir sessionDir; const QDir sessionDir;
qint64 currentFrame; qint64 currentFrame;
int chIdDisconnected;
QVector<CJamClient*> vecptrJamClients; QVector<CJamClient*> vecptrJamClients;
QList<CJamClientConnection*> jamClientConnections; QList<CJamClientConnection*> jamClientConnections;
}; };