libpromeki 1.0.0-alpha
PROfessional MEdia toolKIt
 
Loading...
Searching...
No Matches
st2110tx.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/duration.h>
15#include <promeki/enums_rtp.h>
16#include <promeki/framerate.h>
17#include <promeki/namespace.h>
18
19PROMEKI_NAMESPACE_BEGIN
20
60class St2110Tx {
61 public:
64 static constexpr double Beta = 1.10;
65
82 static double activeRatio(int activeLines, int totalLines) {
83 if (activeLines <= 0 || totalLines <= 0) return 0.0;
84 return static_cast<double>(activeLines) /
85 static_cast<double>(totalLines);
86 }
87
102 static Duration trsGapped(int packetsPerFrame,
103 const Duration &frameInterval,
104 double activeRatio);
105
118 static Duration trsLinear(int packetsPerFrame,
119 const Duration &frameInterval);
120
139 static int64_t tvdUtcNs(int64_t frameAnchorUtcNs, int64_t frameIndex,
140 const Duration &frameInterval,
141 const Duration &trOffset = Duration::zero());
142
161 static int64_t tprJUtcNs(int64_t tvdUtcNs, int packetIndex, const Duration &trs);
162
180 static int64_t vrxFullNarrowBytes(int packetsPerFrame, int maxUdpBytes,
181 const Duration &frameInterval);
182
197 static int cmaxNarrowPackets(int packetsPerFrame, double activeRatio,
198 const Duration &frameInterval);
199
215 static int64_t vrxFullWideBytes(int packetsPerFrame, int maxUdpBytes,
216 const Duration &frameInterval);
217
228 static int cmaxWidePackets(int packetsPerFrame, const Duration &frameInterval);
229
255 static RtpSenderType resolveSenderType(const RtpPacingMode &pacingMode);
256
285 static Duration troDefault(const RtpSenderType &senderType,
286 int packetsPerFrame, const Duration &frameInterval,
287 double activeRatio, int maxUdpBytes);
288
302 static String tpFmtpValue(const RtpSenderType &senderType);
303
315 static RtpSenderType senderTypeFromTp(const String &value);
316};
317
318PROMEKI_NAMESPACE_END
319
320#endif // PROMEKI_ENABLE_NETWORK