]> git.openfabrics.org - ~shefty/rdma-dev.git/commitdiff
V4L/DVB (13453): gspca - all subdrivers: Remove the unused frame ptr from pkt_scan().
authorJean-Francois Moine <moinejf@free.fr>
Fri, 13 Nov 2009 12:21:03 +0000 (09:21 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Sat, 5 Dec 2009 20:41:59 +0000 (18:41 -0200)
Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
35 files changed:
drivers/media/video/gspca/conex.c
drivers/media/video/gspca/etoms.c
drivers/media/video/gspca/finepix.c
drivers/media/video/gspca/gl860/gl860.c
drivers/media/video/gspca/gspca.c
drivers/media/video/gspca/gspca.h
drivers/media/video/gspca/jeilinj.c
drivers/media/video/gspca/m5602/m5602_core.c
drivers/media/video/gspca/mars.c
drivers/media/video/gspca/mr97310a.c
drivers/media/video/gspca/ov519.c
drivers/media/video/gspca/ov534.c
drivers/media/video/gspca/pac207.c
drivers/media/video/gspca/pac7302.c
drivers/media/video/gspca/pac7311.c
drivers/media/video/gspca/sn9c20x.c
drivers/media/video/gspca/sonixb.c
drivers/media/video/gspca/sonixj.c
drivers/media/video/gspca/spca500.c
drivers/media/video/gspca/spca501.c
drivers/media/video/gspca/spca505.c
drivers/media/video/gspca/spca506.c
drivers/media/video/gspca/spca508.c
drivers/media/video/gspca/spca561.c
drivers/media/video/gspca/sq905.c
drivers/media/video/gspca/sq905c.c
drivers/media/video/gspca/stk014.c
drivers/media/video/gspca/stv0680.c
drivers/media/video/gspca/stv06xx/stv06xx.c
drivers/media/video/gspca/sunplus.c
drivers/media/video/gspca/t613.c
drivers/media/video/gspca/tv8532.c
drivers/media/video/gspca/vc032x.c
drivers/media/video/gspca/w996Xcf.c
drivers/media/video/gspca/zc3xx.c

index eca003566ae3c9b586799c17a673a35b906e6e43..2f0b8d621e0031c7539a980bf3681d1d72d8acfd 100644 (file)
@@ -888,8 +888,7 @@ static void sd_stop0(struct gspca_dev *gspca_dev)
 }
 
 static void sd_pkt_scan(struct gspca_dev *gspca_dev,
-                       struct gspca_frame *frame,      /* target */
-                       __u8 *data,                     /* isoc packet */
+                       u8 *data,                       /* isoc packet */
                        int len)                        /* iso packet length */
 {
        struct sd *sd = (struct sd *) gspca_dev;
@@ -897,16 +896,15 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev,
        if (data[0] == 0xff && data[1] == 0xd8) {
 
                /* start of frame */
-               frame = gspca_frame_add(gspca_dev, LAST_PACKET, frame,
-                                       data, 0);
+               gspca_frame_add(gspca_dev, LAST_PACKET, NULL, 0);
 
                /* put the JPEG header in the new frame */
-               gspca_frame_add(gspca_dev, FIRST_PACKET, frame,
-                       sd->jpeg_hdr, JPEG_HDR_SZ);
+               gspca_frame_add(gspca_dev, FIRST_PACKET,
+                               sd->jpeg_hdr, JPEG_HDR_SZ);
                data += 2;
                len -= 2;
        }
-       gspca_frame_add(gspca_dev, INTER_PACKET, frame, data, len);
+       gspca_frame_add(gspca_dev, INTER_PACKET, data, len);
 }
 
 static void setbrightness(struct gspca_dev*gspca_dev)
index c1461e63647f26fc698be301f49039966e840925..9de86419ae1edcf7f50f540a929cdeaf6cf6b68a 100644 (file)
@@ -752,8 +752,7 @@ static void do_autogain(struct gspca_dev *gspca_dev)
 #undef LIMIT
 
 static void sd_pkt_scan(struct gspca_dev *gspca_dev,
-                       struct gspca_frame *frame,      /* target */
-                       __u8 *data,                     /* isoc packet */
+                       u8 *data,                       /* isoc packet */
                        int len)                        /* iso packet length */
 {
        int seqframe;
@@ -767,14 +766,13 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev,
                       data[2], data[3], data[4], data[5]);
                data += 30;
                /* don't change datalength as the chips provided it */
-               frame = gspca_frame_add(gspca_dev, LAST_PACKET, frame,
-                                       data, 0);
-               gspca_frame_add(gspca_dev, FIRST_PACKET, frame, data, len);
+               gspca_frame_add(gspca_dev, LAST_PACKET, NULL, 0);
+               gspca_frame_add(gspca_dev, FIRST_PACKET, data, len);
                return;
        }
        if (len) {
                data += 8;
-               gspca_frame_add(gspca_dev, INTER_PACKET, frame, data, len);
+               gspca_frame_add(gspca_dev, INTER_PACKET, data, len);
        } else {                        /* Drop Packet */
                gspca_dev->last_packet_type = DISCARD_PACKET;
        }
index 480ec5c87d0ed3ecc8696ad1cd2a56ad007a10f3..5d90e7448579cb768cc9cb651847f7756b33c02f 100644 (file)
@@ -82,7 +82,6 @@ static void dostream(struct work_struct *work)
        struct gspca_dev *gspca_dev = &dev->gspca_dev;
        struct urb *urb = gspca_dev->urb[0];
        u8 *data = urb->transfer_buffer;
-       struct gspca_frame *frame;
        int ret = 0;
        int len;
 
@@ -118,10 +117,6 @@ again:
                        }
                        if (!gspca_dev->present || !gspca_dev->streaming)
                                goto out;
-                       frame = gspca_get_i_frame(&dev->gspca_dev);
-                       if (frame == NULL)
-                               gspca_dev->last_packet_type = DISCARD_PACKET;
-
                        if (len < FPIX_MAX_TRANSFER ||
                                (data[len - 2] == 0xff &&
                                        data[len - 1] == 0xd9)) {
@@ -132,21 +127,17 @@ again:
                                 * but there's nothing we can do. We also end
                                 * here if the the jpeg ends right at the end
                                 * of the frame. */
-                               if (frame)
-                                       frame = gspca_frame_add(gspca_dev,
-                                                       LAST_PACKET,
-                                                       frame,
-                                                       data, len);
+                               gspca_frame_add(gspca_dev, LAST_PACKET,
+                                               data, len);
                                break;
                        }
 
                        /* got a partial image */
-                       if (frame)
-                               gspca_frame_add(gspca_dev,
-                                               gspca_dev->last_packet_type
-                                                       == LAST_PACKET
-                                               ? FIRST_PACKET : INTER_PACKET,
-                                               frame, data, len);
+                       gspca_frame_add(gspca_dev,
+                                       gspca_dev->last_packet_type
+                                               == LAST_PACKET
+                                       ? FIRST_PACKET : INTER_PACKET,
+                                       data, len);
                }
 
                /* We must wait before trying reading the next
index a2108dd710539cfa35a7d707fb9f470254e9c892..a695e0ae13c2c40e44b8b4f8e181d2cc07d1c680 100644 (file)
@@ -36,7 +36,7 @@ static int  sd_isoc_init(struct gspca_dev *gspca_dev);
 static int  sd_start(struct gspca_dev *gspca_dev);
 static void sd_stop0(struct gspca_dev *gspca_dev);
 static void sd_pkt_scan(struct gspca_dev *gspca_dev,
-                       struct gspca_frame *frame, u8 *data, s32 len);
+                       u8 *data, int len);
 static void sd_callback(struct gspca_dev *gspca_dev);
 
 static int gl860_guess_sensor(struct gspca_dev *gspca_dev,
@@ -433,7 +433,7 @@ static void sd_stop0(struct gspca_dev *gspca_dev)
 
 /* This function is called when an image is being received */
 static void sd_pkt_scan(struct gspca_dev *gspca_dev,
-                       struct gspca_frame *frame, u8 *data, s32 len)
+                       u8 *data, int len)
 {
        struct sd *sd = (struct sd *) gspca_dev;
        static s32 nSkipped;
@@ -445,11 +445,11 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev,
        /* Test only against 0202h, so endianess does not matter */
        switch (*(s16 *) data) {
        case 0x0202:            /* End of frame, start a new one */
-               frame = gspca_frame_add(gspca_dev, LAST_PACKET, frame, data, 0);
+               gspca_frame_add(gspca_dev, LAST_PACKET, NULL, 0);
                nSkipped = 0;
                if (sd->nbIm >= 0 && sd->nbIm < 10)
                        sd->nbIm++;
-               gspca_frame_add(gspca_dev, FIRST_PACKET, frame, data, 0);
+               gspca_frame_add(gspca_dev, FIRST_PACKET, NULL, 0);
                break;
 
        default:
@@ -464,7 +464,7 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev,
                                nSkipped = nToSkip + 1;
                        }
                        gspca_frame_add(gspca_dev,
-                               INTER_PACKET, frame, data, len);
+                               INTER_PACKET, data, len);
                }
                break;
        }
