Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1f42df0d authored by Jean-François Moine's avatar Jean-François Moine Committed by Mauro Carvalho Chehab
Browse files

[media] gspca - sn9c20x: Fix loss of frame start



The frame header was checked on packets of size 64 bytes only, while the webcams
may put a frame header at the beginning of bigger packets.

Signed-off-by: default avatarJean-François Moine <moinejf@free.fr>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent a2816eda
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -2457,7 +2457,7 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev,
	int avg_lum;
	static u8 frame_header[] =
		{0xff, 0xff, 0x00, 0xc4, 0xc4, 0x96};
	if (len == 64 && memcmp(data, frame_header, 6) == 0) {
	if (len >= 64 && memcmp(data, frame_header, 6) == 0) {
		avg_lum = ((data[35] >> 2) & 3) |
			   (data[20] << 2) |
			   (data[19] << 10);
@@ -2485,7 +2485,10 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev,
		avg_lum >>= 9;
		atomic_set(&sd->avg_lum, avg_lum);
		gspca_frame_add(gspca_dev, LAST_PACKET, NULL, 0);
		len -= 64;
		if (len == 0)
			return;
		data += 64;
	}
	if (gspca_dev->last_packet_type == LAST_PACKET) {
		if (gspca_dev->cam.cam_mode[(int) gspca_dev->curr_mode].priv