libpromeki 1.0.0-alpha
PROfessional MEdia toolKIt
 
Loading...
Searching...
No Matches
enums_rtp.h
Go to the documentation of this file.
1
10#pragma once
11
12
13#include <promeki/config.h>
14#if PROMEKI_ENABLE_CORE
15#include <promeki/namespace.h>
16#include <promeki/enum.h>
17
18PROMEKI_NAMESPACE_BEGIN
19
52class RtpPacingMode : public TypedEnum<RtpPacingMode> {
53 public:
54 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY("RtpPacingMode", "RTP Sender Pacing Mode", 4,
55 {"None", 0, "None (Burst)"}, {"Userspace", 1, "Userspace (Software Pacing)"},
56 {"KernelFq", 2, "Kernel Fair Queue (fq qdisc)"},
57 {"TxTime", 3, "TX Time (ETF / SCM_TXTIME)"}, {"Auto", 4, "Automatic"}); // default: Auto
58
59 using TypedEnum<RtpPacingMode>::TypedEnum;
60
61 static const RtpPacingMode None;
62 static const RtpPacingMode Userspace;
63 static const RtpPacingMode KernelFq;
64 static const RtpPacingMode TxTime;
65 static const RtpPacingMode Auto;
66};
67
68inline const RtpPacingMode RtpPacingMode::None{0};
69inline const RtpPacingMode RtpPacingMode::Userspace{1};
70inline const RtpPacingMode RtpPacingMode::KernelFq{2};
71inline const RtpPacingMode RtpPacingMode::TxTime{3};
72inline const RtpPacingMode RtpPacingMode::Auto{4};
73
97class RtpRefClockMode : public TypedEnum<RtpRefClockMode> {
98 public:
99 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY("RtpRefClockMode", "SDP Reference Clock (ts-refclk) Mode", 0,
100 {"Auto", 0, "Automatic"}, {"LocalMac", 1, "Local MAC"},
101 {"Ptp", 2, "PTP (Precision Time Protocol)"}, {"None", 3, "None"}); // default: Auto
102
103 using TypedEnum<RtpRefClockMode>::TypedEnum;
104
105 static const RtpRefClockMode Auto;
106 static const RtpRefClockMode LocalMac;
107 static const RtpRefClockMode Ptp;
108 static const RtpRefClockMode None;
109};
110
111inline const RtpRefClockMode RtpRefClockMode::Auto{0};
112inline const RtpRefClockMode RtpRefClockMode::LocalMac{1};
113inline const RtpRefClockMode RtpRefClockMode::Ptp{2};
114inline const RtpRefClockMode RtpRefClockMode::None{3};
115
159class RtpMediaClkMode : public TypedEnum<RtpMediaClkMode> {
160 public:
161 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY("RtpMediaClkMode", "Media Clock (mediaclk) Mode", 0,
162 {"Auto", 0, "Automatic"}, {"Direct", 1, "Direct (Locked Offset)"},
163 {"Sender", 2, "Sender (Asynchronous)"}); // default: Auto
164
165 using TypedEnum<RtpMediaClkMode>::TypedEnum;
166
167 static const RtpMediaClkMode Auto;
168 static const RtpMediaClkMode Direct;
169 static const RtpMediaClkMode Sender;
170};
171
172inline const RtpMediaClkMode RtpMediaClkMode::Auto{0};
173inline const RtpMediaClkMode RtpMediaClkMode::Direct{1};
174inline const RtpMediaClkMode RtpMediaClkMode::Sender{2};
175
214class RtpSenderType : public TypedEnum<RtpSenderType> {
215 public:
216 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY("RtpSenderType", "ST 2110-21 Sender Type", 0,
217 {"Auto", 0, "Automatic"}, {"Unknown", 1, "Unknown"},
218 {"TypeN", 2, "Type N (Narrow, Gapped)"}, {"TypeNL", 3, "Type NL (Narrow, Linear)"},
219 {"TypeW", 4, "Type W (Wide, Linear)"}); // default: Auto
220
221 using TypedEnum<RtpSenderType>::TypedEnum;
222
223 static const RtpSenderType Auto;
224 static const RtpSenderType Unknown;
225 static const RtpSenderType TypeN;
226 static const RtpSenderType TypeNL;
227 static const RtpSenderType TypeW;
228};
229
230inline const RtpSenderType RtpSenderType::Auto{0};
231inline const RtpSenderType RtpSenderType::Unknown{1};
232inline const RtpSenderType RtpSenderType::TypeN{2};
233inline const RtpSenderType RtpSenderType::TypeNL{3};
234inline const RtpSenderType RtpSenderType::TypeW{4};
235
251class RtpTsMode : public TypedEnum<RtpTsMode> {
252 public:
253 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY("RtpTsMode", "ST 2110-10 Timestamp Mode (TSMODE)", 0,
254 {"Samp", 0, "Sample Instant (SAMP)"}, {"New", 1, "Newly Created (NEW)"},
255 {"Pres", 2, "Preserved (PRES)"}); // default: Samp
256
257 using TypedEnum<RtpTsMode>::TypedEnum;
258
259 static const RtpTsMode Samp;
260 static const RtpTsMode New;
261 static const RtpTsMode Pres;
262};
263
264inline const RtpTsMode RtpTsMode::Samp{0};
265inline const RtpTsMode RtpTsMode::New{1};
266inline const RtpTsMode RtpTsMode::Pres{2};
267
287class MetadataRtpFormat : public TypedEnum<MetadataRtpFormat> {
288 public:
289 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY("MetadataRtpFormat", "Metadata RTP Wire Format", 0,
290 {"JsonMetadata", 0, "JSON Metadata"},
291 {"St2110_40", 1, "ST 2110-40 Ancillary Data (RFC 8331)"}); // default: JsonMetadata
292
293 using TypedEnum<MetadataRtpFormat>::TypedEnum;
294
295 static const MetadataRtpFormat JsonMetadata;
296 static const MetadataRtpFormat St2110_40;
297};
298
299inline const MetadataRtpFormat MetadataRtpFormat::JsonMetadata{0};
300inline const MetadataRtpFormat MetadataRtpFormat::St2110_40{1};
301
317class NullPacingMode : public TypedEnum<NullPacingMode> {
318 public:
319 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY("NullPacingMode", "Null Sink Pacing Mode", 0,
320 {"Wallclock", 0, "Wall-Clock Paced"}, {"Free", 1, "Free-Running"});
321
322 using TypedEnum<NullPacingMode>::TypedEnum;
323
324 static const NullPacingMode Wallclock;
325 static const NullPacingMode Free;
326};
327
328inline const NullPacingMode NullPacingMode::Wallclock{0};
329inline const NullPacingMode NullPacingMode::Free{1};
330
333PROMEKI_NAMESPACE_END
334
335#endif // PROMEKI_ENABLE_CORE