index 68ba535300f72a9f5a0fb84225edfe4e39f8a6f0..4076f8e5a6fc44b5cd556b9cc519ae2dd07edde5 100644 (file)
@@ -165,7 +165,7 @@ static void fill_frame(struct gspca_dev *gspca_dev,
                        i, urb->iso_frame_desc[i].offset, len);
                data = (u8 *) urb->transfer_buffer
                                        + urb->iso_frame_desc[i].offset;
-               pkt_scan(gspca_dev, gspca_dev->cur_frame, data, len);
+               pkt_scan(gspca_dev, data, len);
        }
 
 resubmit:
@@ -218,7 +218,6 @@ static void bulk_irq(struct urb *urb)
 
        PDEBUG(D_PACK, "packet l:%d", urb->actual_length);
        gspca_dev->sd_desc->pkt_scan(gspca_dev,
-                               gspca_dev->frame,
                                urb->transfer_buffer,
                                urb->actual_length);
 
@@ -243,11 +242,10 @@ resubmit:
  * DISCARD_PACKET invalidates the whole frame.
  * On LAST_PACKET, a new frame is returned.
  */
-struct gspca_frame *gspca_frame_add(struct gspca_dev *gspca_dev,
-                                   enum gspca_packet_type packet_type,
-                                   struct gspca_frame *dummy,
-                                   const __u8 *data,
-                                   int len)
+void gspca_frame_add(struct gspca_dev *gspca_dev,
+                       enum gspca_packet_type packet_type,
+                       const u8 *data,
+                       int len)
 {
        struct gspca_frame *frame;
        int i, j;
@@ -259,7 +257,7 @@ struct gspca_frame *gspca_frame_add(struct gspca_dev *gspca_dev,
        if ((frame->v4l2_buf.flags & BUF_ALL_FLAGS)
                                        != V4L2_BUF_FLAG_QUEUED) {
                gspca_dev->last_packet_type = DISCARD_PACKET;
-               return frame;
+               return;
        }
 
        /* when start of a new frame, if the current frame buffer
@@ -272,7 +270,7 @@ struct gspca_frame *gspca_frame_add(struct gspca_dev *gspca_dev,
        } else if (gspca_dev->last_packet_type == DISCARD_PACKET) {
                if (packet_type == LAST_PACKET)
                        gspca_dev->last_packet_type = packet_type;
-               return frame;
+               return;
        }
 
        /* append the packet to the frame buffer */
@@ -304,9 +302,9 @@ struct gspca_frame *gspca_frame_add(struct gspca_dev *gspca_dev,
                        i,
                        gspca_dev->fr_o);
                j = gspca_dev->fr_queue[i];
-               gspca_dev->cur_frame = frame = &gspca_dev->frame[j];
+               gspca_dev->cur_frame = &gspca_dev->frame[j];
        }
-       return frame;
+       return;
 }
 EXPORT_SYMBOL(gspca_frame_add);
 
index 59078bbf472ccc226541b8f3e4d795055a6b214c..181617355ec302c410a1de9fd04c92c3a055d1aa 100644 (file)
@@ -79,8 +79,7 @@ typedef int (*cam_streamparm_op) (struct gspca_dev *,
 typedef int (*cam_qmnu_op) (struct gspca_dev *,
                        struct v4l2_querymenu *);
 typedef void (*cam_pkt_op) (struct gspca_dev *gspca_dev,
-                               struct gspca_frame *frame,
-                               __u8 *data,
+                               u8 *data,
                                int len);
 
 struct ctrl {
@@ -192,11 +191,10 @@ int gspca_dev_probe(struct usb_interface *intf,
                int dev_size,
                struct module *module);
 void gspca_disconnect(struct usb_interface *intf);
-struct gspca_frame *gspca_frame_add(struct gspca_dev *gspca_dev,
-                                   enum gspca_packet_type packet_type,
-                                   struct gspca_frame *frame,
-                                   const __u8 *data,
-                                   int len);
+void gspca_frame_add(struct gspca_dev *gspca_dev,
+                       enum gspca_packet_type packet_type,
+                       const u8 *data,
+                       int len);
 struct gspca_frame *gspca_get_i_frame(struct gspca_dev *gspca_dev);
 #ifdef CONFIG_PM
 int gspca_suspend(struct usb_interface *intf, pm_message_t message);
index d679970d5b3ebcb53a5aa7355455ebea97307090..2019b04f9235261fc92e06b5168ce23ff9b06633 100644 (file)
@@ -181,7 +181,6 @@ static void jlj_dostream(struct work_struct *work)
 {
        struct sd *dev = container_of(work, struct sd, work_struct);
        struct gspca_dev *gspca_dev = &dev->gspca_dev;
-       struct gspca_frame *frame;
        int blocks_left; /* 0x200-sized blocks remaining in current frame. */
        int size_in_blocks;
        int act_len;
@@ -214,15 +213,13 @@ static void jlj_dostream(struct work_struct *work)
                PDEBUG(D_STREAM, "blocks_left = 0x%x", blocks_left);
 
                /* Start a new frame, and add the JPEG header, first thing */
-               frame = gspca_get_i_frame(gspca_dev);
-               if (frame) {
-                       gspca_frame_add(gspca_dev, FIRST_PACKET, frame,
-                                       dev->jpeg_hdr, JPEG_HDR_SZ);
-                       /* Toss line 0 of data block 0, keep the rest. */
-                       gspca_frame_add(gspca_dev, INTER_PACKET,
-                               frame, buffer + FRAME_HEADER_LEN,
+               gspca_frame_add(gspca_dev, FIRST_PACKET,
+                               dev->jpeg_hdr, JPEG_HDR_SZ);
+               /* Toss line 0 of data block 0, keep the rest. */
+               gspca_frame_add(gspca_dev, INTER_PACKET,
+                               buffer + FRAME_HEADER_LEN,
                                JEILINJ_MAX_TRANSFER - FRAME_HEADER_LEN);
-               }
+
                while (blocks_left > 0) {
                        if (!gspca_dev->present)
                                goto quit_stream;
@@ -239,10 +236,8 @@ static void jlj_dostream(struct work_struct *work)
                                packet_type = LAST_PACKET;
                        else
                                packet_type = INTER_PACKET;
-                       if (frame)
-                               gspca_frame_add(gspca_dev, packet_type,
-                                               frame, buffer,
-                                               JEILINJ_MAX_TRANSFER);
+                       gspca_frame_add(gspca_dev, packet_type,
+                                       buffer, JEILINJ_MAX_TRANSFER);
                }
        }
 quit_stream:
index 7f1e5415850b5569893222b38145486ab7c85a69..844fc1d886d199cad16dd0115750c2062b1477f8 100644 (file)
@@ -274,8 +274,7 @@ static int m5602_start_transfer(struct gspca_dev *gspca_dev)
 }
 
 static void m5602_urb_complete(struct gspca_dev *gspca_dev,
-                       struct gspca_frame *frame,
-                       __u8 *data, int len)
+                               u8 *data, int len)
 {
        struct sd *sd = (struct sd *) gspca_dev;
 
@@ -295,19 +294,27 @@ static void m5602_urb_complete(struct gspca_dev *gspca_dev,
                len -= 6;
 
                /* Complete the last frame (if any) */
-               frame = gspca_frame_add(gspca_dev, LAST_PACKET,
-                                       frame, data, 0);
+               gspca_frame_add(gspca_dev, LAST_PACKET,
+                               NULL, 0);
                sd->frame_count++;
 
                /* Create a new frame */
-               gspca_frame_add(gspca_dev, FIRST_PACKET, frame, data, len);
+               gspca_frame_add(gspca_dev, FIRST_PACKET, data, len);
 
                PDEBUG(D_FRAM, "Starting new frame %d",
                       sd->frame_count);
 
        } else {
-               int cur_frame_len = frame->data_end - frame->data;
+               struct gspca_frame *frame;
+               int cur_frame_len;
 
+               frame = gspca_get_i_frame(gspca_dev);
+               if (frame == NULL) {
+                       gspca_dev->last_packet_type = DISCARD_PACKET;
+                       return;
+               }
+
+               cur_frame_len = frame->data_end - frame->data;
                /* Remove urb header */
                data += 4;
                len -= 4;
@@ -316,12 +323,12 @@ static void m5602_urb_complete(struct gspca_dev *gspca_dev,
                        PDEBUG(D_FRAM, "Continuing frame %d copying %d bytes",
                               sd->frame_count, len);
 
-                       gspca_frame_add(gspca_dev, INTER_PACKET, frame,
+                       gspca_frame_add(gspca_dev, INTER_PACKET,
                                        data, len);
                } else if (frame->v4l2_buf.length - cur_frame_len > 0) {
                        /* Add the remaining data up to frame size */
-                       gspca_frame_add(gspca_dev, INTER_PACKET, frame, data,
-                                       frame->v4l2_buf.length - cur_frame_len);
+                       gspca_frame_add(gspca_dev, INTER_PACKET, data,
+                                   frame->v4l2_buf.length - cur_frame_len);
                }
        }
 }
index de769caf013dd2f0e8e4330329e6745840128670..9cf8d68c71bf9fa6ffa6438ca99d35fa4e59db58 100644 (file)
@@ -325,8 +325,7 @@ static void sd_stop0(struct gspca_dev *gspca_dev)
 }
 
 static void sd_pkt_scan(struct gspca_dev *gspca_dev,
-                       struct gspca_frame *frame,      /* target */
-                       __u8 *data,                     /* isoc packet */
+                       u8 *data,                       /* isoc packet */
                        int len)                        /* iso packet length */
 {
        struct sd *sd = (struct sd *) gspca_dev;
@@ -348,11 +347,11 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev,
                            || data[5 + p] == 0x67) {
                                PDEBUG(D_PACK, "sof offset: %d len: %d",
                                        p, len);
-                               frame = gspca_frame_add(gspca_dev, LAST_PACKET,
-                                                       frame, data, p);
+                               gspca_frame_add(gspca_dev, LAST_PACKET,
+                                               data, p);
 
                                /* put the JPEG header */
-                               gspca_frame_add(gspca_dev, FIRST_PACKET, frame,
+                               gspca_frame_add(gspca_dev, FIRST_PACKET,
                                        sd->jpeg_hdr, JPEG_HDR_SZ);
                                data += p + 16;
                                len -= p + 16;
@@ -360,7 +359,7 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev,
                        }
                }
        }
