(config: &CameraConfig, w: u32, h: u32, fmt: PixelFormat)
| 123 | } |
| 124 | |
| 125 | fn calculate_score(config: &CameraConfig, w: u32, h: u32, fmt: PixelFormat) -> i32 { |
| 126 | let mut score = 0; |
| 127 | |
| 128 | // 1. 匹配分辨率 |
| 129 | for (req_w, req_h, prio) in &config.resolution_req { |
| 130 | if w == *req_w && h == *req_h { |
| 131 | score += *prio as i32 * 10; |
| 132 | } |
| 133 | } |
| 134 | |
| 135 | // 2. 匹配格式 |
| 136 | for (req_fmt, prio) in &config.format_req { |
| 137 | if fmt == *req_fmt { |
| 138 | score += *prio as i32 * 10; |
| 139 | } |
| 140 | } |
| 141 | |
| 142 | // 3. 分辨率越大基础分越高 (作为 Tie-breaker) |
| 143 | score += (w / 100) as i32; |
| 144 | |
| 145 | score |
| 146 | } |