Commit ed47119f authored by Jean-Francois Moine's avatar Jean-Francois Moine Committed by Mauro Carvalho Chehab
Browse files

V4L/DVB (11713): gspca - ov534: Don't discard the images when no UVC EOF



A new image may start without any UVC EOF in the last packet of the
previous image.

Signed-off-by: default avatarJean-Francois Moine <moinejf@free.fr>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 8dd07ef1
Loading
Loading
Loading
Loading
+13 −10
Original line number Diff line number Diff line
@@ -867,18 +867,16 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev, struct gspca_frame *frame,

		/* If PTS or FID has changed, start a new frame. */
		if (this_pts != sd->last_pts || this_fid != sd->last_fid) {
			gspca_frame_add(gspca_dev, FIRST_PACKET, frame,
			if (gspca_dev->last_packet_type == INTER_PACKET)
				frame = gspca_frame_add(gspca_dev,
							LAST_PACKET, frame,
							NULL, 0);
			sd->last_pts = this_pts;
			sd->last_fid = this_fid;
		}

		/* Add the data from this payload */
		gspca_frame_add(gspca_dev, INTER_PACKET, frame,
			gspca_frame_add(gspca_dev, FIRST_PACKET, frame,
					data + 12, len - 12);

		/* If this packet is marked as EOF, end the frame */
		if (data[1] & UVC_STREAM_EOF) {
		} else if (data[1] & UVC_STREAM_EOF) {
			sd->last_pts = 0;

			if (frame->data_end - frame->data !=
@@ -886,11 +884,16 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev, struct gspca_frame *frame,
				PDEBUG(D_PACK, "short frame");
				goto discard;
			}

			frame = gspca_frame_add(gspca_dev, LAST_PACKET, frame,
						NULL, 0);
						data + 12, len - 12);
		} else {

			/* Add the data from this payload */
			gspca_frame_add(gspca_dev, INTER_PACKET, frame,
						data + 12, len - 12);
		}


		/* Done this payload */
		goto scan_next;