aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRicardo Ribalda Delgado <ricardo@ribalda.com>2019-02-05 17:06:44 (GMT)
committerHans Verkuil <hverkuil-cisco@xs4all.nl>2019-02-15 08:23:16 (GMT)
commitbb65901ea23701ef08344f3d357030b9d97d93a9 (patch)
tree808da900fde761f26acbb218bda7b9f3f8f41609
parent59f9840781aab464c1331dcdb82e63dd0544b5c6 (diff)
libv4lconvert: Fix support for compressed bayer formats
10 bit packet Bayer format broke the support for the other compressed bayer formats. Due to the fallthrough of the compressed formats, 10b code will be executed for every 10b format. Fixes: c44b30096589 ("libv4l: Add support for BAYER10P format conversion") Signed-off-by: Ricardo Ribalda Delgado <ricardo@ribalda.com> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> [hverkuil-cisco@xs4all.nl: tidy up the code a little bit]
-rw-r--r--lib/libv4lconvert/libv4lconvert.c26
1 files changed, 18 insertions, 8 deletions
diff --git a/lib/libv4lconvert/libv4lconvert.c b/lib/libv4lconvert/libv4lconvert.c
index b3dbf5a..6a4c66a 100644
--- a/lib/libv4lconvert/libv4lconvert.c
+++ b/lib/libv4lconvert/libv4lconvert.c
@@ -990,12 +990,9 @@ static int v4lconvert_convert_pixfmt(struct v4lconvert_data *data,
case V4L2_PIX_FMT_SBGGR10P:
case V4L2_PIX_FMT_SGBRG10P:
case V4L2_PIX_FMT_SGRBG10P:
- case V4L2_PIX_FMT_SRGGB10P:
- if (src_size < ((width * height * 10)/8)) {
- V4LCONVERT_ERR("short raw bayer10 data frame\n");
- errno = EPIPE;
- result = -1;
- }
+ case V4L2_PIX_FMT_SRGGB10P: {
+ int b10format = 1;
+
switch (src_pix_fmt) {
case V4L2_PIX_FMT_SBGGR10P:
src_pix_fmt = V4L2_PIX_FMT_SBGGR8;
@@ -1009,10 +1006,23 @@ static int v4lconvert_convert_pixfmt(struct v4lconvert_data *data,
case V4L2_PIX_FMT_SRGGB10P:
src_pix_fmt = V4L2_PIX_FMT_SRGGB8;
break;
+ default:
+ b10format = 0;
+ break;
}
- v4lconvert_bayer10p_to_bayer8(src, src, width, height);
- bytesperline = width;
+ if (b10format) {
+ if (src_size < ((width * height * 10)/8)) {
+ V4LCONVERT_ERR
+ ("short raw bayer10 data frame\n");
+ errno = EPIPE;
+ result = -1;
+ break;
+ }
+ v4lconvert_bayer10p_to_bayer8(src, src, width, height);
+ bytesperline = width;
+ }
+ }
/* Fall-through*/
case V4L2_PIX_FMT_SBGGR8:
case V4L2_PIX_FMT_SGBRG8:

Privacy Policy