summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2012-02-22 23:57:55 +0100
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2012-05-01 12:13:56 +0200
commitde8d5a0d80daba0b840a4f9714aee238966ab0a4 (patch)
tree9d3adc8fb18ec33b34965966f339649ede834766
parent0634f8bb2e63985ebf2103318105b7185294da94 (diff)
snapshot: Use AEWB algorithm
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
-rw-r--r--Makefile2
-rw-r--r--snapshot.c22
2 files changed, 23 insertions, 1 deletions
diff --git a/Makefile b/Makefile
index e4de38d..107e34d 100644
--- a/Makefile
+++ b/Makefile
@@ -7,7 +7,7 @@ LDFLAGS := -Lisp
LIBS := -lomap3isp -lrt
OBJ_LIVE := live.o events.o iq.o videoout.o
-OBJ_SNAP := snapshot.o events.o
+OBJ_SNAP := snapshot.o events.o iq.o
%.o : %.c
$(CC) $(CFLAGS) -c -o $@ $<
diff --git a/snapshot.c b/snapshot.c
index 712195a..59da5b5 100644
--- a/snapshot.c
+++ b/snapshot.c
@@ -49,6 +49,7 @@
#include "isp/v4l2-pool.h"
#include "events.h"
+#include "iq.h"
#define MEDIA_DEVICE "/dev/media0"
@@ -95,9 +96,21 @@ static struct snapshot snap = {
.skip = 2,
};
+static struct iq_tuning *iq = NULL;
+
static struct events events;
/* -----------------------------------------------------------------------------
+ * Image quality
+ */
+
+static void __iq_aewb_process(struct omap3_isp_device *isp __attribute__((__unused__)),
+ const struct omap3_isp_aewb_stats *stats)
+{
+ iq_aewb_process(iq, stats);
+}
+
+/* -----------------------------------------------------------------------------
* Events
*/
@@ -493,6 +506,7 @@ int main(int argc __attribute__((__unused__)), char *argv[] __attribute__((__unu
ops.snapshot_ready = snapshot_process;
ops.watch_fd = __events_watch_fd;
ops.unwatch_fd = __events_unwatch_fd;
+ ops.aewb_ready = __iq_aewb_process;
isp = omap3_isp_open(MEDIA_DEVICE, &ops);
if (isp == NULL) {
@@ -510,6 +524,12 @@ int main(int argc __attribute__((__unused__)), char *argv[] __attribute__((__unu
if (ret < 0)
goto cleanup;
+ iq = iq_init(isp);
+ if (iq == NULL) {
+ printf("error: unable to initialize image quality tuning\n");
+ goto cleanup;
+ }
+
/* Start the viewfinder if needed. */
if (vf.enabled) {
ret = omap3_isp_viewfinder_start(isp);
@@ -560,6 +580,8 @@ cleanup:
omap3_isp_close(isp);
if (vf.enabled)
viewfinder_cleanup(isp);
+ if (iq)
+ iq_cleanup(iq);
return exit_code;
}