1use super::c_bindings::{tSdkFrameHead, CameraHandle, BYTE, PVOID};
2use super::{status::CamFail, CamRes};
3
4#[derive(Debug)]
11pub enum CamImgFormat {
12 MONO = 16777216,
13 RGB = 33554432,
14 CUSTOM = 2147483648,
15 COLOR_MASK = 4278190080,
16 OCCUPY1BIT = 65536,
17 OCCUPY2BIT = 131072,
18 OCCUPY4BIT = 262144,
19 OCCUPY8BIT = 524288,
20 OCCUPY10BIT = 655360,
21 OCCUPY12BIT = 786432,
22 OCCUPY16BIT = 1048576,
23 OCCUPY24BIT = 1572864,
24 OCCUPY32BIT = 2097152,
25 OCCUPY36BIT = 2359296,
26 OCCUPY48BIT = 3145728,
27 OCCUPY64BIT = 4194304,
28 EFFECTIVE_PIXEL_SIZE_MASK = 16711680,
29 EFFECTIVE_PIXEL_SIZE_SHIFT = 16,
30 ID_MASK = 65535,
31 COUNT = 70,
32 MONO1P = 16842807,
33 MONO2P = 16908344,
34 MONO4P = 17039417,
35 MONO8 = 17301505,
36 MONO8S = 17301506,
37 MONO10 = 17825795,
38 MONO10_PACKED = 17563652,
39 MONO12 = 17825797,
40 MONO12_PACKED = 17563654,
41 MONO14 = 17825829,
42 MONO16 = 17825799,
43 BAYGR8 = 17301512,
44 BAYRG8 = 17301513,
45 BAYGB8 = 17301514,
46 BAYBG8 = 17301515,
47 BAYGR10_MIPI = 17432614,
48 BAYRG10_MIPI = 17432615,
49 BAYGB10_MIPI = 17432616,
50 BAYBG10_MIPI = 17432617,
51 BAYGR10 = 17825804,
52 BAYRG10 = 17825805,
53 BAYGB10 = 17825806,
54 BAYBG10 = 17825807,
55 BAYGR12 = 17825808,
56 BAYRG12 = 17825809,
57 BAYGB12 = 17825810,
58 BAYBG12 = 17825811,
59 BAYGR10_PACKED = 17563686,
60 BAYRG10_PACKED = 17563687,
61 BAYGB10_PACKED = 17563688,
62 BAYBG10_PACKED = 17563689,
63 BAYGR12_PACKED = 17563690,
64 BAYRG12_PACKED = 17563691,
65 BAYGB12_PACKED = 17563692,
66 BAYBG12_PACKED = 17563693,
67 BAYGR16 = 17825838,
68 BAYRG16 = 17825839,
69 BAYGB16 = 17825840,
70 BAYBG16 = 17825841,
71 RGB8 = 35127316,
72 BGR8 = 35127317,
73 RGBA8 = 35651606,
74 BGRA8 = 35651607,
75 RGB10 = 36700184,
76 BGR10 = 36700185,
77 RGB12 = 36700186,
78 BGR12 = 36700187,
79 RGB16 = 36700211,
80 BGR16 = 36700235,
81 RGBA16 = 37748836,
82 BGRA16 = 37748817,
83 RGB10V1_PACKED = 35651612,
84 RGB10P32 = 35651613,
85 RGB12V1_PACKED = 35913780,
86 RGB565P = 34603061,
87 BGR565P = 34603062,
88 YUV411_8_UYYVYY = 34340894,
89 YUV422_8_UYVY = 34603039,
90 YUV422_8 = 34603058,
91 YUV8_UYV = 35127328,
92 YCBCR8_CBYCR = 35127354,
93 YCBCR422_8 = 34603067,
94 YCBCR422_8_CBYCRY = 34603075,
95 YCBCR411_8_CBYYCRYY = 34340924,
96 YCBCR601_8_CBYCR = 35127357,
97 YCBCR601_422_8 = 34603070,
98 YCBCR601_422_8_CBYCRY = 34603076,
99 YCBCR601_411_8_CBYYCRYY = 34340927,
100 YCBCR709_8_CBYCR = 35127360,
101 YCBCR709_422_8 = 34603073,
102 YCBCR709_422_8_CBYCRY = 34603077,
103 YCBCR709_411_8_CBYYCRYY = 34340930,
104 RGB8_PLANAR = 35127329,
105 RGB10_PLANAR = 36700194,
106 RGB12_PLANAR = 36700195,
107 RGB16_PLANAR = 36700196,
108 BAYGR12_PACKED_MV = 17563744,
109 BAYRG12_PACKED_MV = 17563745,
110 BAYGB12_PACKED_MV = 17563746,
111 BAYBG12_PACKED_MV = 17563747,
112 MONO12_PACKED_MV = 17563748,
113 YUV420P_MV = 34340965,
114}
115
116impl CamImgFormat {
117 pub fn from_raw(fmt: u32) -> CamRes<CamImgFormat> {
118 match fmt {
119 16777216 => Ok(CamImgFormat::MONO),
120 33554432 => Ok(CamImgFormat::RGB),
121 2147483648 => Ok(CamImgFormat::CUSTOM),
122 4278190080 => Ok(CamImgFormat::COLOR_MASK),
123 65536 => Ok(CamImgFormat::OCCUPY1BIT),
124 131072 => Ok(CamImgFormat::OCCUPY2BIT),
125 262144 => Ok(CamImgFormat::OCCUPY4BIT),
126 524288 => Ok(CamImgFormat::OCCUPY8BIT),
127 655360 => Ok(CamImgFormat::OCCUPY10BIT),
128 786432 => Ok(CamImgFormat::OCCUPY12BIT),
129 1048576 => Ok(CamImgFormat::OCCUPY16BIT),
130 1572864 => Ok(CamImgFormat::OCCUPY24BIT),
131 2097152 => Ok(CamImgFormat::OCCUPY32BIT),
132 2359296 => Ok(CamImgFormat::OCCUPY36BIT),
133 3145728 => Ok(CamImgFormat::OCCUPY48BIT),
134 4194304 => Ok(CamImgFormat::OCCUPY64BIT),
135 16711680 => Ok(CamImgFormat::EFFECTIVE_PIXEL_SIZE_MASK),
136 16 => Ok(CamImgFormat::EFFECTIVE_PIXEL_SIZE_SHIFT),
137 65535 => Ok(CamImgFormat::ID_MASK),
138 70 => Ok(CamImgFormat::COUNT),
139 16842807 => Ok(CamImgFormat::MONO1P),
140 16908344 => Ok(CamImgFormat::MONO2P),
141 17039417 => Ok(CamImgFormat::MONO4P),
142 17301505 => Ok(CamImgFormat::MONO8),
143 17301506 => Ok(CamImgFormat::MONO8S),
144 17825795 => Ok(CamImgFormat::MONO10),
145 17563652 => Ok(CamImgFormat::MONO10_PACKED),
146 17825797 => Ok(CamImgFormat::MONO12),
147 17563654 => Ok(CamImgFormat::MONO12_PACKED),
148 17825829 => Ok(CamImgFormat::MONO14),
149 17825799 => Ok(CamImgFormat::MONO16),
150 17301512 => Ok(CamImgFormat::BAYGR8),
151 17301513 => Ok(CamImgFormat::BAYRG8),
152 17301514 => Ok(CamImgFormat::BAYGB8),
153 17301515 => Ok(CamImgFormat::BAYBG8),
154 17432614 => Ok(CamImgFormat::BAYGR10_MIPI),
155 17432615 => Ok(CamImgFormat::BAYRG10_MIPI),
156 17432616 => Ok(CamImgFormat::BAYGB10_MIPI),
157 17432617 => Ok(CamImgFormat::BAYBG10_MIPI),
158 17825804 => Ok(CamImgFormat::BAYGR10),
159 17825805 => Ok(CamImgFormat::BAYRG10),
160 17825806 => Ok(CamImgFormat::BAYGB10),
161 17825807 => Ok(CamImgFormat::BAYBG10),
162 17825808 => Ok(CamImgFormat::BAYGR12),
163 17825809 => Ok(CamImgFormat::BAYRG12),
164 17825810 => Ok(CamImgFormat::BAYGB12),
165 17825811 => Ok(CamImgFormat::BAYBG12),
166 17563686 => Ok(CamImgFormat::BAYGR10_PACKED),
167 17563687 => Ok(CamImgFormat::BAYRG10_PACKED),
168 17563688 => Ok(CamImgFormat::BAYGB10_PACKED),
169 17563689 => Ok(CamImgFormat::BAYBG10_PACKED),
170 17563690 => Ok(CamImgFormat::BAYGR12_PACKED),
171 17563691 => Ok(CamImgFormat::BAYRG12_PACKED),
172 17563692 => Ok(CamImgFormat::BAYGB12_PACKED),
173 17563693 => Ok(CamImgFormat::BAYBG12_PACKED),
174 17825838 => Ok(CamImgFormat::BAYGR16),
175 17825839 => Ok(CamImgFormat::BAYRG16),
176 17825840 => Ok(CamImgFormat::BAYGB16),
177 17825841 => Ok(CamImgFormat::BAYBG16),
178 35127316 => Ok(CamImgFormat::RGB8),
179 35127317 => Ok(CamImgFormat::BGR8),
180 35651606 => Ok(CamImgFormat::RGBA8),
181 35651607 => Ok(CamImgFormat::BGRA8),
182 36700184 => Ok(CamImgFormat::RGB10),
183 36700185 => Ok(CamImgFormat::BGR10),
184 36700186 => Ok(CamImgFormat::RGB12),
185 36700187 => Ok(CamImgFormat::BGR12),
186 36700211 => Ok(CamImgFormat::RGB16),
187 36700235 => Ok(CamImgFormat::BGR16),
188 37748836 => Ok(CamImgFormat::RGBA16),
189 37748817 => Ok(CamImgFormat::BGRA16),
190 35651612 => Ok(CamImgFormat::RGB10V1_PACKED),
191 35651613 => Ok(CamImgFormat::RGB10P32),
192 35913780 => Ok(CamImgFormat::RGB12V1_PACKED),
193 34603061 => Ok(CamImgFormat::RGB565P),
194 34603062 => Ok(CamImgFormat::BGR565P),
195 34340894 => Ok(CamImgFormat::YUV411_8_UYYVYY),
196 34603039 => Ok(CamImgFormat::YUV422_8_UYVY),
197 34603058 => Ok(CamImgFormat::YUV422_8),
198 35127328 => Ok(CamImgFormat::YUV8_UYV),
199 35127354 => Ok(CamImgFormat::YCBCR8_CBYCR),
200 34603067 => Ok(CamImgFormat::YCBCR422_8),
201 34603075 => Ok(CamImgFormat::YCBCR422_8_CBYCRY),
202 34340924 => Ok(CamImgFormat::YCBCR411_8_CBYYCRYY),
203 35127357 => Ok(CamImgFormat::YCBCR601_8_CBYCR),
204 34603070 => Ok(CamImgFormat::YCBCR601_422_8),
205 34603076 => Ok(CamImgFormat::YCBCR601_422_8_CBYCRY),
206 34340927 => Ok(CamImgFormat::YCBCR601_411_8_CBYYCRYY),
207 35127360 => Ok(CamImgFormat::YCBCR709_8_CBYCR),
208 34603073 => Ok(CamImgFormat::YCBCR709_422_8),
209 34603077 => Ok(CamImgFormat::YCBCR709_422_8_CBYCRY),
210 34340930 => Ok(CamImgFormat::YCBCR709_411_8_CBYYCRYY),
211 35127329 => Ok(CamImgFormat::RGB8_PLANAR),
212 36700194 => Ok(CamImgFormat::RGB10_PLANAR),
213 36700195 => Ok(CamImgFormat::RGB12_PLANAR),
214 36700196 => Ok(CamImgFormat::RGB16_PLANAR),
215 17563744 => Ok(CamImgFormat::BAYGR12_PACKED_MV),
216 17563745 => Ok(CamImgFormat::BAYRG12_PACKED_MV),
217 17563746 => Ok(CamImgFormat::BAYGB12_PACKED_MV),
218 17563747 => Ok(CamImgFormat::BAYBG12_PACKED_MV),
219 17563748 => Ok(CamImgFormat::MONO12_PACKED_MV),
220 34340965 => Ok(CamImgFormat::YUV420P_MV),
221 _ => Err(CamFail::PARAMETER_INVALID),
222 }
223 }
224}
225
226#[derive(Debug)]
233pub enum TriggerMode {
234 Acquisition = 0,
235 SoftWareTrigger = 1,
236 HardWareTrigger = 2,
237}
238
239impl TriggerMode {
240 pub fn from_raw(mode: i32) -> CamRes<TriggerMode> {
241 match mode {
242 0 => Ok(TriggerMode::Acquisition),
243 1 => Ok(TriggerMode::SoftWareTrigger),
244 2 => Ok(TriggerMode::HardWareTrigger),
245 _ => Err(CamFail::PARAMETER_INVALID),
246 }
247 }
248}
249
250#[derive(Debug)]
251pub enum LutMode {
252 PARAM_GEN = 0,
253 PRESET = 1,
254 USER_DEF = 2,
255}
256
257impl LutMode {
258 pub fn from_raw(mode: i32) -> CamRes<LutMode> {
259 match mode {
260 0 => Ok(LutMode::PARAM_GEN),
261 1 => Ok(LutMode::PRESET),
262 2 => Ok(LutMode::USER_DEF),
263 _ => Err(CamFail::PARAMETER_INVALID),
264 }
265 }
266}
267
268pub type RAW_CALLBACK = unsafe extern "C" fn(
269 hCamera: CameraHandle,
270 pFrameBuffer: *mut BYTE,
271 pFrameHead: *mut tSdkFrameHead,
272 pContext: PVOID,
273);