@@ -123,6 +126,8 @@ static const struct v4lconvert_pixfmt supported_src_pixfmts[] = {
{ V4L2_PIX_FMT_SGRBG8, 8, 8, 8, 1 },
{ V4L2_PIX_FMT_SRGGB8, 8, 8, 8, 1 },
{ V4L2_PIX_FMT_STV0680, 8, 8, 8, 1 },
+
+ { V4L2_PIX_FMT_SGRBG10, 16, 8, 8, 1 },
/* compressed bayer */
{ V4L2_PIX_FMT_SPCA561, 0, 9, 9, 1 },
{ V4L2_PIX_FMT_SN9C10X, 0, 9, 9, 1 },
@@ -668,6 +680,7 @@ static int v4lconvert_processing_needs_double_conversion(
case V4L2_PIX_FMT_SGRBG8:
case V4L2_PIX_FMT_SRGGB8:
case V4L2_PIX_FMT_STV0680:
+ case V4L2_PIX_FMT_SGRBG10:
return 0;
}
switch (dest_pix_fmt) {
@@ -694,6 +707,17 @@ unsigned char *v4lconvert_alloc_buffer(int needed,
return *buf;
}
+static void v4lconvert_10to8(void *_src, unsigned char *dst, int width, int height)
+{
+ int i;
+ uint16_t *src = _src;
+
+ printf("sizes %d x %d\n", width, height);
+ for (i=0; i<width*height; i++) {
+ dst[i] = src[i] >> 2;
+ }
+}
+
int v4lconvert_oom_error(struct v4lconvert_data *data)
{
V4LCONVERT_ERR("could not allocate memory\n");
@@ -867,7 +893,8 @@ static int v4lconvert_convert_pixfmt(struct v4lconvert_data *data,
#endif
case V4L2_PIX_FMT_SN9C2028:
case V4L2_PIX_FMT_SQ905C:
- case V4L2_PIX_FMT_STV0680: { /* Not compressed but needs some shuffling */
+ case V4L2_PIX_FMT_STV0680:
+ case V4L2_PIX_FMT_SGRBG10: { /* Not compressed but needs some shuffling */
unsigned char *tmpbuf;
struct v4l2_format tmpfmt = *fmt;
@@ -877,6 +904,11 @@ static int v4lconvert_convert_pixfmt(struct v4lconvert_data *data,
return v4lconvert_oom_error(data);
switch (src_pix_fmt) {
+ case V4L2_PIX_FMT_SGRBG10:
+ v4lconvert_10to8(src, tmpbuf, width, height);
+
+ tmpfmt.fmt.pix.pixelformat = V4L2_PIX_FMT_SGRBG8;
+ break;
case V4L2_PIX_FMT_SPCA561:
v4lconvert_decode_spca561(src, tmpbuf, width, height);
tmpfmt.fmt.pix.pixelformat = V4L2_PIX_FMT_SGBRG8;
@@ -949,6 +981,7 @@ static int v4lconvert_convert_pixfmt(struct v4lconvert_data *data,
V4LCONVERT_ERR("short raw bayer data frame\n");
errno = EPIPE;
result = -1;
+ /* FIXME: but then we proceed anyway?! */
}
switch (dest_pix_fmt) {
case V4L2_PIX_FMT_RGB24: