libpromeki 1.0.0-alpha
PROfessional MEdia toolKIt
 
Loading...
Searching...
No Matches
cadencepacketscheduler.h
Go to the documentation of this file.
1
8#pragma once
9
10
11#include <promeki/config.h>
12#if PROMEKI_ENABLE_NETWORK
13#include <promeki/cadence.h>
14#include <promeki/duration.h>
15#include <promeki/namespace.h>
17
18PROMEKI_NAMESPACE_BEGIN
19
55class CadencePacketScheduler : public PacketScheduler {
56 public:
58 static constexpr int DefaultStallReanchorMultiplier = 10;
59
60 CadencePacketScheduler();
61 ~CadencePacketScheduler() override = default;
62
63 Error configure(const Spec &spec) override;
64 int enqueue(const PacketTransport::DatagramList &datagrams) override;
65 int predictedTxDelayUs() const override;
66
71 void setStallReanchorMultiplier(int n) { _stallMultiplier = n; }
72
73 private:
77 int sendOne(const PacketTransport::Datagram &d);
78
79 Cadence _streamCadence{Duration()};
80 bool _streamAnchored = false;
81 int _stallMultiplier = DefaultStallReanchorMultiplier;
82};
83
84PROMEKI_NAMESPACE_END
85
86#endif // PROMEKI_ENABLE_NETWORK