#include #include #include #include "mode.h" struct libmegapixels_modename { char *name; uint32_t v4l_pixel_format; uint32_t media_bus_format; }; static struct libmegapixels_modename mode_lut[] = { { .name = "unsupported", .v4l_pixel_format = 0, .media_bus_format = 0, }, { .name = "BGGR8", .v4l_pixel_format = V4L2_PIX_FMT_SBGGR8, .media_bus_format = MEDIA_BUS_FMT_SBGGR8_1X8, }, { .name = "GBRG8", .v4l_pixel_format = V4L2_PIX_FMT_SGBRG8, .media_bus_format = MEDIA_BUS_FMT_SGBRG8_1X8, }, { .name = "GRBG8", .v4l_pixel_format = V4L2_PIX_FMT_SGRBG8, .media_bus_format = MEDIA_BUS_FMT_SGRBG8_1X8, }, { .name = "RGGB8", .v4l_pixel_format = V4L2_PIX_FMT_SRGGB8, .media_bus_format = MEDIA_BUS_FMT_SRGGB8_1X8, }, { .name = "BGGR10P", .v4l_pixel_format = V4L2_PIX_FMT_SBGGR10P, .media_bus_format = MEDIA_BUS_FMT_SBGGR10_1X10, }, { .name = "GBRG10P", .v4l_pixel_format = V4L2_PIX_FMT_SGBRG10P, .media_bus_format = MEDIA_BUS_FMT_SGBRG10_1X10, }, { .name = "GRBG10P", .v4l_pixel_format = V4L2_PIX_FMT_SGRBG10P, .media_bus_format = MEDIA_BUS_FMT_SGRBG10_1X10, }, { .name = "RGGB10P", .v4l_pixel_format = V4L2_PIX_FMT_SRGGB10P, .media_bus_format = MEDIA_BUS_FMT_SRGGB10_1X10, }, { .name = "UYVY", .v4l_pixel_format = V4L2_PIX_FMT_UYVY, .media_bus_format = MEDIA_BUS_FMT_UYVY8_2X8, }, { .name = "YUYV", .v4l_pixel_format = V4L2_PIX_FMT_YUYV, .media_bus_format = MEDIA_BUS_FMT_YUYV8_2X8, }, }; uint32_t format_name_to_v4l_pixfmt(const char *name) { for (int i = 0; i < sizeof(mode_lut); i++) { if (strcasecmp(mode_lut[i].name, name) == 0) { return mode_lut[i].v4l_pixel_format; } } return 0; } uint32_t format_name_to_media_busfmt(const char *name) { for (int i = 0; i < sizeof(mode_lut); i++) { if (strcasecmp(mode_lut[i].name, name) == 0) { return mode_lut[i].media_bus_format; } } return 0; }