-       gspca_frame_add(gspca_dev, INTER_PACKET, frame, data, len);
+       gspca_frame_add(gspca_dev, INTER_PACKET, data, len);
 }
 
 static int sd_setbrightness(struct gspca_dev *gspca_dev, __s32 val)
index ffb5e6d62c0ba08c380acb6c10153a42a27249dc..126d968dd9e00c71d79767effda20a1b9e13ea54 100644 (file)
@@ -1030,9 +1030,8 @@ static int sd_getmin_clockdiv(struct gspca_dev *gspca_dev, __s32 *val)
 #include "pac_common.h"
 
 static void sd_pkt_scan(struct gspca_dev *gspca_dev,
-                       struct gspca_frame *frame,    /* target */
-                       __u8 *data,                   /* isoc packet */
-                       int len)                      /* iso packet length */
+                       u8 *data,               /* isoc packet */
+                       int len)                /* iso packet length */
 {
        struct sd *sd = (struct sd *) gspca_dev;
        unsigned char *sof;
@@ -1047,15 +1046,15 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev,
                        n -= sizeof pac_sof_marker;
                else
                        n = 0;
-               frame = gspca_frame_add(gspca_dev, LAST_PACKET, frame,
+               gspca_frame_add(gspca_dev, LAST_PACKET,
                                        data, n);
                /* Start next frame. */
-               gspca_frame_add(gspca_dev, FIRST_PACKET, frame,
+               gspca_frame_add(gspca_dev, FIRST_PACKET,
                        pac_sof_marker, sizeof pac_sof_marker);
                len -= sof - data;
                data = sof;
        }
-       gspca_frame_add(gspca_dev, INTER_PACKET, frame, data, len);
+       gspca_frame_add(gspca_dev, INTER_PACKET, data, len);
 }
 
 /* sub-driver description */
index f88a526e216fc1f6bb17cdf270edd116b3e30879..ad9ec339981d5f787e77194c32e30b1ebd044cbc 100644 (file)
@@ -3920,9 +3920,8 @@ static void sd_stop0(struct gspca_dev *gspca_dev)
 }
 
 static void ov511_pkt_scan(struct gspca_dev *gspca_dev,
-                       struct gspca_frame *frame,      /* target */
-                       __u8 *in,                       /* isoc packet */
-                       int len)                        /* iso packet length */
+                       u8 *in,                 /* isoc packet */
+                       int len)                /* iso packet length */
 {
        struct sd *sd = (struct sd *) gspca_dev;
 
@@ -3953,11 +3952,11 @@ static void ov511_pkt_scan(struct gspca_dev *gspca_dev,
                                return;
                        }
                        /* Add 11 byte footer to frame, might be usefull */
-                       gspca_frame_add(gspca_dev, LAST_PACKET, frame, in, 11);
+                       gspca_frame_add(gspca_dev, LAST_PACKET, in, 11);
                        return;
                } else {
                        /* Frame start */
-                       gspca_frame_add(gspca_dev, FIRST_PACKET, frame, in, 0);
+                       gspca_frame_add(gspca_dev, FIRST_PACKET, in, 0);
                        sd->packet_nr = 0;
                }
        }
@@ -3966,12 +3965,11 @@ static void ov511_pkt_scan(struct gspca_dev *gspca_dev,
        len--;
 
        /* intermediate packet */
-       gspca_frame_add(gspca_dev, INTER_PACKET, frame, in, len);
+       gspca_frame_add(gspca_dev, INTER_PACKET, in, len);
 }
 
 static void ov518_pkt_scan(struct gspca_dev *gspca_dev,
-                       struct gspca_frame *frame,      /* target */
-                       __u8 *data,                     /* isoc packet */
+                       u8 *data,                       /* isoc packet */
                        int len)                        /* iso packet length */
 {
        struct sd *sd = (struct sd *) gspca_dev;
@@ -3979,8 +3977,8 @@ static void ov518_pkt_scan(struct gspca_dev *gspca_dev,
        /* A false positive here is likely, until OVT gives me
         * the definitive SOF/EOF format */
        if ((!(data[0] | data[1] | data[2] | data[3] | data[5])) && data[6]) {
-               frame = gspca_frame_add(gspca_dev, LAST_PACKET, frame, data, 0);
-               gspca_frame_add(gspca_dev, FIRST_PACKET, frame, data, 0);
+               gspca_frame_add(gspca_dev, LAST_PACKET, NULL, 0);
+               gspca_frame_add(gspca_dev, FIRST_PACKET, NULL, 0);
                sd->packet_nr = 0;
        }
 
@@ -4004,12 +4002,11 @@ static void ov518_pkt_scan(struct gspca_dev *gspca_dev,
        }
 
        /* intermediate packet */
-       gspca_frame_add(gspca_dev, INTER_PACKET, frame, data, len);
+       gspca_frame_add(gspca_dev, INTER_PACKET, data, len);
 }
 
 static void ov519_pkt_scan(struct gspca_dev *gspca_dev,
-                       struct gspca_frame *frame,      /* target */
-                       __u8 *data,                     /* isoc packet */
+                       u8 *data,                       /* isoc packet */
                        int len)                        /* iso packet length */
 {
        /* Header of ov519 is 16 bytes:
@@ -4032,7 +4029,7 @@ static void ov519_pkt_scan(struct gspca_dev *gspca_dev,
                        len -= HDRSZ;
 #undef HDRSZ
                        if (data[0] == 0xff || data[1] == 0xd8)
-                               gspca_frame_add(gspca_dev, FIRST_PACKET, frame,
+                               gspca_frame_add(gspca_dev, FIRST_PACKET,
                                                data, len);
                        else
                                gspca_dev->last_packet_type = DISCARD_PACKET;
@@ -4040,34 +4037,31 @@ static void ov519_pkt_scan(struct gspca_dev *gspca_dev,
                case 0x51:              /* end of frame */
                        if (data[9] != 0)
                                gspca_dev->last_packet_type = DISCARD_PACKET;
-                       gspca_frame_add(gspca_dev, LAST_PACKET, frame,
-                                       data, 0);
+                       gspca_frame_add(gspca_dev, LAST_PACKET,
+                                       NULL, 0);
                        return;
                }
        }
 
        /* intermediate packet */
