libpromeki 1.0.0-alpha
PROfessional MEdia toolKIt
 
Loading...
Searching...
No Matches
rtpstreamclock.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 <cstdint>
14#include <promeki/namespace.h>
15#include <promeki/ntptime.h>
16
17PROMEKI_NAMESPACE_BEGIN
18
59class RtpStreamClock {
60 public:
61 RtpStreamClock() = default;
62
73 RtpStreamClock(const NtpTime &srNtp, uint32_t srRtpTs, uint32_t clockRate)
74 : _srNtp(srNtp), _srRtpTs(srRtpTs), _clockRate(clockRate),
75 _valid(clockRate > 0) {}
76
79 bool isValid() const { return _valid; }
80
88 void setSr(const NtpTime &srNtp, uint32_t srRtpTs) {
89 _srNtp = srNtp;
90 _srRtpTs = srRtpTs;
91 _valid = _clockRate > 0;
92 }
93
101 void setClockRate(uint32_t clockRate) {
102 _clockRate = clockRate;
103 _valid = _clockRate > 0 && _srNtp.isValid();
104 }
105
107 const NtpTime &srNtp() const { return _srNtp; }
108
110 uint32_t srRtpTs() const { return _srRtpTs; }
111
114 uint32_t clockRate() const { return _clockRate; }
115
126 NtpTime toNtp(uint32_t rtpTs) const;
127
145 uint32_t toRtpTs(const NtpTime &ntp) const;
146
147 private:
148 NtpTime _srNtp;
149 uint32_t _srRtpTs = 0;
150 uint32_t _clockRate = 0;
151 bool _valid = false;
152};
153
154PROMEKI_NAMESPACE_END
155
156#endif // PROMEKI_ENABLE_NETWORK