mvsdk/camera/
constants.rs

1use super::c_bindings::{tSdkFrameHead, CameraHandle, BYTE, PVOID};
2use super::{status::CamFail, CamRes};
3
4/// Pass instance of this enum to Camera::set_img_format to change image format
5/// # Example
6/// ```
7/// let mut camera = Camera::new().unwrap();
8/// camera.set_img_format(CamImgFormat::MONO16).unwrap(); // grayscale, 16bit image
9/// ```
10#[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/// Pass instance of this enum to Camera::set_trigger_mode to choose trigger mode
227/// # Example
228/// ```
229/// let mut camera = Camera::new().unwrap();
230/// camera.set_trigger_mode(TriggerMode::SoftWareTrigger).unwrap();
231/// ```
232#[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);