-       gspca_frame_add(gspca_dev, INTER_PACKET, frame,
-                       data, len);
+       gspca_frame_add(gspca_dev, INTER_PACKET, data, len);
 }
 
 static void ovfx2_pkt_scan(struct gspca_dev *gspca_dev,
-                       struct gspca_frame *frame,      /* target */
-                       __u8 *data,                     /* isoc packet */
+                       u8 *data,                       /* isoc packet */
                        int len)                        /* iso packet length */
 {
        /* A short read signals EOF */
        if (len < OVFX2_BULK_SIZE) {
-               frame = gspca_frame_add(gspca_dev, LAST_PACKET, frame, data, len);
-               gspca_frame_add(gspca_dev, FIRST_PACKET, frame, NULL, 0);
+               gspca_frame_add(gspca_dev, LAST_PACKET, data, len);
+               gspca_frame_add(gspca_dev, FIRST_PACKET, NULL, 0);
                return;
        }
-       gspca_frame_add(gspca_dev, INTER_PACKET, frame, data, len);
+       gspca_frame_add(gspca_dev, INTER_PACKET, data, len);
 }
 
 static void sd_pkt_scan(struct gspca_dev *gspca_dev,
-                       struct gspca_frame *frame,      /* target */
-                       __u8 *data,                     /* isoc packet */
+                       u8 *data,                       /* isoc packet */
                        int len)                        /* iso packet length */
 {
        struct sd *sd = (struct sd *) gspca_dev;
@@ -4075,20 +4069,20 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev,
        switch (sd->bridge) {
        case BRIDGE_OV511:
        case BRIDGE_OV511PLUS:
-               ov511_pkt_scan(gspca_dev, frame, data, len);
+               ov511_pkt_scan(gspca_dev, data, len);
                break;
        case BRIDGE_OV518:
        case BRIDGE_OV518PLUS:
-               ov518_pkt_scan(gspca_dev, frame, data, len);
+               ov518_pkt_scan(gspca_dev, data, len);
                break;
        case BRIDGE_OV519:
-               ov519_pkt_scan(gspca_dev, frame, data, len);
+               ov519_pkt_scan(gspca_dev, data, len);
                break;
        case BRIDGE_OVFX2:
-               ovfx2_pkt_scan(gspca_dev, frame, data, len);
+               ovfx2_pkt_scan(gspca_dev, data, len);
                break;
        case BRIDGE_W9968CF:
-               w9968cf_pkt_scan(gspca_dev, frame, data, len);
+               w9968cf_pkt_scan(gspca_dev, data, len);
                break;
        }
 }
index 26d98b1312e080abe2a5fc702d9a374f84929ccb..193129a59ab71d86d50afc0266f118d9c17fd84c 100644 (file)
@@ -1403,8 +1403,8 @@ static void sd_stopN_ov965x(struct gspca_dev *gspca_dev)
 #define UVC_STREAM_EOF (1 << 1)
 #define UVC_STREAM_FID (1 << 0)
 
-static void sd_pkt_scan(struct gspca_dev *gspca_dev, struct gspca_frame *frame,
-                       __u8 *data, int len)
+static void sd_pkt_scan(struct gspca_dev *gspca_dev,
+                       u8 *data, int len)
 {
        struct sd *sd = (struct sd *) gspca_dev;
        __u32 this_pts;
@@ -1445,23 +1445,22 @@ 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) {
                        if (gspca_dev->last_packet_type == INTER_PACKET)
-                               frame = gspca_frame_add(gspca_dev,
-                                                       LAST_PACKET, frame,
-                                                       NULL, 0);
+                               gspca_frame_add(gspca_dev, LAST_PACKET,
+                                               NULL, 0);
                        sd->last_pts = this_pts;
                        sd->last_fid = this_fid;
-                       gspca_frame_add(gspca_dev, FIRST_PACKET, frame,
+                       gspca_frame_add(gspca_dev, FIRST_PACKET,
                                        data + 12, len - 12);
                /* If this packet is marked as EOF, end the frame */
                } else if (data[1] & UVC_STREAM_EOF) {
                        sd->last_pts = 0;
-                       frame = gspca_frame_add(gspca_dev, LAST_PACKET, frame,
-                                               data + 12, len - 12);
+                       gspca_frame_add(gspca_dev, LAST_PACKET,
+                                       data + 12, len - 12);
                } else {
 
                        /* Add the data from this payload */
-                       gspca_frame_add(gspca_dev, INTER_PACKET, frame,
-                                               data + 12, len - 12);
+                       gspca_frame_add(gspca_dev, INTER_PACKET,
+                                       data + 12, len - 12);
                }
 
                /* Done this payload */
@@ -1469,7 +1468,7 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev, struct gspca_frame *frame,
 
 discard:
                /* Discard data until a new frame starts. */
-               gspca_frame_add(gspca_dev, DISCARD_PACKET, frame, NULL, 0);
+               gspca_dev->last_packet_type = DISCARD_PACKET;
 
 scan_next:
                remaining_len -= len;
index 57e13e2d550c39f4b18d5d37673e2c1948bc7176..4706a823add0baa395a324acc207bfcdac2b9f6e 100644 (file)
@@ -337,8 +337,7 @@ static void pac207_do_auto_gain(struct gspca_dev *gspca_dev)
 }
 
 static void sd_pkt_scan(struct gspca_dev *gspca_dev,
-                       struct gspca_frame *frame,
-                       __u8 *data,
+                       u8 *data,
                        int len)
 {
        struct sd *sd = (struct sd *) gspca_dev;
@@ -354,10 +353,10 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev,
                        n -= sizeof pac_sof_marker;
                else
                        n = 0;
-               frame = gspca_frame_add(gspca_dev, LAST_PACKET, frame,
-                                       data, n);
+               gspca_frame_add(gspca_dev, LAST_PACKET,
+                               data, n);
                sd->header_read = 0;
-               gspca_frame_add(gspca_dev, FIRST_PACKET, frame, NULL, 0);
+               gspca_frame_add(gspca_dev, FIRST_PACKET, NULL, 0);
                len -= sof - data;
                data = sof;
        }
@@ -381,7 +380,7 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev,
                sd->header_read = 11;
        }
 
-       gspca_frame_add(gspca_dev, INTER_PACKET, frame, data, len);
+       gspca_frame_add(gspca_dev, INTER_PACKET, data, len);
 }
 
 static void setbrightness(struct gspca_dev *gspca_dev)
