vdr-plugin-softhddevice-drm-gles 1.6.2
jittertracker.cpp
Go to the documentation of this file.
1// SPDX-License-Identifier: AGPL-3.0-or-later
2
10#include <algorithm>
11#include <cmath>
12
13#include "jittertracker.h"
14#include "logger.h"
15
28{
29 auto now = std::chrono::steady_clock::now();
30
32
33 if (m_firstPacket) {
35 m_firstPacket = false;
36
37 return;
38 }
39
40 auto diffMs = std::chrono::duration_cast<std::chrono::milliseconds>(now - m_lastTime).count();
41
42 if (m_secondPacket) {
45 m_secondPacket = false;
46
47 return;
48 }
49
50 int jitterMs = std::abs(m_lastDiffMs - diffMs);
51
54
57
58 // if (jitterMs > 35 && strcmp(m_identifier, "video") == 0)
59 // LOGDEBUG2(L_SOUND, "jittertracker: %s: %s: high jitter detected: packet no.: %d: %dms (last diff: %dms, time diff: %dms)", __FUNCTION__, m_identifier, m_packetCounter, jitterMs, m_lastDiffMs, diffMs);
60
61 if (m_packetCounter % 1000 == 0) {
62 // LOGDEBUG2(L_SOUND, "jittertracker: %s: %s: max jitter: last 1000 packets: %dms, overall: %dms,", __FUNCTION__, m_identifier, m_shortTermMaxJitterMs, m_longTermMaxJitterMs);
64 }
65
68}
69
82
int64_t m_lastDiffMs
std::chrono::steady_clock::time_point m_lastTime
std::atomic< int > m_shortTermMaxJitterMs
std::atomic< int > m_longTermMaxJitterMs
void PacketReceived(void)
Called each time a packet is received.
void Reset(void)
Resets the jitter tracker.
Jitter Tracking of Incoming Packets Header File.
Logger Header File.