1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
use super::*;
#[derive(Copy, Clone, Debug)]
pub struct Dimension {
pub width: i32,
pub height: i32,
}
#[derive(Copy, Clone, Debug)]
pub struct Range<T> {
pub min: T,
pub max: T,
}
impl k4a_color_resolution_t {
pub fn get_dimension(&self) -> Dimension {
match self {
k4a_color_resolution_t::K4A_COLOR_RESOLUTION_720P => Dimension {
width: 1280,
height: 720,
},
k4a_color_resolution_t::K4A_COLOR_RESOLUTION_1080P => Dimension {
width: 1920,
height: 1080,
},
k4a_color_resolution_t::K4A_COLOR_RESOLUTION_1440P => Dimension {
width: 2560,
height: 1440,
},
k4a_color_resolution_t::K4A_COLOR_RESOLUTION_1536P => Dimension {
width: 2048,
height: 1536,
},
k4a_color_resolution_t::K4A_COLOR_RESOLUTION_2160P => Dimension {
width: 3840,
height: 2160,
},
k4a_color_resolution_t::K4A_COLOR_RESOLUTION_3072P => Dimension {
width: 4096,
height: 3072,
},
_ => Dimension {
width: 0,
height: 0,
},
}
}
}
impl k4a_depth_mode_t {
pub fn get_dimension(&self) -> Dimension {
match self {
k4a_depth_mode_t::K4A_DEPTH_MODE_NFOV_2X2BINNED => Dimension {
width: 320,
height: 288,
},
k4a_depth_mode_t::K4A_DEPTH_MODE_NFOV_UNBINNED => Dimension {
width: 640,
height: 576,
},
k4a_depth_mode_t::K4A_DEPTH_MODE_WFOV_2X2BINNED => Dimension {
width: 512,
height: 512,
},
k4a_depth_mode_t::K4A_DEPTH_MODE_WFOV_UNBINNED => Dimension {
width: 1024,
height: 1024,
},
k4a_depth_mode_t::K4A_DEPTH_MODE_PASSIVE_IR => Dimension {
width: 1024,
height: 1024,
},
_ => Dimension {
width: 0,
height: 0,
},
}
}
pub fn get_range(&self) -> Range<u16> {
match self {
k4a_depth_mode_t::K4A_DEPTH_MODE_NFOV_2X2BINNED => Range::<u16> {
min: 500,
max: 5800,
},
k4a_depth_mode_t::K4A_DEPTH_MODE_NFOV_UNBINNED => Range::<u16> {
min: 500,
max: 4000,
},
k4a_depth_mode_t::K4A_DEPTH_MODE_WFOV_2X2BINNED => Range::<u16> {
min: 250,
max: 3000,
},
k4a_depth_mode_t::K4A_DEPTH_MODE_WFOV_UNBINNED => Range::<u16> {
min: 250,
max: 2500,
},
_ => Range::<u16> { min: 0, max: 0 },
}
}
pub fn get_ir_level(&self) -> Range<u16> {
match self {
k4a_depth_mode_t::K4A_DEPTH_MODE_PASSIVE_IR => Range::<u16> {
min: 250,
max: 3000,
},
k4a_depth_mode_t::K4A_DEPTH_MODE_OFF => Range::<u16> { min: 0, max: 0 },
_ => Range::<u16> { min: 0, max: 1000 },
}
}
}