Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 219225
b: refs/heads/master
c: a95bd64
h: refs/heads/master
i:
  219223: 30f9a9d
v: v3
  • Loading branch information
Jean-François Moine authored and Mauro Carvalho Chehab committed Oct 21, 2010
1 parent ea13422 commit 3339332
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 25 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: a067db847335207bd059f5b93bcbbb04910d8a69
refs/heads/master: a95bd640e7e5642eca52b946f7a27481980154ac
62 changes: 38 additions & 24 deletions trunk/drivers/media/video/gspca/sonixj.c
Original file line number Diff line number Diff line change
Expand Up @@ -2820,38 +2820,52 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev,
struct sd *sd = (struct sd *) gspca_dev;
int sof, avg_lum;

sof = len - 64;
if (sof >= 0 && data[sof] == 0xff && data[sof + 1] == 0xd9) {

/* end of frame */
gspca_frame_add(gspca_dev, LAST_PACKET,
data, sof + 2);
if (sd->ag_cnt < 0)
return;
/* the image ends on a 64 bytes block starting with
* ff d9 ff ff 00 c4 c4 96
* and followed by various information including luminosity */
/* this block may be splitted between two packets */
/* a new image always starts in a new packet */
switch (gspca_dev->last_packet_type) {
case DISCARD_PACKET: /* restart image building */
sof = len - 64;
if (sof >= 0 && data[sof] == 0xff && data[sof + 1] == 0xd9)
gspca_frame_add(gspca_dev, LAST_PACKET, NULL, 0);
return;
case LAST_PACKET: /* put the JPEG 422 header */
gspca_frame_add(gspca_dev, FIRST_PACKET,
sd->jpeg_hdr, JPEG_HDR_SZ);
break;
}
gspca_frame_add(gspca_dev, INTER_PACKET, data, len);

data = gspca_dev->image;
if (data == NULL)
return;
sof = gspca_dev->image_len - 64;
if (data[sof] != 0xff
|| data[sof + 1] != 0xd9)
return;

/* end of image found - remove the trailing data */
gspca_dev->image_len = sof + 2;
gspca_frame_add(gspca_dev, LAST_PACKET, NULL, 0);
if (sd->ag_cnt < 0)
return;
/* w1 w2 w3 */
/* w4 w5 w6 */
/* w7 w8 */
/* w4 */
avg_lum = ((data[sof + 29] << 8) | data[sof + 30]) >> 6;
avg_lum = ((data[sof + 29] << 8) | data[sof + 30]) >> 6;
/* w6 */
avg_lum += ((data[sof + 33] << 8) | data[sof + 34]) >> 6;
avg_lum += ((data[sof + 33] << 8) | data[sof + 34]) >> 6;
/* w2 */
avg_lum += ((data[sof + 25] << 8) | data[sof + 26]) >> 6;
avg_lum += ((data[sof + 25] << 8) | data[sof + 26]) >> 6;
/* w8 */
avg_lum += ((data[sof + 37] << 8) | data[sof + 38]) >> 6;
avg_lum += ((data[sof + 37] << 8) | data[sof + 38]) >> 6;
/* w5 */
avg_lum += ((data[sof + 31] << 8) | data[sof + 32]) >> 4;
avg_lum >>= 4;
atomic_set(&sd->avg_lum, avg_lum);
return;
}
if (gspca_dev->last_packet_type == LAST_PACKET) {

/* put the JPEG 422 header */
gspca_frame_add(gspca_dev, FIRST_PACKET,
sd->jpeg_hdr, JPEG_HDR_SZ);
}
gspca_frame_add(gspca_dev, INTER_PACKET, data, len);
avg_lum += ((data[sof + 31] << 8) | data[sof + 32]) >> 4;
avg_lum >>= 4;
atomic_set(&sd->avg_lum, avg_lum);
}

static int sd_setbrightness(struct gspca_dev *gspca_dev, __s32 val)
Expand Down

0 comments on commit 3339332

Please sign in to comment.