Commit 59746e13 authored by Jean-Francois Moine's avatar Jean-Francois Moine Committed by Mauro Carvalho Chehab

V4L/DVB (11714): gspca - spca500 and sunplus: Change the 0x00 insertion mechanism.

The new mechanism does not use any temporary buffer.
Signed-off-by: default avatarJean-Francois Moine <moinejf@free.fr>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent ed47119f
...@@ -32,9 +32,6 @@ MODULE_LICENSE("GPL"); ...@@ -32,9 +32,6 @@ MODULE_LICENSE("GPL");
struct sd { struct sd {
struct gspca_dev gspca_dev; /* !! must be the first item */ struct gspca_dev gspca_dev; /* !! must be the first item */
__u8 packet[ISO_MAX_SIZE + 128];
/* !! no more than 128 ff in an ISO packet */
unsigned char brightness; unsigned char brightness;
unsigned char contrast; unsigned char contrast;
unsigned char colors; unsigned char colors;
...@@ -906,7 +903,6 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev, ...@@ -906,7 +903,6 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev,
{ {
struct sd *sd = (struct sd *) gspca_dev; struct sd *sd = (struct sd *) gspca_dev;
int i; int i;
__u8 *s, *d;
static __u8 ffd9[] = {0xff, 0xd9}; static __u8 ffd9[] = {0xff, 0xd9};
/* frames are jpeg 4.1.1 without 0xff escape */ /* frames are jpeg 4.1.1 without 0xff escape */
...@@ -930,22 +926,19 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev, ...@@ -930,22 +926,19 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev,
} }
/* add 0x00 after 0xff */ /* add 0x00 after 0xff */
for (i = len; --i >= 0; ) i = 0;
if (data[i] == 0xff) do {
break; if (data[i] == 0xff) {
if (i < 0) { /* no 0xff */ gspca_frame_add(gspca_dev, INTER_PACKET, frame,
gspca_frame_add(gspca_dev, INTER_PACKET, frame, data, len); data, i + 1);
return; len -= i;
} data += i;
s = data; *data = 0x00;
d = sd->packet; i = 0;
for (i = 0; i < len; i++) { }
*d++ = *s++; i++;
if (s[-1] == 0xff) } while (i < len);
*d++ = 0x00; gspca_frame_add(gspca_dev, INTER_PACKET, frame, data, len);
}
gspca_frame_add(gspca_dev, INTER_PACKET, frame,
sd->packet, d - sd->packet);
} }
static void setbrightness(struct gspca_dev *gspca_dev) static void setbrightness(struct gspca_dev *gspca_dev)
......
...@@ -32,9 +32,6 @@ MODULE_LICENSE("GPL"); ...@@ -32,9 +32,6 @@ MODULE_LICENSE("GPL");
struct sd { struct sd {
struct gspca_dev gspca_dev; /* !! must be the first item */ struct gspca_dev gspca_dev; /* !! must be the first item */
__u8 packet[ISO_MAX_SIZE + 128];
/* !! no more than 128 ff in an ISO packet */
unsigned char brightness; unsigned char brightness;
unsigned char contrast; unsigned char contrast;
unsigned char colors; unsigned char colors;
...@@ -1103,7 +1100,6 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev, ...@@ -1103,7 +1100,6 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev,
{ {
struct sd *sd = (struct sd *) gspca_dev; struct sd *sd = (struct sd *) gspca_dev;
int i, sof = 0; int i, sof = 0;
unsigned char *s, *d;
static unsigned char ffd9[] = {0xff, 0xd9}; static unsigned char ffd9[] = {0xff, 0xd9};
/* frames are jpeg 4.1.1 without 0xff escape */ /* frames are jpeg 4.1.1 without 0xff escape */
...@@ -1177,22 +1173,19 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev, ...@@ -1177,22 +1173,19 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev,
} }
/* add 0x00 after 0xff */ /* add 0x00 after 0xff */
for (i = len; --i >= 0; ) i = 0;
if (data[i] == 0xff) do {
break; if (data[i] == 0xff) {
if (i < 0) { /* no 0xff */ gspca_frame_add(gspca_dev, INTER_PACKET, frame,
gspca_frame_add(gspca_dev, INTER_PACKET, frame, data, len); data, i + 1);
return; len -= i;
} data += i;
s = data; *data = 0x00;
d = sd->packet; i = 0;
for (i = 0; i < len; i++) { }
*d++ = *s++; i++;
if (s[-1] == 0xff) } while (i < len);
*d++ = 0x00; gspca_frame_add(gspca_dev, INTER_PACKET, frame, data, len);
}
gspca_frame_add(gspca_dev, INTER_PACKET, frame,
sd->packet, d - sd->packet);
} }
static void setbrightness(struct gspca_dev *gspca_dev) static void setbrightness(struct gspca_dev *gspca_dev)
......
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