13#include <promeki/config.h>
14#if PROMEKI_ENABLE_CORE
18PROMEKI_NAMESPACE_BEGIN
52class RtpPacingMode :
public TypedEnum<RtpPacingMode> {
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"});
59 using TypedEnum<RtpPacingMode>::TypedEnum;
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;
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};
97class RtpRefClockMode :
public TypedEnum<RtpRefClockMode> {
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"});
103 using TypedEnum<RtpRefClockMode>::TypedEnum;
105 static const RtpRefClockMode Auto;
106 static const RtpRefClockMode LocalMac;
107 static const RtpRefClockMode Ptp;
108 static const RtpRefClockMode None;
111inline const RtpRefClockMode RtpRefClockMode::Auto{0};
112inline const RtpRefClockMode RtpRefClockMode::LocalMac{1};
113inline const RtpRefClockMode RtpRefClockMode::Ptp{2};
114inline const RtpRefClockMode RtpRefClockMode::None{3};
159class RtpMediaClkMode :
public TypedEnum<RtpMediaClkMode> {
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)"});
165 using TypedEnum<RtpMediaClkMode>::TypedEnum;
167 static const RtpMediaClkMode Auto;
168 static const RtpMediaClkMode Direct;
169 static const RtpMediaClkMode Sender;
172inline const RtpMediaClkMode RtpMediaClkMode::Auto{0};
173inline const RtpMediaClkMode RtpMediaClkMode::Direct{1};
174inline const RtpMediaClkMode RtpMediaClkMode::Sender{2};
214class RtpSenderType :
public TypedEnum<RtpSenderType> {
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)"});
221 using TypedEnum<RtpSenderType>::TypedEnum;
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;
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};
251class RtpTsMode :
public TypedEnum<RtpTsMode> {
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)"});
257 using TypedEnum<RtpTsMode>::TypedEnum;
259 static const RtpTsMode Samp;
260 static const RtpTsMode New;
261 static const RtpTsMode Pres;
264inline const RtpTsMode RtpTsMode::Samp{0};
265inline const RtpTsMode RtpTsMode::New{1};
266inline const RtpTsMode RtpTsMode::Pres{2};
287class MetadataRtpFormat :
public TypedEnum<MetadataRtpFormat> {
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)"});
293 using TypedEnum<MetadataRtpFormat>::TypedEnum;
295 static const MetadataRtpFormat JsonMetadata;
296 static const MetadataRtpFormat St2110_40;
299inline const MetadataRtpFormat MetadataRtpFormat::JsonMetadata{0};
300inline const MetadataRtpFormat MetadataRtpFormat::St2110_40{1};
317class NullPacingMode :
public TypedEnum<NullPacingMode> {
319 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY(
"NullPacingMode",
"Null Sink Pacing Mode", 0,
320 {
"Wallclock", 0,
"Wall-Clock Paced"}, {
"Free", 1,
"Free-Running"});
322 using TypedEnum<NullPacingMode>::TypedEnum;
324 static const NullPacingMode Wallclock;
325 static const NullPacingMode Free;
328inline const NullPacingMode NullPacingMode::Wallclock{0};
329inline const NullPacingMode NullPacingMode::Free{1};