From 9cbebee116c46904a7556583f5e5009629fd5ace Mon Sep 17 00:00:00 2001 From: Martijn Braam Date: Sun, 27 Sep 2020 17:25:31 +0200 Subject: [PATCH] Front camera metadata and auto exposure switch --- config/pine64,pinephone-1.0.ini | 3 +++ config/pine64,pinephone-1.1.ini | 3 +++ config/pine64,pinephone-1.2.ini | 3 +++ config/pine64,pinetab.ini | 3 +++ main.c | 19 ++++++++++++++----- 5 files changed, 26 insertions(+), 5 deletions(-) diff --git a/config/pine64,pinephone-1.0.ini b/config/pine64,pinephone-1.0.ini index 2b3e0b2..e2d6e57 100644 --- a/config/pine64,pinephone-1.0.ini +++ b/config/pine64,pinephone-1.0.ini @@ -25,3 +25,6 @@ height=600 rate=30 fmt=BGGR8 rotate=90 +focallength=2.6 +cropfactor=12.7 +fnumber=2.8 diff --git a/config/pine64,pinephone-1.1.ini b/config/pine64,pinephone-1.1.ini index 2b3e0b2..e2d6e57 100644 --- a/config/pine64,pinephone-1.1.ini +++ b/config/pine64,pinephone-1.1.ini @@ -25,3 +25,6 @@ height=600 rate=30 fmt=BGGR8 rotate=90 +focallength=2.6 +cropfactor=12.7 +fnumber=2.8 diff --git a/config/pine64,pinephone-1.2.ini b/config/pine64,pinephone-1.2.ini index 2b3e0b2..e2d6e57 100644 --- a/config/pine64,pinephone-1.2.ini +++ b/config/pine64,pinephone-1.2.ini @@ -25,3 +25,6 @@ height=600 rate=30 fmt=BGGR8 rotate=90 +focallength=2.6 +cropfactor=12.7 +fnumber=2.8 diff --git a/config/pine64,pinetab.ini b/config/pine64,pinetab.ini index 2b3e0b2..e2d6e57 100644 --- a/config/pine64,pinetab.ini +++ b/config/pine64,pinetab.ini @@ -25,3 +25,6 @@ height=600 rate=30 fmt=BGGR8 rotate=90 +focallength=2.6 +cropfactor=12.7 +fnumber=2.8 diff --git a/main.c b/main.c index a02d8f9..24d62d3 100644 --- a/main.c +++ b/main.c @@ -84,6 +84,8 @@ static cairo_surface_t *surface = NULL; static int preview_width = -1; static int preview_height = -1; static char *last_path = NULL; +static int auto_exposure = 1; +static int auto_gain = 1; // Widgets GtkWidget *preview; @@ -265,11 +267,18 @@ init_sensor(char *fn, int width, int height, int mbus, int rate) fmt.format.width, fmt.format.height, fmt.format.code); - // Placeholder, default is also 1 - //v4l2_ctrl_set(fd, V4L2_CID_AUTOGAIN, 0); - //v4l2_ctrl_set(fd, V4L2_CID_EXPOSURE_AUTO, V4L2_EXPOSURE_MANUAL); - //v4l2_ctrl_set(fd, V4L2_CID_EXPOSURE, height/24); - //v4l2_ctrl_set(fd, V4L2_CID_GAIN, 0); + if (auto_exposure) { + v4l2_ctrl_set(fd, V4L2_CID_EXPOSURE_AUTO, V4L2_EXPOSURE_AUTO); + } else { + v4l2_ctrl_set(fd, V4L2_CID_EXPOSURE_AUTO, V4L2_EXPOSURE_MANUAL); + v4l2_ctrl_set(fd, V4L2_CID_EXPOSURE, height/2); + } + if (auto_gain) { + v4l2_ctrl_set(fd, V4L2_CID_AUTOGAIN, 1); + } else { + v4l2_ctrl_set(fd, V4L2_CID_AUTOGAIN, 0); + v4l2_ctrl_set(fd, V4L2_CID_GAIN, 0); + } close(current.fd); current.fd = fd; }