|
@@ -10,6 +10,7 @@ struct libmegapixels_modename {
|
|
uint32_t media_bus_format;
|
|
uint32_t media_bus_format;
|
|
};
|
|
};
|
|
|
|
|
|
|
|
+// TODO: The 16 bit formats are imported from millipixels and seem broken
|
|
static struct libmegapixels_modename mode_lut[] = {
|
|
static struct libmegapixels_modename mode_lut[] = {
|
|
{
|
|
{
|
|
.name = "unsupported",
|
|
.name = "unsupported",
|
|
@@ -56,6 +57,46 @@ static struct libmegapixels_modename mode_lut[] = {
|
|
.v4l_pixel_format = V4L2_PIX_FMT_SRGGB10P,
|
|
.v4l_pixel_format = V4L2_PIX_FMT_SRGGB10P,
|
|
.media_bus_format = MEDIA_BUS_FMT_SRGGB10_1X10,
|
|
.media_bus_format = MEDIA_BUS_FMT_SRGGB10_1X10,
|
|
},
|
|
},
|
|
|
|
+ {
|
|
|
|
+ .name = "BGGR10",
|
|
|
|
+ .v4l_pixel_format = V4L2_PIX_FMT_SBGGR10,
|
|
|
|
+ .media_bus_format = MEDIA_BUS_FMT_SBGGR10_1X10,
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ .name = "GBRG10",
|
|
|
|
+ .v4l_pixel_format = V4L2_PIX_FMT_SGBRG10,
|
|
|
|
+ .media_bus_format = MEDIA_BUS_FMT_SGBRG10_1X10,
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ .name = "GRBG10",
|
|
|
|
+ .v4l_pixel_format = V4L2_PIX_FMT_SGRBG10,
|
|
|
|
+ .media_bus_format = MEDIA_BUS_FMT_SGRBG10_1X10,
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ .name = "RGGB10",
|
|
|
|
+ .v4l_pixel_format = V4L2_PIX_FMT_SRGGB10,
|
|
|
|
+ .media_bus_format = MEDIA_BUS_FMT_SRGGB10_1X10,
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ .name = "BGGR16",
|
|
|
|
+ .v4l_pixel_format = V4L2_PIX_FMT_SBGGR16,
|
|
|
|
+ .media_bus_format = MEDIA_BUS_FMT_SBGGR10_1X10,
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ .name = "GBRG16",
|
|
|
|
+ .v4l_pixel_format = V4L2_PIX_FMT_SGBRG16,
|
|
|
|
+ .media_bus_format = MEDIA_BUS_FMT_SGBRG10_1X10,
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ .name = "GRBG16",
|
|
|
|
+ .v4l_pixel_format = V4L2_PIX_FMT_SGRBG16,
|
|
|
|
+ .media_bus_format =MEDIA_BUS_FMT_SGRBG10_1X10 ,
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ .name = "RGGB16",
|
|
|
|
+ .v4l_pixel_format = V4L2_PIX_FMT_SRGGB16,
|
|
|
|
+ .media_bus_format = MEDIA_BUS_FMT_SRGGB10_1X10,
|
|
|
|
+ },
|
|
{
|
|
{
|
|
.name = "UYVY",
|
|
.name = "UYVY",
|
|
.v4l_pixel_format = V4L2_PIX_FMT_UYVY,
|
|
.v4l_pixel_format = V4L2_PIX_FMT_UYVY,
|
|
@@ -71,7 +112,8 @@ static struct libmegapixels_modename mode_lut[] = {
|
|
uint32_t
|
|
uint32_t
|
|
format_name_to_v4l_pixfmt(const char *name)
|
|
format_name_to_v4l_pixfmt(const char *name)
|
|
{
|
|
{
|
|
- for (int i = 0; i < sizeof(mode_lut); i++) {
|
|
|
|
|
|
+ int count = sizeof(mode_lut) / sizeof(mode_lut[0]);
|
|
|
|
+ for (int i = 0; i < count; i++) {
|
|
if (strcasecmp(mode_lut[i].name, name) == 0) {
|
|
if (strcasecmp(mode_lut[i].name, name) == 0) {
|
|
return mode_lut[i].v4l_pixel_format;
|
|
return mode_lut[i].v4l_pixel_format;
|
|
}
|
|
}
|
|
@@ -82,7 +124,8 @@ format_name_to_v4l_pixfmt(const char *name)
|
|
uint32_t
|
|
uint32_t
|
|
format_name_to_media_busfmt(const char *name)
|
|
format_name_to_media_busfmt(const char *name)
|
|
{
|
|
{
|
|
- for (int i = 0; i < sizeof(mode_lut); i++) {
|
|
|
|
|
|
+ int count = sizeof(mode_lut) / sizeof(mode_lut[0]);
|
|
|
|
+ for (int i = 0; i < count; i++) {
|
|
if (strcasecmp(mode_lut[i].name, name) == 0) {
|
|
if (strcasecmp(mode_lut[i].name, name) == 0) {
|
|
return mode_lut[i].media_bus_format;
|
|
return mode_lut[i].media_bus_format;
|
|
}
|
|
}
|