Commit c36260ee authored by Hans de Goede's avatar Hans de Goede Committed by Mauro Carvalho Chehab

V4L/DVB (8362): gspca: Bad offset of the brightness sum in sn9c103 packets.

Signed-off-by: default avatarJean-Francois Moine <moinejf@free.fr>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@infradead.org>
parent b7474cf9
...@@ -1033,6 +1033,15 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev, ...@@ -1033,6 +1033,15 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev,
int i; int i;
struct sd *sd = (struct sd *) gspca_dev; struct sd *sd = (struct sd *) gspca_dev;
/* frames start with:
* ff ff 00 c4 c4 96 synchro
* 00 (unknown)
* xx (frame sequence / size / compression)
* (xx) (idem - extra byte for sn9c103)
* ll mm brightness sum inside auto exposure
* ll mm brightness sum outside auto exposure
* (xx xx xx xx xx) audio values for snc103
*/
if (len > 6 && len < 24) { if (len > 6 && len < 24) {
for (i = 0; i < len - 6; i++) { for (i = 0; i < len - 6; i++) {
if (data[0 + i] == 0xff if (data[0 + i] == 0xff
...@@ -1043,15 +1052,18 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev, ...@@ -1043,15 +1052,18 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev,
&& data[5 + i] == 0x96) { /* start of frame */ && data[5 + i] == 0x96) { /* start of frame */
frame = gspca_frame_add(gspca_dev, LAST_PACKET, frame = gspca_frame_add(gspca_dev, LAST_PACKET,
frame, data, 0); frame, data, 0);
if (i < (len - 10)) { if (len - i < sd->fr_h_sz) {
atomic_set(&sd->avg_lum, data[i + 8] + atomic_set(&sd->avg_lum, -1);
PDEBUG(D_STREAM, "packet too short to"
" get avg brightness");
} else if (sd->fr_h_sz == 12) {
atomic_set(&sd->avg_lum,
data[i + 8] +
(data[i + 9] << 8)); (data[i + 9] << 8));
} else { } else {
atomic_set(&sd->avg_lum, -1); atomic_set(&sd->avg_lum,
#ifdef CONFIG_VIDEO_ADV_DEBUG data[i + 9] +
PDEBUG(D_STREAM, "packet too short to " (data[i + 10] << 8));
"get avg brightness");
#endif
} }
data += i + sd->fr_h_sz; data += i + sd->fr_h_sz;
len -= i + sd->fr_h_sz; len -= i + sd->fr_h_sz;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment