diff options
author | Jean-Francois Moine <moinejf@free.fr> | 2009-03-03 03:33:41 -0500 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2009-03-30 11:43:22 -0400 |
commit | 71cb2764fcc51bd9e1b95be5b0f2da6f026634c7 (patch) | |
tree | cad0450231d5b4e7db071396ea5a33dabd3e314e /drivers/media/video/gspca/mars.c | |
parent | c98afbfc20355dd04a7b817b232e06a4c3e73bac (diff) |
V4L/DVB (11039): gspca - most jpeg subdrivers: Change the JPEG header creation.
Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/video/gspca/mars.c')
-rw-r--r-- | drivers/media/video/gspca/mars.c | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/drivers/media/video/gspca/mars.c b/drivers/media/video/gspca/mars.c index ce065d363e8..6eb813e7b71 100644 --- a/drivers/media/video/gspca/mars.c +++ b/drivers/media/video/gspca/mars.c | |||
@@ -22,7 +22,6 @@ | |||
22 | #define MODULE_NAME "mars" | 22 | #define MODULE_NAME "mars" |
23 | 23 | ||
24 | #include "gspca.h" | 24 | #include "gspca.h" |
25 | #define QUANT_VAL 1 /* quantization table */ | ||
26 | #include "jpeg.h" | 25 | #include "jpeg.h" |
27 | 26 | ||
28 | MODULE_AUTHOR("Michel Xhaard <mxhaard@users.sourceforge.net>"); | 27 | MODULE_AUTHOR("Michel Xhaard <mxhaard@users.sourceforge.net>"); |
@@ -37,6 +36,9 @@ struct sd { | |||
37 | u8 colors; | 36 | u8 colors; |
38 | u8 gamma; | 37 | u8 gamma; |
39 | u8 sharpness; | 38 | u8 sharpness; |
39 | u8 quality; | ||
40 | |||
41 | u8 *jpeg_hdr; | ||
40 | }; | 42 | }; |
41 | 43 | ||
42 | /* V4L2 controls supported by the driver */ | 44 | /* V4L2 controls supported by the driver */ |
@@ -176,6 +178,7 @@ static int sd_config(struct gspca_dev *gspca_dev, | |||
176 | sd->colors = COLOR_DEF; | 178 | sd->colors = COLOR_DEF; |
177 | sd->gamma = GAMMA_DEF; | 179 | sd->gamma = GAMMA_DEF; |
178 | sd->sharpness = SHARPNESS_DEF; | 180 | sd->sharpness = SHARPNESS_DEF; |
181 | sd->quality = 50; | ||
179 | gspca_dev->nbalt = 9; /* use the altsetting 08 */ | 182 | gspca_dev->nbalt = 9; /* use the altsetting 08 */ |
180 | return 0; | 183 | return 0; |
181 | } | 184 | } |
@@ -193,6 +196,12 @@ static int sd_start(struct gspca_dev *gspca_dev) | |||
193 | u8 *data; | 196 | u8 *data; |
194 | int i; | 197 | int i; |
195 | 198 | ||
199 | /* create the JPEG header */ | ||
200 | sd->jpeg_hdr = kmalloc(JPEG_HDR_SZ, GFP_KERNEL); | ||
201 | jpeg_define(sd->jpeg_hdr, gspca_dev->height, gspca_dev->width, | ||
202 | 0x21); /* JPEG 422 */ | ||
203 | jpeg_set_qual(sd->jpeg_hdr, sd->quality); | ||
204 | |||
196 | data = gspca_dev->usb_buf; | 205 | data = gspca_dev->usb_buf; |
197 | 206 | ||
198 | data[0] = 0x01; /* address */ | 207 | data[0] = 0x01; /* address */ |
@@ -303,11 +312,19 @@ static void sd_stopN(struct gspca_dev *gspca_dev) | |||
303 | PDEBUG(D_ERR, "Camera Stop failed"); | 312 | PDEBUG(D_ERR, "Camera Stop failed"); |
304 | } | 313 | } |
305 | 314 | ||
315 | static void sd_stop0(struct gspca_dev *gspca_dev) | ||
316 | { | ||
317 | struct sd *sd = (struct sd *) gspca_dev; | ||
318 | |||
319 | kfree(sd->jpeg_hdr); | ||
320 | } | ||
321 | |||
306 | static void sd_pkt_scan(struct gspca_dev *gspca_dev, | 322 | static void sd_pkt_scan(struct gspca_dev *gspca_dev, |
307 | struct gspca_frame *frame, /* target */ | 323 | struct gspca_frame *frame, /* target */ |
308 | __u8 *data, /* isoc packet */ | 324 | __u8 *data, /* isoc packet */ |
309 | int len) /* iso packet length */ | 325 | int len) /* iso packet length */ |
310 | { | 326 | { |
327 | struct sd *sd = (struct sd *) gspca_dev; | ||
311 | int p; | 328 | int p; |
312 | 329 | ||
313 | if (len < 6) { | 330 | if (len < 6) { |
@@ -330,7 +347,8 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev, | |||
330 | frame, data, p); | 347 | frame, data, p); |
331 | 348 | ||
332 | /* put the JPEG header */ | 349 | /* put the JPEG header */ |
333 | jpeg_put_header(gspca_dev, frame, 0x21); | 350 | gspca_frame_add(gspca_dev, FIRST_PACKET, frame, |
351 | sd->jpeg_hdr, JPEG_HDR_SZ); | ||
334 | data += p + 16; | 352 | data += p + 16; |
335 | len -= p + 16; | 353 | len -= p + 16; |
336 | break; | 354 | break; |
@@ -436,6 +454,7 @@ static const struct sd_desc sd_desc = { | |||
436 | .init = sd_init, | 454 | .init = sd_init, |
437 | .start = sd_start, | 455 | .start = sd_start, |
438 | .stopN = sd_stopN, | 456 | .stopN = sd_stopN, |
457 | .stop0 = sd_stop0, | ||
439 | .pkt_scan = sd_pkt_scan, | 458 | .pkt_scan = sd_pkt_scan, |
440 | }; | 459 | }; |
441 | 460 | ||