11#include <promeki/config.h>
22PROMEKI_NAMESPACE_BEGIN
70class NdiClock :
public Clock {
78 static const ClockDomain &domain();
91 explicit NdiClock(
const FrameRate &frameRate = FrameRate());
105 void setLatestTimestamp(int64_t ndiTimestampTicks);
114 void setFrameRate(
const FrameRate &frameRate);
116 int64_t resolutionNs()
const override;
117 ClockJitter jitter()
const override;
120 Result<int64_t> raw()
const override;
121 Error sleepUntilNs(int64_t targetNs)
const override;
127 mutable Atomic<int64_t> _lastTimestampNs{0};
128 Atomic<bool> _hasTimestamp{
false};
129 Atomic<bool> _shutdown{
false};
134 mutable Mutex _waitMutex;
135 mutable WaitCondition _waitCond;
136 FrameRate _frameRate;