index e0fd767984b3443e79991f3e548cf2abc655ca46..74acceea8094ea4cc06c3846997a48d09ffa3c73 100644 (file)
@@ -855,7 +855,7 @@ static void pac_start_frame(struct gspca_dev *gspca_dev,
 {
        unsigned char tmpbuf[4];
 
-       gspca_frame_add(gspca_dev, FIRST_PACKET, frame,
+       gspca_frame_add(gspca_dev, FIRST_PACKET,
                pac_jpeg_header1, sizeof(pac_jpeg_header1));
 
        tmpbuf[0] = lines >> 8;
@@ -863,25 +863,31 @@ static void pac_start_frame(struct gspca_dev *gspca_dev,
        tmpbuf[2] = samples_per_line >> 8;
        tmpbuf[3] = samples_per_line & 0xff;
 
-       gspca_frame_add(gspca_dev, INTER_PACKET, frame,
+       gspca_frame_add(gspca_dev, INTER_PACKET,
                tmpbuf, sizeof(tmpbuf));
-       gspca_frame_add(gspca_dev, INTER_PACKET, frame,
+       gspca_frame_add(gspca_dev, INTER_PACKET,
                pac_jpeg_header2, sizeof(pac_jpeg_header2));
 }
 
 /* this function is run at interrupt level */
 static void sd_pkt_scan(struct gspca_dev *gspca_dev,
-                       struct gspca_frame *frame,      /* target */
-                       __u8 *data,                     /* isoc packet */
+                       u8 *data,                       /* isoc packet */
                        int len)                        /* iso packet length */
 {
        struct sd *sd = (struct sd *) gspca_dev;
+       struct gspca_frame *frame;
        unsigned char *sof;
 
        sof = pac_find_sof(&sd->sof_read, data, len);
        if (sof) {
                int n, lum_offset, footer_length;
 
+               frame = gspca_get_i_frame(gspca_dev);
+               if (frame == NULL) {
+                       gspca_dev->last_packet_type = DISCARD_PACKET;
+                       return;
+               }
+
                /* 6 bytes after the FF D9 EOF marker a number of lumination
                   bytes are send corresponding to different parts of the
                   image, the 14th and 15th byte after the EOF seem to
@@ -895,12 +901,12 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev,
                        frame->data_end += n;
                        n = 0;
                }
-               frame = gspca_frame_add(gspca_dev, INTER_PACKET, frame,
+               gspca_frame_add(gspca_dev, INTER_PACKET,
                                        data, n);
                if (gspca_dev->last_packet_type != DISCARD_PACKET &&
                                frame->data_end[-2] == 0xff &&
                                frame->data_end[-1] == 0xd9)
-                       frame = gspca_frame_add(gspca_dev, LAST_PACKET, frame,
+                       gspca_frame_add(gspca_dev, LAST_PACKET,
                                                NULL, 0);
 
                n = sof - data;
@@ -920,7 +926,7 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev,
                pac_start_frame(gspca_dev, frame,
                        gspca_dev->width, gspca_dev->height);
        }
-       gspca_frame_add(gspca_dev, INTER_PACKET, frame, data, len);
+       gspca_frame_add(gspca_dev, INTER_PACKET, data, len);
 }
 
 static int sd_setbrightness(struct gspca_dev *gspca_dev, __s32 val)
index 1a27da00ccc180da208ca0f6f2773f5a926fefd9..e5697a6345e8f24b9f9a7738465b90fc903b84f9 100644 (file)
@@ -653,7 +653,7 @@ static void pac_start_frame(struct gspca_dev *gspca_dev,
 {
        unsigned char tmpbuf[4];
 
-       gspca_frame_add(gspca_dev, FIRST_PACKET, frame,
+       gspca_frame_add(gspca_dev, FIRST_PACKET,
                pac_jpeg_header1, sizeof(pac_jpeg_header1));
 
        tmpbuf[0] = lines >> 8;
@@ -661,25 +661,31 @@ static void pac_start_frame(struct gspca_dev *gspca_dev,
        tmpbuf[2] = samples_per_line >> 8;
        tmpbuf[3] = samples_per_line & 0xff;
 
-       gspca_frame_add(gspca_dev, INTER_PACKET, frame,
+       gspca_frame_add(gspca_dev, INTER_PACKET,
                tmpbuf, sizeof(tmpbuf));
-       gspca_frame_add(gspca_dev, INTER_PACKET, frame,
+       gspca_frame_add(gspca_dev, INTER_PACKET,
                pac_jpeg_header2, sizeof(pac_jpeg_header2));
 }
 
 /* this function is run at interrupt level */
 static void sd_pkt_scan(struct gspca_dev *gspca_dev,
-                       struct gspca_frame *frame,      /* target */
-                       __u8 *data,                     /* isoc packet */
+                       u8 *data,                       /* isoc packet */
                        int len)                        /* iso packet length */
 {
        struct sd *sd = (struct sd *) gspca_dev;
        unsigned char *sof;
+       struct gspca_frame *frame;
 
        sof = pac_find_sof(&sd->sof_read, data, len);
        if (sof) {
                int n, lum_offset, footer_length;
 
+               frame = gspca_get_i_frame(gspca_dev);
+               if (frame == NULL) {
+                       gspca_dev->last_packet_type = DISCARD_PACKET;
+                       return;
+               }
+
                /* 6 bytes after the FF D9 EOF marker a number of lumination
                   bytes are send corresponding to different parts of the
                   image, the 14th and 15th byte after the EOF seem to
@@ -693,12 +699,12 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev,
                        frame->data_end += n;
                        n = 0;
                }
-               frame = gspca_frame_add(gspca_dev, INTER_PACKET, frame,
+               gspca_frame_add(gspca_dev, INTER_PACKET,
                                        data, n);
                if (gspca_dev->last_packet_type != DISCARD_PACKET &&
                                frame->data_end[-2] == 0xff &&
                                frame->data_end[-1] == 0xd9)
-                       frame = gspca_frame_add(gspca_dev, LAST_PACKET, frame,
+                       gspca_frame_add(gspca_dev, LAST_PACKET,
                                                NULL, 0);
 
                n = sof - data;
@@ -717,7 +723,7 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev,
                pac_start_frame(gspca_dev, frame,
                        gspca_dev->height, gspca_dev->width);
        }
-       gspca_frame_add(gspca_dev, INTER_PACKET, frame, data, len);
+       gspca_frame_add(gspca_dev, INTER_PACKET, data, len);
 }
 
 static int sd_setcontrast(struct gspca_dev *gspca_dev, __s32 val)
index cdad3db33367970fface102998fecf79cd2fcf57..b1944a7cbb0f31f3629628df27f2bf2bac6dc698 100644 (file)
@@ -2342,7 +2342,6 @@ static void sd_dqcallback(struct gspca_dev *gspca_dev)
 }
 
 static void sd_pkt_scan(struct gspca_dev *gspca_dev,
-                       struct gspca_frame *frame,      /* target */
                        u8 *data,                       /* isoc packet */
                        int len)                        /* iso packet length */
 {
@@ -2378,22 +2377,22 @@ 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,
-                               frame, data, len);
+                               data, len);
                return;
        }
        if (gspca_dev->last_packet_type == LAST_PACKET) {
                if (gspca_dev->cam.cam_mode[(int) gspca_dev->curr_mode].priv
                                & MODE_JPEG) {
-                       gspca_frame_add(gspca_dev, FIRST_PACKET, frame,
+                       gspca_frame_add(gspca_dev, FIRST_PACKET,
                                sd->jpeg_hdr, JPEG_HDR_SZ);
-                       gspca_frame_add(gspca_dev, INTER_PACKET, frame,
+                       gspca_frame_add(gspca_dev, INTER_PACKET,
                                data, len);
                } else {
-                       gspca_frame_add(gspca_dev, FIRST_PACKET, frame,
+                       gspca_frame_add(gspca_dev, FIRST_PACKET,
                                data, len);
                }
        } else {
-               gspca_frame_add(gspca_dev, INTER_PACKET, frame, data, len);
+               gspca_frame_add(gspca_dev, INTER_PACKET, data, len);
        }
 }
 
index cf3af8de6e971ca2422ec38330a3b57081b8f69c..a9f061063b49e04f5179eb19e2a469b53edbe2d3 100644 (file)
@@ -995,8 +995,7 @@ static void sd_stopN(struct gspca_dev *gspca_dev)
 }
 
 static void sd_pkt_scan(struct gspca_dev *gspca_dev,
-                       struct gspca_frame *frame,      /* target */
-                       unsigned char *data,            /* isoc packet */
+                       u8 *data,                       /* isoc packet */
                        int len)                        /* iso packet length */
 {
        int i;
@@ -1054,12 +1053,12 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev,
                                        pkt_type = DISCARD_PACKET;
                                }
 
-                               frame = gspca_frame_add(gspca_dev, pkt_type,
-                                                       frame, data, 0);
+                               gspca_frame_add(gspca_dev, pkt_type,
+                                               NULL, 0);
                                data += i + fr_h_sz;
                                len -= i + fr_h_sz;
                                gspca_frame_add(gspca_dev, FIRST_PACKET,
-                                               frame, data, len);
+                                               data, len);
                                return;
                        }
                }
@@ -1068,15 +1067,21 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev,
        if (cam->cam_mode[gspca_dev->curr_mode].priv & MODE_RAW) {
                /* In raw mode we sometimes get some garbage after the frame
                   ignore this */
-               int used = frame->data_end - frame->data;
+               struct gspca_frame *frame;
+               int used;
                int size = cam->cam_mode[gspca_dev->curr_mode].sizeimage;
 
+               frame = gspca_get_i_frame(gspca_dev);
+               if (frame == NULL) {
+                       gspca_dev->last_packet_type = DISCARD_PACKET;
+                       return;
+               }
+               used = frame->data_end - frame->data;
                if (used + len > size)
                        len = size - used;
        }
 
-       gspca_frame_add(gspca_dev, INTER_PACKET,
-                       frame, data, len);
+       gspca_frame_add(gspca_dev, INTER_PACKET, data, len);
 }
 
 static int sd_setbrightness(struct gspca_dev *gspca_dev, __s32 val)
index 5f82efb93d9b8f67b2d63d67911e6615848ee7a8..282c707e5e812cea1bad5deb0af2076a60becb77 100644 (file)
@@ -1993,7 +1993,6 @@ static void do_autogain(struct gspca_dev *gspca_dev)
 /* scan the URB packets */
 /* This function is run at interrupt level. */
 static void sd_pkt_scan(struct gspca_dev *gspca_dev,
-                       struct gspca_frame *frame,      /* target */
                        u8 *data,                       /* isoc packet */
                        int len)                        /* iso packet length */
 {
@@ -2005,7 +2004,7 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev,
 
                /* end of frame */
                gspca_frame_add(gspca_dev, LAST_PACKET,
-                               frame, data, sof + 2);
+                               data, sof + 2);
                if (sd->ag_cnt < 0)
                        return;
 /* w1 w2 w3 */
@@ -2028,10 +2027,10 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev,
        if (gspca_dev->last_packet_type == LAST_PACKET) {
 
                /* put the JPEG 422 header */
-               gspca_frame_add(gspca_dev, FIRST_PACKET, frame,
+               gspca_frame_add(gspca_dev, FIRST_PACKET,
                        sd->jpeg_hdr, JPEG_HDR_SZ);
        }
-       gspca_frame_add(gspca_dev, INTER_PACKET, frame, data, len);
+       gspca_frame_add(gspca_dev, INTER_PACKET, data, len);
 }
 
 static int sd_setbrightness(struct gspca_dev *gspca_dev, __s32 val)
index fab7ef85a6c1dc34f9ca1c4e4f7e12febf6b560a..8bd844d319ea11d5c408834d0253ac3c24340d05 100644 (file)
@@ -899,8 +899,7 @@ static void sd_stop0(struct gspca_dev *gspca_dev)
 }
 
 static void sd_pkt_scan(struct gspca_dev *gspca_dev,
-                       struct gspca_frame *frame,      /* target */
-                       __u8 *data,                     /* isoc packet */
+                       u8 *data,                       /* isoc packet */
                        int len)                        /* iso packet length */
 {
        struct sd *sd = (struct sd *) gspca_dev;
@@ -913,11 +912,11 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev,
 /*                     gspca_dev->last_packet_type = DISCARD_PACKET; */
                        return;
                }
-               frame = gspca_frame_add(gspca_dev, LAST_PACKET, frame,
+               gspca_frame_add(gspca_dev, LAST_PACKET,
                                        ffd9, 2);
 
                /* put the JPEG header in the new frame */
-               gspca_frame_add(gspca_dev, FIRST_PACKET, frame,
+               gspca_frame_add(gspca_dev, FIRST_PACKET,
                        sd->jpeg_hdr, JPEG_HDR_SZ);
 
                data += SPCA500_OFFSET_DATA;
@@ -931,7 +930,7 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev,
        i = 0;
        do {
                if (data[i] == 0xff) {
-                       gspca_frame_add(gspca_dev, INTER_PACKET, frame,
+                       gspca_frame_add(gspca_dev, INTER_PACKET,
                                        data, i + 1);
                        len -= i;
                        data += i;
@@ -940,7 +939,7 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev,
                }
                i++;
        } while (i < len);
-       gspca_frame_add(gspca_dev, INTER_PACKET, frame, data, len);
+       gspca_frame_add(gspca_dev, INTER_PACKET, data, len);
 }
 
 static void setbrightness(struct gspca_dev *gspca_dev)
index b74a34218da05034f3ae77bc86b64e2bc8f9b8d1..d251f145a751f5ecd1732033d623df1f6aba0969 100644 (file)
@@ -2032,20 +2032,15 @@ static void sd_stop0(struct gspca_dev *gspca_dev)
 }
 
 static void sd_pkt_scan(struct gspca_dev *gspca_dev,
-                       struct gspca_frame *frame,      /* target */
-                       __u8 *data,                     /* isoc packet */
+                       u8 *data,                       /* isoc packet */
                        int len)                        /* iso packet length */
 {
        switch (data[0]) {
        case 0:                         /* start of frame */
-               frame = gspca_frame_add(gspca_dev,
-                                       LAST_PACKET,
-                                       frame,
-                                       data, 0);
+               gspca_frame_add(gspca_dev, LAST_PACKET, NULL, 0);
                data += SPCA501_OFFSET_DATA;
                len -= SPCA501_OFFSET_DATA;
-               gspca_frame_add(gspca_dev, FIRST_PACKET, frame,
-                               data, len);
+               gspca_frame_add(gspca_dev, FIRST_PACKET, data, len);
                return;
        case 0xff:                      /* drop */
 /*             gspca_dev->last_packet_type = DISCARD_PACKET; */
@@ -2053,8 +2048,7 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev,
        }
        data++;
        len--;
-       gspca_frame_add(gspca_dev, INTER_PACKET, frame,
-                       data, len);
+       gspca_frame_add(gspca_dev, INTER_PACKET, data, len);
 }
 
 static int sd_setbrightness(struct gspca_dev *gspca_dev, __s32 val)
index ea8c9fe2e96198b8197faad7c6127767ce604507..0f9232ff1281577c3dd4c7b57122f7ab2c4daf95 100644 (file)
@@ -739,26 +739,22 @@ static void sd_stop0(struct gspca_dev *gspca_dev)
 }
 
 static void sd_pkt_scan(struct gspca_dev *gspca_dev,
-                       struct gspca_frame *frame,      /* target */
                        u8 *data,                       /* isoc packet */
                        int len)                        /* iso packet length */
 {
        switch (data[0]) {
        case 0:                         /* start of frame */
-               frame = gspca_frame_add(gspca_dev, LAST_PACKET, frame,
-                                       data, 0);
+               gspca_frame_add(gspca_dev, LAST_PACKET, NULL, 0);
                data += SPCA50X_OFFSET_DATA;
                len -= SPCA50X_OFFSET_DATA;
-               gspca_frame_add(gspca_dev, FIRST_PACKET, frame,
-                               data, len);
+               gspca_frame_add(gspca_dev, FIRST_PACKET, data, len);
                break;
        case 0xff:                      /* drop */
                break;
        default:
                data += 1;
                len -= 1;
-               gspca_frame_add(gspca_dev, INTER_PACKET, frame,
-                               data, len);
+               gspca_frame_add(gspca_dev, INTER_PACKET, data, len);
                break;
        }
 }
index a199298a6419a4fef681cb50f5a446c1f094cab0..ab28cc23e4158707a18636d55d89689468e7449e 100644 (file)
@@ -543,18 +543,15 @@ static void sd_stopN(struct gspca_dev *gspca_dev)
 }
 
 static void sd_pkt_scan(struct gspca_dev *gspca_dev,
-                       struct gspca_frame *frame,      /* target */
-                       __u8 *data,                     /* isoc packet */
+                       u8 *data,                       /* isoc packet */
                        int len)                        /* iso packet length */
 {
        switch (data[0]) {
        case 0:                         /* start of frame */
-               frame = gspca_frame_add(gspca_dev, LAST_PACKET, frame,
-                                       data, 0);
+               gspca_frame_add(gspca_dev, LAST_PACKET, NULL, 0);
                data += SPCA50X_OFFSET_DATA;
                len -= SPCA50X_OFFSET_DATA;
-               gspca_frame_add(gspca_dev, FIRST_PACKET, frame,
-                               data, len);
+               gspca_frame_add(gspca_dev, FIRST_PACKET, data, len);
                break;
        case 0xff:                      /* drop */
 /*             gspca_dev->last_packet_type = DISCARD_PACKET; */
@@ -562,8 +559,7 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev,
        default:
                data += 1;
                len -= 1;
-               gspca_frame_add(gspca_dev, INTER_PACKET, frame,
-                               data, len);
+               gspca_frame_add(gspca_dev, INTER_PACKET, data, len);
                break;
        }
 }
index 9696c4caf5c931d70f2be9d42c71b516e093dd35..4d8e6cf75d5558bb44dbf6b5a472492312f83966 100644 (file)
@@ -1447,26 +1447,22 @@ static void sd_stopN(struct gspca_dev *gspca_dev)
 }
 
 static void sd_pkt_scan(struct gspca_dev *gspca_dev,
-                       struct gspca_frame *frame,      /* target */
                        u8 *data,                       /* isoc packet */
                        int len)                        /* iso packet length */
 {
        switch (data[0]) {
        case 0:                         /* start of frame */
-               frame = gspca_frame_add(gspca_dev, LAST_PACKET, frame,
-                                       data, 0);
+               gspca_frame_add(gspca_dev, LAST_PACKET, NULL, 0);
                data += SPCA508_OFFSET_DATA;
                len -= SPCA508_OFFSET_DATA;
-               gspca_frame_add(gspca_dev, FIRST_PACKET, frame,
-                               data, len);
+               gspca_frame_add(gspca_dev, FIRST_PACKET, data, len);
                break;
        case 0xff:                      /* drop */
                break;
        default:
                data += 1;
                len -= 1;
-               gspca_frame_add(gspca_dev, INTER_PACKET, frame,
-                               data, len);
+               gspca_frame_add(gspca_dev, INTER_PACKET, data, len);
                break;
        }
 }
