MillicastSDK 2.5.0
Loading...
Searching...
No Matches
capabilities.h
Go to the documentation of this file.
1#ifndef MILLICAST_API_CAPABILITIES_H
2#define MILLICAST_API_CAPABILITIES_H
3
11#ifdef __cplusplus
12
13#include <string>
14
15#include "exports.h"
16
17namespace millicast {
18
23enum class VideoType {
24 UNKNOWN,
25 I420,
26 I444,
27 I210,
28 IYUV,
29 RGB24,
30 ARGB,
31 RGB565,
32 YUY2,
33 YV12,
34 NV12,
35 UYVY,
36 MJPEG,
37 BGRA,
38 NATIVE
39};
40
46enum class PrimaryID : uint8_t {
47 // The indices are equal to the values specified in T-REC H.273 Table 2.
48 BT709 = 1,
49 UNSPECIFIED = 2,
50 BT470M = 4,
51 BT470BG = 5,
52 SMPTE170M = 6, // Identical to BT601
53 SMPTE240M = 7,
54 FILM = 8,
55 BT2020 = 9,
56 SMPTEST428 = 10,
57 SMPTEST431 = 11,
58 SMPTEST432 = 12,
59 JEDECP22 = 22, // Identical to EBU3213-E
60 // When adding/removing entries here, please make sure to do
61 // the corresponding change to kPrimaryIds.
62};
63
69enum class TransferID : uint8_t {
70 // The indices are equal to the values specified in T-REC H.273 Table 3.
71 BT709 = 1,
72 UNSPECIFIED = 2,
73 GAMMA22 = 4,
74 GAMMA28 = 5,
75 SMPTE170M = 6,
76 SMPTE240M = 7,
77 LINEAR = 8,
78 LOG = 9,
79 LOG_SQRT = 10,
80 IEC61966_2_4 = 11,
81 BT1361_ECG = 12,
82 IEC61966_2_1 = 13,
83 BT2020_10 = 14,
84 BT2020_12 = 15,
85 SMPTEST2084 = 16,
86 SMPTEST428 = 17,
87 ARIB_STD_B67 = 18,
88 // When adding/removing entries here, please make sure to do the
89 // corresponding change to kTransferIds.
90};
91
97enum class MatrixID : uint8_t {
98 // The indices are equal to the values specified in T-REC H.273 Table 4.
99 RGB = 0,
100 BT709 = 1,
101 UNSPECIFIED = 2,
102 FCC = 4,
103 BT470BG = 5,
104 SMPTE170M = 6,
105 SMPTE240M = 7,
106 YCOCG = 8,
107 BT2020_NCL = 9,
108 BT2020_CL = 10,
109 SMPTE2085 = 11,
110 CDNCLS = 12,
111 CDCLS = 13,
112 BT2100_ICTCP = 14,
113 // When adding/removing entries here, please make sure to do the
114 // corresponding change to kMatrixIds.
115};
116
121enum class RangeID {
122 // The indices are equal to the values specified at
123 // https://www.webmproject.org/docs/container/#colour for the element Range.
124 INVALID = 0,
125 // Limited Rec. 709 color range with RGB values ranging from 16 to 235.
126 LIMITED = 1,
127 // Full RGB color range with RGB valees from 0 to 255.
128 FULL = 2,
129 // Range is defined by MatrixCoefficients/TransferCharacteristics.
130 DERIVED = 3,
131 // When adding/removing entries here, please make sure to do the
132 // corresponding change to kRangeIds.
133};
134
141MILLICAST_API std::string video_type_to_str(VideoType t);
142
147class VideoCapabilities {
148 public:
149 int width{};
150 int height{};
151 int fps{};
152 VideoType format{
153 VideoType::UNKNOWN};
154 PrimaryID primary{
155 PrimaryID::UNSPECIFIED};
157 TransferID transfer{TransferID::UNSPECIFIED};
159 MatrixID matrix{MatrixID::UNSPECIFIED};
161 RangeID range{
162 RangeID::INVALID};
168 std::string video_standard;
169
170 [[nodiscard]] MILLICAST_API std::string format_as_str()
171 const;
172};
173
174} // namespace millicast
175
176#endif /* MILLICAST_API_CAPABILITIES_H */
177#endif // __cplusplus
#define MILLICAST_API
Definition exports.h:51