[media] gspca - zc3xx: Discard the partial frames
In some cases, some frames may not end with the JPEG end of frame. Being not complete, they are now discarded. Signed-off-by: Jean-François Moine <moinejf@free.fr> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
Родитель
3d244065cb
Коммит
a5ecdfb3da
|
@ -6821,9 +6821,17 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev,
|
||||||
{
|
{
|
||||||
struct sd *sd = (struct sd *) gspca_dev;
|
struct sd *sd = (struct sd *) gspca_dev;
|
||||||
|
|
||||||
if (data[0] == 0xff && data[1] == 0xd8) { /* start of frame */
|
/* check the JPEG end of frame */
|
||||||
|
if (len >= 3
|
||||||
|
&& data[len - 3] == 0xff && data[len - 2] == 0xd9) {
|
||||||
|
/*fixme: what does the last byte mean?*/
|
||||||
gspca_frame_add(gspca_dev, LAST_PACKET,
|
gspca_frame_add(gspca_dev, LAST_PACKET,
|
||||||
NULL, 0);
|
data, len - 1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* check the JPEG start of a frame */
|
||||||
|
if (data[0] == 0xff && data[1] == 0xd8) {
|
||||||
/* put the JPEG header in the new frame */
|
/* put the JPEG header in the new frame */
|
||||||
gspca_frame_add(gspca_dev, FIRST_PACKET,
|
gspca_frame_add(gspca_dev, FIRST_PACKET,
|
||||||
sd->jpeg_hdr, JPEG_HDR_SZ);
|
sd->jpeg_hdr, JPEG_HDR_SZ);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче