From 3bc447c772b763dc7856c1b991d279c6d82d5e2d Mon Sep 17 00:00:00 2001 From: Kamil Trzcinski Date: Wed, 22 Feb 2023 11:41:34 +0100 Subject: [PATCH] camera: add support for `V4L2_PIX_FMT_SBGGR10P` --- cmd/camera-streamer/opts.c | 1 + device/camera/camera_output.c | 1 + device/camera/camera_pipeline.c | 1 + util/opts/fourcc.c | 16 ++++++++++++++++ util/opts/fourcc.h | 5 +++++ 5 files changed, 24 insertions(+) diff --git a/cmd/camera-streamer/opts.c b/cmd/camera-streamer/opts.c index e969870..6d5984b 100644 --- a/cmd/camera-streamer/opts.c +++ b/cmd/camera-streamer/opts.c @@ -65,6 +65,7 @@ option_value_t camera_formats[] = { { "RG10", V4L2_PIX_FMT_SRGGB10 }, { "GB10P", V4L2_PIX_FMT_SGRBG10P }, { "RG10P", V4L2_PIX_FMT_SRGGB10P }, + { "BG10P", V4L2_PIX_FMT_SBGGR10P }, { "RGB565", V4L2_PIX_FMT_RGB565 }, { "RGBP", V4L2_PIX_FMT_RGB565 }, { "RGB24", V4L2_PIX_FMT_RGB24 }, diff --git a/device/camera/camera_output.c b/device/camera/camera_output.c index a26fefc..17495a0 100644 --- a/device/camera/camera_output.c +++ b/device/camera/camera_output.c @@ -90,6 +90,7 @@ int camera_configure_output(camera_t *camera, const char *name, unsigned target_ } if (!src_capture) { + LOG_INFO(camera, "Cannot find source for '%s' for one of the formats '%s'.", name, many_fourcc_to_string(formats).buf); return -1; } diff --git a/device/camera/camera_pipeline.c b/device/camera/camera_pipeline.c index f615311..9642bd3 100644 --- a/device/camera/camera_pipeline.c +++ b/device/camera/camera_pipeline.c @@ -54,6 +54,7 @@ int camera_configure_pipeline(camera_t *camera, buffer_list_t *capture) switch (capture->fmt.format) { case V4L2_PIX_FMT_SRGGB10P: case V4L2_PIX_FMT_SGRBG10P: + case V4L2_PIX_FMT_SBGGR10P: case V4L2_PIX_FMT_SRGGB10: case V4L2_PIX_FMT_SGRBG10: camera_configure_isp(camera, capture); diff --git a/util/opts/fourcc.c b/util/opts/fourcc.c index b92ba5b..0ba9a53 100644 --- a/util/opts/fourcc.c +++ b/util/opts/fourcc.c @@ -1,5 +1,7 @@ #include "fourcc.h" +#include + fourcc_string fourcc_to_string(unsigned format) { fourcc_string fourcc; @@ -19,3 +21,17 @@ fourcc_string fourcc_to_string(unsigned format) *ptr++ = 0; return fourcc; } + +many_fourcc_string many_fourcc_to_string(unsigned formats[]) +{ + many_fourcc_string fourcc = {0}; + + for (int i = 0; formats[i]; i++) { + if (fourcc.buf[0]) { + strcat(fourcc.buf, ", "); + } + strcat(fourcc.buf, fourcc_to_string(formats[i]).buf); + } + + return fourcc; +} diff --git a/util/opts/fourcc.h b/util/opts/fourcc.h index b46e34d..186389b 100644 --- a/util/opts/fourcc.h +++ b/util/opts/fourcc.h @@ -7,4 +7,9 @@ typedef struct { char buf[10]; } fourcc_string; +typedef struct { + char buf[250]; +} many_fourcc_string; + fourcc_string fourcc_to_string(unsigned format); +many_fourcc_string many_fourcc_to_string(unsigned formats[]);