index 27e82b35f3e7f15be7a3ea60337b58519d85cd44..58c2f0039af1f65198230dcd1ba5dd6c4c068a9c 100644 (file)
@@ -779,8 +779,7 @@ static void do_autogain(struct gspca_dev *gspca_dev)
 }
 
 static void sd_pkt_scan(struct gspca_dev *gspca_dev,
-                       struct gspca_frame *frame, /* target */
-                       __u8 *data,             /* isoc packet */
+                       u8 *data,               /* isoc packet */
                        int len)                /* iso packet length */
 {
        struct sd *sd = (struct sd *) gspca_dev;
@@ -788,12 +787,10 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev,
        len--;
        switch (*data++) {                      /* sequence number */
        case 0:                                 /* start of frame */
-               frame = gspca_frame_add(gspca_dev, LAST_PACKET, frame,
-                                       data, 0);
+               gspca_frame_add(gspca_dev, LAST_PACKET, NULL, 0);
                if (data[1] & 0x10) {
                        /* compressed bayer */
-                       gspca_frame_add(gspca_dev, FIRST_PACKET,
-                                       frame, data, len);
+                       gspca_frame_add(gspca_dev, FIRST_PACKET, data, len);
                } else {
                        /* raw bayer (with a header, which we skip) */
                        if (sd->chip_revision == Rev012A) {
@@ -803,14 +800,13 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev,
                                data += 16;
                                len -= 16;
                        }
-                       gspca_frame_add(gspca_dev, FIRST_PACKET,
-                                               frame, data, len);
+                       gspca_frame_add(gspca_dev, FIRST_PACKET, data, len);
                }
                return;
        case 0xff:                      /* drop (empty mpackets) */
                return;
        }
-       gspca_frame_add(gspca_dev, INTER_PACKET, frame, data, len);
+       gspca_frame_add(gspca_dev, INTER_PACKET, data, len);
 }
 
 /* rev 72a only */
