Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 109515
b: refs/heads/master
c: 8559e8d
h: refs/heads/master
i:
  109513: a57fee6
  109511: a81d43a
v: v3
  • Loading branch information
Jean-Francois Moine authored and Mauro Carvalho Chehab committed Sep 3, 2008
1 parent 83306ae commit 4db0a39
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 11 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: 9d5c1251bfc10a0e864352f45e272331f65b3420
refs/heads/master: 8559e8da31f37e2916195f44bbe79a61008782df
33 changes: 23 additions & 10 deletions trunk/drivers/media/video/gspca/pac7311.c
Original file line number Diff line number Diff line change
Expand Up @@ -702,8 +702,16 @@ static void do_autogain(struct gspca_dev *gspca_dev)
static void put_jpeg_head(struct gspca_dev *gspca_dev,
struct gspca_frame *frame)
{
struct sd *sd = (struct sd *) gspca_dev;
unsigned char tmpbuf[4];

if (sd->ag_cnt >= 0) {
if (--sd->ag_cnt < 0) {
sd->ag_cnt = AG_CNT_START;
atomic_set(&sd->avg_lum, sd->lum_sum / AG_CNT_START);
atomic_set(&sd->do_gain, 1);
}
}
gspca_frame_add(gspca_dev, FIRST_PACKET, frame,
(__u8 *) pac7311_jpeg_header,
12);
Expand All @@ -727,7 +735,7 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev,
struct sd *sd = (struct sd *) gspca_dev;
int i;

#define INTER_FRAME 0x53
#define INTER_FRAME 0x53 /* eof + inter frame + sof */
#define LUM_OFFSET 0x1e /* reverse offset / start of frame */

/*
Expand All @@ -746,11 +754,18 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev,
if (sd->tosof == 0) { /* if inside a frame */

/* check for 'ff ff ff xx' at start and at end of packet */
/* (len is always >= 3) */
/* (len is always >= 3 and xx never ff) */
switch (sd->ffnb) {
case 1:
if (data[0] != 0xff)
if (data[0] != 0xff) { /* can be '00' only */
__u8 ff;

sd->ffnb = 0;
ff = 0xff;
gspca_frame_add(gspca_dev, INTER_PACKET,
frame, &ff, 1);
break; /* keep 'ff 00' */
}
/* fall thru */
case 2:
case 3:
Expand All @@ -775,27 +790,23 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev,
}
} else { /* outside a frame */

/*
* get the luminosity
* and go to the start of frame
*/
/* get the luminosity and go to the start of frame */
data += sd->tosof;
len -= sd->tosof;
if (sd->tosof > LUM_OFFSET)
sd->lum_sum += data[-LUM_OFFSET];
put_jpeg_head(gspca_dev, frame);
sd->tosof = 0;
put_jpeg_head(gspca_dev, frame);
}

for (i = 0; i < len; i++) {
if (data[i] != 0xff)
continue;
switch (data[i + 1]) {
case 0xd9: /* end of frame */
i += 2;
frame = gspca_frame_add(gspca_dev,
LAST_PACKET,
frame, data, i);
frame, data, i + 2);
data += i + INTER_FRAME;
len -= i + INTER_FRAME;
i = 0;
Expand All @@ -816,6 +827,8 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev,
break;
}
}
gspca_frame_add(gspca_dev, INTER_PACKET,
frame, data, i);
}

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

0 comments on commit 4db0a39

Please sign in to comment.