13#include <promeki/config.h>
14#if PROMEKI_ENABLE_CORE
18PROMEKI_NAMESPACE_BEGIN
38class JxsPacketMode :
public TypedEnum<JxsPacketMode> {
40 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY(
"JxsPacketMode",
"JPEG XS Packetization Mode", 0,
41 {
"Codestream", 0,
"Codestream (K=0)"},
42 {
"Slice", 1,
"Slice (K=1)"});
44 using TypedEnum<JxsPacketMode>::TypedEnum;
46 static const JxsPacketMode Codestream;
47 static const JxsPacketMode Slice;
50inline const JxsPacketMode JxsPacketMode::Codestream{0};
51inline const JxsPacketMode JxsPacketMode::Slice{1};
65class JxsTransMode :
public TypedEnum<JxsTransMode> {
67 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY(
"JxsTransMode",
"JPEG XS Transmission Mode", 1,
68 {
"OutOfOrderAllowed", 0,
"Out-of-Order Allowed (T=0)"},
69 {
"SequentialOnly", 1,
"Sequential Only (T=1)"});
71 using TypedEnum<JxsTransMode>::TypedEnum;
73 static const JxsTransMode OutOfOrderAllowed;
74 static const JxsTransMode SequentialOnly;
77inline const JxsTransMode JxsTransMode::OutOfOrderAllowed{0};
78inline const JxsTransMode JxsTransMode::SequentialOnly{1};
92class JxsProfile :
public TypedEnum<JxsProfile> {
94 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY(
"JxsProfile",
"JPEG XS Profile", 0,
95 {
"Unspecified", 0,
"Unspecified"},
96 {
"Light422_10", 1,
"Light 4:2:2 10-bit"},
97 {
"Light444_12", 2,
"Light 4:4:4 12-bit"},
98 {
"LightSubline422_10", 3,
"Light-Subline 4:2:2 10-bit"},
99 {
"Main422_10", 4,
"Main 4:2:2 10-bit"},
100 {
"Main444_12", 5,
"Main 4:4:4 12-bit"},
101 {
"Main4444_12", 6,
"Main 4:4:4:4 12-bit"},
102 {
"High444_12", 7,
"High 4:4:4 12-bit"},
103 {
"High4444_12", 8,
"High 4:4:4:4 12-bit"},
104 {
"Tdc422_10", 9,
"TDC 4:2:2 10-bit"});
106 using TypedEnum<JxsProfile>::TypedEnum;
108 static const JxsProfile Unspecified;
109 static const JxsProfile Light422_10;
110 static const JxsProfile Light444_12;
111 static const JxsProfile LightSubline422_10;
112 static const JxsProfile Main422_10;
113 static const JxsProfile Main444_12;
114 static const JxsProfile Main4444_12;
115 static const JxsProfile High444_12;
116 static const JxsProfile High4444_12;
117 static const JxsProfile Tdc422_10;
120inline const JxsProfile JxsProfile::Unspecified{0};
121inline const JxsProfile JxsProfile::Light422_10{1};
122inline const JxsProfile JxsProfile::Light444_12{2};
123inline const JxsProfile JxsProfile::LightSubline422_10{3};
124inline const JxsProfile JxsProfile::Main422_10{4};
125inline const JxsProfile JxsProfile::Main444_12{5};
126inline const JxsProfile JxsProfile::Main4444_12{6};
127inline const JxsProfile JxsProfile::High444_12{7};
128inline const JxsProfile JxsProfile::High4444_12{8};
129inline const JxsProfile JxsProfile::Tdc422_10{9};
138class JxsLevel :
public TypedEnum<JxsLevel> {
140 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY(
"JxsLevel",
"JPEG XS Level", 0,
141 {
"Unspecified", 0,
"Unspecified"}, {
"Lvl1k_1", 1,
"1k-1"},
142 {
"Lvl2k_1", 2,
"2k-1"}, {
"Lvl4k_1", 3,
"4k-1"}, {
"Lvl4k_2", 4,
"4k-2"},
143 {
"Lvl4k_3", 5,
"4k-3"}, {
"Lvl8k_1", 6,
"8k-1"}, {
"Lvl8k_2", 7,
"8k-2"},
144 {
"Lvl8k_3", 8,
"8k-3"}, {
"Lvl10k_1", 9,
"10k-1"});
146 using TypedEnum<JxsLevel>::TypedEnum;
148 static const JxsLevel Unspecified;
149 static const JxsLevel Lvl1k_1;
150 static const JxsLevel Lvl2k_1;
151 static const JxsLevel Lvl4k_1;
152 static const JxsLevel Lvl4k_2;
153 static const JxsLevel Lvl4k_3;
154 static const JxsLevel Lvl8k_1;
155 static const JxsLevel Lvl8k_2;
156 static const JxsLevel Lvl8k_3;
157 static const JxsLevel Lvl10k_1;
160inline const JxsLevel JxsLevel::Unspecified{0};
161inline const JxsLevel JxsLevel::Lvl1k_1{1};
162inline const JxsLevel JxsLevel::Lvl2k_1{2};
163inline const JxsLevel JxsLevel::Lvl4k_1{3};
164inline const JxsLevel JxsLevel::Lvl4k_2{4};
165inline const JxsLevel JxsLevel::Lvl4k_3{5};
166inline const JxsLevel JxsLevel::Lvl8k_1{6};
167inline const JxsLevel JxsLevel::Lvl8k_2{7};
168inline const JxsLevel JxsLevel::Lvl8k_3{8};
169inline const JxsLevel JxsLevel::Lvl10k_1{9};
179class JxsSublevel :
public TypedEnum<JxsSublevel> {
181 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY(
"JxsSublevel",
"JPEG XS Sublevel", 0,
182 {
"Unspecified", 0,
"Unspecified"}, {
"Full", 1,
"Full"},
183 {
"Sublev3bpp", 2,
"Sublevel 3 bpp"}, {
"Sublev6bpp", 3,
"Sublevel 6 bpp"},
184 {
"Sublev9bpp", 4,
"Sublevel 9 bpp"}, {
"Sublev12bpp", 5,
"Sublevel 12 bpp"});
186 using TypedEnum<JxsSublevel>::TypedEnum;
188 static const JxsSublevel Unspecified;
189 static const JxsSublevel Full;
190 static const JxsSublevel Sublev3bpp;
191 static const JxsSublevel Sublev6bpp;
192 static const JxsSublevel Sublev9bpp;
193 static const JxsSublevel Sublev12bpp;
196inline const JxsSublevel JxsSublevel::Unspecified{0};
197inline const JxsSublevel JxsSublevel::Full{1};
198inline const JxsSublevel JxsSublevel::Sublev3bpp{2};
199inline const JxsSublevel JxsSublevel::Sublev6bpp{3};
200inline const JxsSublevel JxsSublevel::Sublev9bpp{4};
201inline const JxsSublevel JxsSublevel::Sublev12bpp{5};