Pick preview mode closest to screen size
This commit is contained in:
@@ -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;
|
||||||
|
Reference in New Issue
Block a user