#define JPEG_HEADER_SIZE 338\r
#define JPEG_HEIGHT_OFFSET 94\r
\r
-static int\r
-find_eoi(const unsigned char *jpeg_data, int jpeg_data_idx, int jpeg_data_size)\r
+static int find_eoi(struct v4lconvert_data *data,\r
+ const unsigned char *jpeg_data, int jpeg_data_idx, int jpeg_data_size)\r
{\r
int i;\r
\r
break;\r
\r
if (i >= (jpeg_data_size - 1)) {\r
- printf("AAI\n");\r
+ V4LCONVERT_ERR("incomplete jl2005bcd frame\n");
return -1;\r
}\r
\r
q = src[13] & 0x7f;\r
\r
if (height != src[4] << 3) {\r
- printf("Height is %d, not %d\n", src[4] << 3, height);\r
+ V4LCONVERT_ERR("Height is %d, not %d\n", src[4] << 3, height);\r
return 1;\r
}\r
\r
if (width != src[5] << 3) {\r
- printf("Width is %d, not %d\n", src[5] << 3, width);\r
+ V4LCONVERT_ERR("Width is %d, not %d\n", src[5] << 3, width);\r
return 1;\r
}\r
- printf("quality is %d\n", q);\r
- printf("size: %dx%d\n", width, height);\r
+\r
/*\r
* And the fun begins, first of all create a dummy jpeg, which we use\r
* to get the headers from to feed to libjpeg when decompressing the\r
dinfo.err = jpeg_std_error (&jderr);\r
jpeg_create_decompress (&dinfo);\r
for (x = 0; x < width; x += 16) {\r
- eoi = find_eoi(src, jpeg_data_idx, jpeg_data_size);\r
+ eoi = find_eoi(data, src, jpeg_data_idx, jpeg_data_size);\r
if (eoi < 0)\r
return eoi;\r
\r
size = eoi - jpeg_data_idx;\r
if ((JPEG_HEADER_SIZE + size) > sizeof(jpeg_stripe)) {\r
- printf("AAAIIIIII\n");\r
+ V4LCONVERT_ERR("stripe size too big %d > %ld\n",\r
+ JPEG_HEADER_SIZE + size,\r
+ sizeof(jpeg_stripe));\r
return 1;\r
}\r
memcpy (jpeg_stripe + JPEG_HEADER_SIZE, \r
tmpfmt.fmt.pix.pixelformat = V4L2_PIX_FMT_SBGGR8;
break;
case V4L2_PIX_FMT_JL2005BCD:
- v4lconvert_decode_jl2005bcd(data, src, src_size,
- tmpbuf, width, height);
+ if (v4lconvert_decode_jl2005bcd(data, src, src_size,
+ tmpbuf,
+ width, height)) {
+ /* Corrupt frame, better get another one */
+ errno = EAGAIN;
+ return -1;
+ }
tmpfmt.fmt.pix.pixelformat = V4L2_PIX_FMT_SRGGB8;
break;
case V4L2_PIX_FMT_SN9C2028: