The patch number 9859 was added via Jean-Francois Moine <moin...@free.fr>
to http://linuxtv.org/hg/v4l-dvb master development tree.

Kernel patches in this development tree may be modified to be backward
compatible with older kernels. Compatibility modifications will be
removed before inclusion into the mainstream Kernel

If anyone has any objections, please let us know by sending a message to:
        v4l-dvb-maintai...@linuxtv.org

------

From: Jim Paris  <j...@jtan.com>
gspca - ov534: Fix frame size so we don't miss the last pixel.


The frame size is too small, so we lose the last YUYV pixel.
Fix the setup and remove the last_pixel hack.

Priority: normal

Signed-off-by: Jim Paris <j...@jtan.com>
Signed-off-by: Jean-Francois Moine <moin...@free.fr>


---

 linux/drivers/media/video/gspca/ov534.c |   33 ++++++------------------
 1 file changed, 9 insertions(+), 24 deletions(-)

diff -r b73cbd7b3fb1 -r 42576099d1d1 linux/drivers/media/video/gspca/ov534.c
--- a/linux/drivers/media/video/gspca/ov534.c   Thu Dec 04 08:28:27 2008 +0100
+++ b/linux/drivers/media/video/gspca/ov534.c   Thu Dec 04 08:36:14 2008 +0100
@@ -197,9 +197,9 @@ static const __u8 ov534_reg_initdata[][2
        { 0x1d, 0x40 },
        { 0x1d, 0x02 },
        { 0x1d, 0x00 },
-       { 0x1d, 0x02 },
-       { 0x1d, 0x57 },
-       { 0x1d, 0xff },
+       { 0x1d, 0x02 }, /* frame size 0x025800 * 4 = 614400 */
+       { 0x1d, 0x58 }, /* frame size */
+       { 0x1d, 0x00 }, /* frame size */
 
        { 0x8d, 0x1c },
        { 0x8e, 0x80 },
@@ -409,30 +409,15 @@ static void sd_pkt_scan(struct gspca_dev
 static void sd_pkt_scan(struct gspca_dev *gspca_dev, struct gspca_frame *frame,
                        __u8 *data, int len)
 {
-       /*
-        * The current camera setup doesn't stream the last pixel, so we set it
-        * to a dummy value
-        */
-       __u8 last[4] = { 0, 0, 0, 0 };
        int framesize = frame->v4l2_buf.length;
 
-       PDEBUG(D_PACK, "");
-       PDEBUG(D_PACK, "** packet len = %d, framesize = %d", len, framesize);
-       PDEBUG(D_PACK, "** frame->data_end - frame->data + len = %d",
-                       frame->data_end - frame->data + len);
-
-#if 0
-       /* Can this check mask some tranfer errors?  */
-       if (len < gspca_dev->cam.bulk_size) {
-#else
-       if (frame->data_end - frame->data + len == framesize - 4) {
-#endif
-               PDEBUG(D_PACK, "   end of frame!");
-               gspca_frame_add(gspca_dev, INTER_PACKET, frame, data, len);
-               frame = gspca_frame_add(gspca_dev, LAST_PACKET, frame, last, 4);
-               gspca_frame_add(gspca_dev, FIRST_PACKET, frame, data, 0);
+       if (len == framesize) {
+               frame = gspca_frame_add(gspca_dev, FIRST_PACKET, frame,
+                                       data, len);
+               frame = gspca_frame_add(gspca_dev, LAST_PACKET, frame, data, 0);
        } else
-               gspca_frame_add(gspca_dev, INTER_PACKET, frame, data, len);
+               PDEBUG(D_PACK, "packet len = %d, framesize = %d", len,
+                      framesize);
 }
 
 /* sub-driver description */


---

Patch is available at: 
http://linuxtv.org/hg/v4l-dvb/rev/42576099d1d1e39e66b609db20e996b66abd1832

_______________________________________________
linuxtv-commits mailing list
linuxtv-commits@linuxtv.org
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linuxtv-commits

Reply via email to