index 547d1fd5191dfef4ba86b56ba24ce69f22e70aa1..1fcaca6a87f7f161352941ce5d7f4f95f11de64c 100644 (file)
@@ -214,7 +214,6 @@ static void sq905_dostream(struct work_struct *work)
 {
        struct sd *dev = container_of(work, struct sd, work_struct);
        struct gspca_dev *gspca_dev = &dev->gspca_dev;
-       struct gspca_frame *frame;
        int bytes_left; /* bytes remaining in current frame. */
        int data_len;   /* size to use for the next read. */
        int header_read; /* true if we have already read the frame header. */
@@ -266,18 +265,14 @@ static void sq905_dostream(struct work_struct *work)
                        } else {
                                packet_type = INTER_PACKET;
                        }
-                       frame = gspca_get_i_frame(gspca_dev);
-                       if (frame) {
-                               frame = gspca_frame_add(gspca_dev, packet_type,
-                                               frame, data, data_len);
-                               /* If entire frame fits in one packet we still
-                                  need to add a LAST_PACKET */
-                               if (packet_type == FIRST_PACKET &&
-                                   bytes_left == 0)
-                                       frame = gspca_frame_add(gspca_dev,
-                                                       LAST_PACKET,
-                                                       frame, data, 0);
-                       }
+                       gspca_frame_add(gspca_dev, packet_type,
+                                       data, data_len);
+                       /* If entire frame fits in one packet we still
+                          need to add a LAST_PACKET */
+                       if (packet_type == FIRST_PACKET &&
+                           bytes_left == 0)
+                               gspca_frame_add(gspca_dev, LAST_PACKET,
+                                               NULL, 0);
                }
                if (gspca_dev->present) {
                        /* acknowledge the frame */
index 81020f6f739ed9aef521683f0c1b2d15d4753e0c..d70b156872d6fd80e30c356557d473c19a7ff1ac 100644 (file)
@@ -115,7 +115,6 @@ static void sq905c_dostream(struct work_struct *work)
 {
        struct sd *dev = container_of(work, struct sd, work_struct);
        struct gspca_dev *gspca_dev = &dev->gspca_dev;
-       struct gspca_frame *frame;
        int bytes_left; /* bytes remaining in current frame. */
        int data_len;   /* size to use for the next read. */
        int act_len;
@@ -146,10 +145,8 @@ static void sq905c_dostream(struct work_struct *work)
                PDEBUG(D_STREAM, "bytes_left = 0x%x", bytes_left);
                /* We keep the header. It has other information, too. */
                packet_type = FIRST_PACKET;
-               frame = gspca_get_i_frame(gspca_dev);
-               if (frame)
-                       gspca_frame_add(gspca_dev, packet_type,
-                               frame, buffer, FRAME_HEADER_LEN);
+               gspca_frame_add(gspca_dev, packet_type,
+                               buffer, FRAME_HEADER_LEN);
                while (bytes_left > 0 && gspca_dev->present) {
                        data_len = bytes_left > SQ905C_MAX_TRANSFER ?
                                SQ905C_MAX_TRANSFER : bytes_left;
@@ -167,9 +164,8 @@ static void sq905c_dostream(struct work_struct *work)
                                packet_type = LAST_PACKET;
                        else
                                packet_type = INTER_PACKET;
-                       if (frame)
-                               gspca_frame_add(gspca_dev, packet_type,
-                                               frame, buffer, data_len);
+                       gspca_frame_add(gspca_dev, packet_type,
+                                       buffer, data_len);
                }
        }
 quit_stream:
index 47628964801e6c350c685ef99529068a9fccdbd7..8e23320d7ab7c35326f8c0879f720e8e9ed1d17b 100644 (file)
@@ -418,8 +418,7 @@ static void sd_stop0(struct gspca_dev *gspca_dev)
 }
 
 static void sd_pkt_scan(struct gspca_dev *gspca_dev,
-                       struct gspca_frame *frame,      /* target */
-                       __u8 *data,                     /* isoc packet */
+                       u8 *data,                       /* isoc packet */
                        int len)                        /* iso packet length */
 {
        struct sd *sd = (struct sd *) gspca_dev;
@@ -435,11 +434,11 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev,
         *              (without ending - ff d9)
         */
        if (data[0] == 0xff && data[1] == 0xfe) {
-               frame = gspca_frame_add(gspca_dev, LAST_PACKET, frame,
-                                       ffd9, 2);
+               gspca_frame_add(gspca_dev, LAST_PACKET,
+                               ffd9, 2);
 
                /* put the JPEG 411 header */
-               gspca_frame_add(gspca_dev, FIRST_PACKET, frame,
+               gspca_frame_add(gspca_dev, FIRST_PACKET,
                        sd->jpeg_hdr, JPEG_HDR_SZ);
 
                /* beginning of the frame */
@@ -447,7 +446,7 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev,
                data += STKHDRSZ;
                len -= STKHDRSZ;
        }
-       gspca_frame_add(gspca_dev, INTER_PACKET, frame, data, len);
+       gspca_frame_add(gspca_dev, INTER_PACKET, data, len);
 }
 
 static int sd_setbrightness(struct gspca_dev *gspca_dev, __s32 val)
index 0981ce14235da13e4f3cb97cce927700c14f4e4d..2a69d7ccb50dd07434c75cdbc3cf30860a4655a9 100644 (file)
@@ -281,8 +281,7 @@ static void sd_stop0(struct gspca_dev *gspca_dev)
 }
 
 static void sd_pkt_scan(struct gspca_dev *gspca_dev,
-                       struct gspca_frame *frame,
-                       __u8 *data,
+                       u8 *data,
                        int len)
 {
        struct sd *sd = (struct sd *) gspca_dev;
@@ -299,10 +298,10 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev,
        /* Finish the previous frame, we do this upon reception of the next
           packet, even though it is already complete so that the strange 16
           byte packets send after a corrupt frame can discard it. */
-       frame = gspca_frame_add(gspca_dev, LAST_PACKET, frame, NULL, 0);
+       gspca_frame_add(gspca_dev, LAST_PACKET, NULL, 0);
 
        /* Store the just received frame */
-       gspca_frame_add(gspca_dev, FIRST_PACKET, frame, data, len);
+       gspca_frame_add(gspca_dev, FIRST_PACKET, data, len);
 }
 
 /* sub-driver description */
index bfae63f5584c408f555f63b0a5ef8124fa566f5f..5d0241bb161182c97be03c49220326bbcf4e2552 100644 (file)
@@ -312,8 +312,7 @@ out:
  * The 0005 and 0100 chunks seem to appear only in compressed stream.
  */
 static void stv06xx_pkt_scan(struct gspca_dev *gspca_dev,
-                       struct gspca_frame *frame,      /* target */
-                       __u8 *data,                     /* isoc packet */
+                       u8 *data,                       /* isoc packet */
                        int len)                        /* iso packet length */
 {
        struct sd *sd = (struct sd *) gspca_dev;
@@ -366,7 +365,7 @@ frame_data:
                                sd->to_skip -= skip;
                        }
 
-                       gspca_frame_add(gspca_dev, INTER_PACKET, frame,
+                       gspca_frame_add(gspca_dev, INTER_PACKET,
                                        data, chunk_len);
                        break;
 
@@ -378,7 +377,7 @@ frame_data:
 
                        /* Create a new frame, chunk length should be zero */
                        gspca_frame_add(gspca_dev, FIRST_PACKET,
-                                       frame, data, 0);
+                                       NULL, 0);
 
                        if (sd->bridge == BRIDGE_ST6422)
                                sd->to_skip = gspca_dev->width * 4;
@@ -394,8 +393,8 @@ frame_data:
                        PDEBUG(D_PACK, "End of frame detected");
 
                        /* Complete the last frame (if any) */
