vdr-plugin-softhddevice-drm-gles 1.5.9-20e15de
jittertracker.cpp
Go to the documentation of this file.
1
18#include <algorithm>
19#include <cmath>
20
21#include "jittertracker.h"
22#include "logger.h"
23
30{
31 auto now = std::chrono::steady_clock::now();
32
34
35 if (m_firstPacket) {
36 m_lastTime = now;
37 m_firstPacket = false;
38
39 return;
40 }
41
42 auto diffMs = std::chrono::duration_cast<std::chrono::milliseconds>(now - m_lastTime).count();
43
44 if (m_secondPacket) {
45 m_lastDiffMs = diffMs;
46 m_lastTime = now;
47 m_secondPacket = false;
48
49 return;
50 }
51
52 int jitterMs = std::abs(m_lastDiffMs - diffMs);
53
54 if (jitterMs > m_longTermMaxJitterMs)
55 m_longTermMaxJitterMs = jitterMs;
56
57 if (jitterMs > m_shortTermMaxJitterMs)
58 m_shortTermMaxJitterMs = jitterMs;
59
60 // if (jitterMs > 35 && strcmp(m_identifier, "video") == 0)
61 // 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);
62
63 if (m_packetCounter % 1000 == 0) {
64 // LOGDEBUG2(L_SOUND, "jittertracker: %s: %s: max jitter: last 1000 packets: %dms, overall: %dms,", __FUNCTION__, m_identifier, m_shortTermMaxJitterMs, m_longTermMaxJitterMs);
66 }
67
68 m_lastDiffMs = diffMs;
69 m_lastTime = now;
70}
71
int64_t m_lastDiffMs
std::chrono::steady_clock::time_point m_lastTime
void PacketReceived()
Called each time a packet is received.
void Reset()
Resets the jitter tracker.
Tracks the jitter of incoming packets (currently only for logging purposes)
Logger class header file.