12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- #include <stdint.h>
- #include <linux/v4l2-subdev.h>
- #include <strings.h>
- #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;
- }
|