-                       frame = gspca_frame_add(gspca_dev, LAST_PACKET,
-                                               frame, data, 0);
+                       gspca_frame_add(gspca_dev, LAST_PACKET,
+                                       NULL, 0);
 
                        if (chunk_len)
                                PDEBUG(D_ERR, "Chunk length is "
index aa8f995ce04ec1f263df04e1b123923fc2689ca8..682652cb7fe19e613af1a059802fafd44df99f25 100644 (file)
@@ -1116,7 +1116,6 @@ static void sd_stop0(struct gspca_dev *gspca_dev)
 }
 
 static void sd_pkt_scan(struct gspca_dev *gspca_dev,
-                       struct gspca_frame *frame,      /* target */
                        u8 *data,                       /* isoc packet */
                        int len)                        /* iso packet length */
 {
@@ -1186,11 +1185,11 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev,
                break;
        }
        if (sof) {              /* start of frame */
-               frame = gspca_frame_add(gspca_dev, LAST_PACKET, frame,
-                                       ffd9, 2);
+               gspca_frame_add(gspca_dev, LAST_PACKET,
+                               ffd9, 2);
 
                /* put the JPEG header in the new frame */
-               gspca_frame_add(gspca_dev, FIRST_PACKET, frame,
+               gspca_frame_add(gspca_dev, FIRST_PACKET,
                        sd->jpeg_hdr, JPEG_HDR_SZ);
        }
 
@@ -1198,7 +1197,7 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev,
        i = 0;
        do {
                if (data[i] == 0xff) {
-                       gspca_frame_add(gspca_dev, INTER_PACKET, frame,
+                       gspca_frame_add(gspca_dev, INTER_PACKET,
                                        data, i + 1);
                        len -= i;
                        data += i;
@@ -1207,7 +1206,7 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev,
                }
                i++;
        } while (i < len);
-       gspca_frame_add(gspca_dev, INTER_PACKET, frame, data, len);
+       gspca_frame_add(gspca_dev, INTER_PACKET, data, len);
 }
 
 static int sd_setbrightness(struct gspca_dev *gspca_dev, __s32 val)
index 1d321c30d22f57c630fafa87d2bf52eb7025c6c1..55ef6a7444279b3dda95ade85334c6f598667858 100644 (file)
@@ -938,7 +938,6 @@ static void sd_stopN(struct gspca_dev *gspca_dev)
 }
 
 static void sd_pkt_scan(struct gspca_dev *gspca_dev,
-                       struct gspca_frame *frame,      /* target */
                        u8 *data,                       /* isoc packet */
                        int len)                        /* iso packet length */
 {
@@ -956,9 +955,9 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev,
                /* extra bytes....., could be processed too but would be
                 * a waste of time, right now leave the application and
                 * libjpeg do it for ourserlves.. */
-               frame = gspca_frame_add(gspca_dev, LAST_PACKET, frame,
+               gspca_frame_add(gspca_dev, LAST_PACKET,
                                        ffd9, 2);
-               gspca_frame_add(gspca_dev, FIRST_PACKET, frame, data, len);
+               gspca_frame_add(gspca_dev, FIRST_PACKET, data, len);
                return;
        }
 
@@ -967,7 +966,7 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev,
                 * other's do not include it... */
                len -= 2;
        }
-       gspca_frame_add(gspca_dev, INTER_PACKET, frame, data, len);
+       gspca_frame_add(gspca_dev, INTER_PACKET, data, len);
 }
 
 static int sd_setbrightness(struct gspca_dev *gspca_dev, __s32 val)
index 4b44dde9f8b8f8525c76c171def5b9d7d9289445..b74a3b6489c77a87087bcd6b22513df536eead79 100644 (file)
@@ -398,8 +398,7 @@ static void sd_stopN(struct gspca_dev *gspca_dev)
 }
 
 static void sd_pkt_scan(struct gspca_dev *gspca_dev,
-                       struct gspca_frame *frame,      /* target */
-                       __u8 *data,                     /* isoc packet */
+                       u8 *data,                       /* isoc packet */
                        int len)                        /* iso packet length */
 {
        struct sd *sd = (struct sd *) gspca_dev;
@@ -424,9 +423,9 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev,
         * - 4 bytes
         */
        gspca_frame_add(gspca_dev, packet_type0,
-                       frame, data + 2, gspca_dev->width);
+                       data + 2, gspca_dev->width);
        gspca_frame_add(gspca_dev, packet_type1,
-                       frame, data + gspca_dev->width + 5, gspca_dev->width);
+                       data + gspca_dev->width + 5, gspca_dev->width);
 }
 
 static int sd_setbrightness(struct gspca_dev *gspca_dev, __s32 val)
index 589042f6adbe9867fdc900e4233b943589478f6e..26675236fbd21a08d063ebf547799ad59c14d5dc 100644 (file)
@@ -2987,7 +2987,6 @@ static void sd_stop0(struct gspca_dev *gspca_dev)
 }
 
 static void sd_pkt_scan(struct gspca_dev *gspca_dev,
-                       struct gspca_frame *frame,      /* target */
                        u8 *data,                       /* isoc packet */
                        int len)                        /* iso pkt length */
 {
@@ -2996,21 +2995,25 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev,
        if (data[0] == 0xff && data[1] == 0xd8) {
                PDEBUG(D_PACK,
                        "vc032x header packet found len %d", len);
-               frame = gspca_frame_add(gspca_dev, LAST_PACKET, frame,
-                                               data, 0);
+               gspca_frame_add(gspca_dev, LAST_PACKET, NULL, 0);
                data += sd->image_offset;
                len -= sd->image_offset;
-               gspca_frame_add(gspca_dev, FIRST_PACKET, frame,
-                               data, len);
+               gspca_frame_add(gspca_dev, FIRST_PACKET, data, len);
                return;
        }
 
        /* The vc0321 sends some additional data after sending the complete
         * frame, we ignore this. */
-       if (sd->bridge == BRIDGE_VC0321
-           && len > frame->v4l2_buf.length - (frame->data_end - frame->data))
-               len = frame->v4l2_buf.length - (frame->data_end - frame->data);
-       gspca_frame_add(gspca_dev, INTER_PACKET, frame, data, len);
+       if (sd->bridge == BRIDGE_VC0321) {
+               struct gspca_frame *frame;
+               int l;
+
+               frame = gspca_get_i_frame(gspca_dev);
+               l = frame->data_end - frame->data;
+               if (len > frame->v4l2_buf.length - l)
+                       len = frame->v4l2_buf.length - l;
+       }
+       gspca_frame_add(gspca_dev, INTER_PACKET, data, len);
 }
 
 static int sd_sethflip(struct gspca_dev *gspca_dev, __s32 val)
index 4f9add79ce13e7de9fbf29357bd60da8c1bc3fbb..2fffe203bed876fdcaf4713ffe32edabd4b5d39f 100644 (file)
@@ -576,8 +576,7 @@ static void w9968cf_stop0(struct sd *sd)
    to be precise it sends: SOI, SOF, DRI, SOS, Y-data, SOS, U-data, SOS,
    V-data, EOI. */
 static void w9968cf_pkt_scan(struct gspca_dev *gspca_dev,
-                       struct gspca_frame *frame,      /* target */
-                       __u8 *data,                     /* isoc packet */
+                       u8 *data,                       /* isoc packet */
                        int len)                        /* iso packet length */
 {
        struct sd *sd = (struct sd *) gspca_dev;
@@ -587,9 +586,9 @@ static void w9968cf_pkt_scan(struct gspca_dev *gspca_dev,
                if (len >= 2 &&
                    data[0] == 0xff &&
                    data[1] == 0xd8) {
-                       frame = gspca_frame_add(gspca_dev, LAST_PACKET, frame,
+                       gspca_frame_add(gspca_dev, LAST_PACKET,
                                        NULL, 0);
-                       gspca_frame_add(gspca_dev, FIRST_PACKET, frame,
+                       gspca_frame_add(gspca_dev, FIRST_PACKET,
                                        sd->jpeg_hdr, JPEG_HDR_SZ);
                        /* Strip the ff d8, our own header (which adds
                           huffman and quantization tables) already has this */
@@ -599,12 +598,12 @@ static void w9968cf_pkt_scan(struct gspca_dev *gspca_dev,
        } else {
                /* In UYVY mode an empty packet signals EOF */
                if (gspca_dev->empty_packet) {
-                       frame = gspca_frame_add(gspca_dev, LAST_PACKET, frame,
+                       gspca_frame_add(gspca_dev, LAST_PACKET,
                                                NULL, 0);
-                       gspca_frame_add(gspca_dev, FIRST_PACKET, frame,
+                       gspca_frame_add(gspca_dev, FIRST_PACKET,
                                        NULL, 0);
                        gspca_dev->empty_packet = 0;
                }
        }
-       gspca_frame_add(gspca_dev, INTER_PACKET, frame, data, len);
+       gspca_frame_add(gspca_dev, INTER_PACKET, data, len);
 }
index 113050792246a079ad72502f3bdf8b1251eadf17..864974b6114579bf17340fcedae18c10e88c45d8 100644 (file)
@@ -6974,17 +6974,16 @@ static void sd_stop0(struct gspca_dev *gspca_dev)
 }
 
 static void sd_pkt_scan(struct gspca_dev *gspca_dev,
-                       struct gspca_frame *frame,
-                       __u8 *data,
+                       u8 *data,
                        int len)
 {
        struct sd *sd = (struct sd *) gspca_dev;
 
        if (data[0] == 0xff && data[1] == 0xd8) {       /* start of frame */
-               frame = gspca_frame_add(gspca_dev, LAST_PACKET, frame,
-                                       data, 0);
+               gspca_frame_add(gspca_dev, LAST_PACKET,
+                                       NULL, 0);
                /* put the JPEG header in the new frame */
-               gspca_frame_add(gspca_dev, FIRST_PACKET, frame,
+               gspca_frame_add(gspca_dev, FIRST_PACKET,
                        sd->jpeg_hdr, JPEG_HDR_SZ);
 
                /* remove the webcam's header:
@@ -6996,7 +6995,7 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev,
                data += 18;
                len -= 18;
        }
-       gspca_frame_add(gspca_dev, INTER_PACKET, frame, data, len);
+       gspca_frame_add(gspca_dev, INTER_PACKET, data, len);
 }
 
 static int sd_setbrightness(struct gspca_dev *gspca_dev, __s32 val)