aboutsummaryrefslogtreecommitdiff
path: root/drivers/media/video/gspca
diff options
context:
space:
mode:
authorJim Paris <jim@jtan.com>2008-12-04 04:36:14 -0300
committerMauro Carvalho Chehab <mchehab@redhat.com>2008-12-30 09:38:54 -0200
commit5ea9c4def8154a5be836dd31cbd97f49fd34ea8f (patch)
tree7e30ff4d8284dde1526570ce9b815473e959934b /drivers/media/video/gspca
parent47dfd21fbf4ba303b5fdfad6f4e110e57990803c (diff)
V4L/DVB (9859): 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. Signed-off-by: Jim Paris <jim@jtan.com> Signed-off-by: Jean-Francois Moine <moinejf@free.fr> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/video/gspca')
-rw-r--r--drivers/media/video/gspca/ov534.c28
1 files changed, 9 insertions, 19 deletions
diff --git a/drivers/media/video/gspca/ov534.c b/drivers/media/video/gspca/ov534.c
index ee08e30e23c..79bb6241d27 100644
--- a/drivers/media/video/gspca/ov534.c
+++ b/drivers/media/video/gspca/ov534.c
@@ -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,25 +409,15 @@ static void sd_stopN(struct gspca_dev *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 (frame->data_end - frame->data + len == framesize - 4) {
- 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 */