Pick preview mode closest to screen size

This commit is contained in:
Martijn Braam
2023-07-20 16:50:16 +02:00
parent d51a2fb263
commit b86c816c34

View File

@@ -18,7 +18,6 @@ mp_state_io state_io;
MPCamera *mpcamera = NULL; MPCamera *mpcamera = NULL;
static MPPipeline *pipeline; static MPPipeline *pipeline;
static GSource *capture_source; static GSource *capture_source;
@@ -403,11 +402,23 @@ update_state(MPPipeline *pipeline, const struct mp_io_pipeline_state *state)
mpcamera = mp_camera_new(state_io.camera); mpcamera = mp_camera_new(state_io.camera);
state_io.mode_preview = NULL; state_io.mode_preview = NULL;
state_io.mode_capture = NULL; state_io.mode_capture = NULL;
float score = 0;
int area_preview =
state_io.preview_width * state_io.preview_height;
for (int m = 0; m < state_io.camera->num_modes; m++) { for (int m = 0; m < state_io.camera->num_modes; m++) {
float mscore = 0;
if (state_io.camera->modes[m]->rate > 29) { if (state_io.camera->modes[m]->rate > 29) {
mscore += 1;
}
int mode_area = state_io.camera->modes[m]->width *
state_io.camera->modes[m]->height;
mscore += 1.0f -
(float)(ABS(mode_area - area_preview) /
area_preview);
if (mscore > score) {
state_io.mode_preview = state_io.mode_preview =
state_io.camera->modes[m]; state_io.camera->modes[m];
break; score = mscore;
} }
} }
long area = 0; long area = 0;