summaryrefslogtreecommitdiff
path: root/drivers/media/platform/vivi.c
diff options
context:
space:
mode:
authorHans Verkuil <hans.verkuil@cisco.com>2014-02-10 15:08:45 +0400
committerMauro Carvalho Chehab <m.chehab@samsung.com>2014-02-24 17:57:54 +0400
commitf0af5e8f018daa83a0e8cfe7d406f81be82ae45d (patch)
treebdf89b26b943153b669bef77317d78b100924f8c /drivers/media/platform/vivi.c
parentab58a30162f0383c06388af522bc889a5da38fc6 (diff)
downloadlinux-f0af5e8f018daa83a0e8cfe7d406f81be82ae45d.tar.xz
[media] vivi: fix sequence counting
The sequence counting was not reset to 0 between each streaming run, and it was increased only every other frame. This is incorrect behavior: the confusion is with FIELD_ALTERNATE systems where each field is transmitted separately and only when both fields have been received is the frame sequence number increased. Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
Diffstat (limited to 'drivers/media/platform/vivi.c')
-rw-r--r--drivers/media/platform/vivi.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/drivers/media/platform/vivi.c b/drivers/media/platform/vivi.c
index 2d4e73b45c5e..eb09fe6b39ef 100644
--- a/drivers/media/platform/vivi.c
+++ b/drivers/media/platform/vivi.c
@@ -254,7 +254,7 @@ struct vivi_dev {
struct v4l2_fract timeperframe;
unsigned int width, height;
struct vb2_queue vb_vidq;
- unsigned int field_count;
+ unsigned int seq_count;
u8 bars[9][3];
u8 line[MAX_WIDTH * 8] __attribute__((__aligned__(4)));
@@ -675,8 +675,7 @@ static void vivi_fillbuff(struct vivi_dev *dev, struct vivi_buffer *buf)
dev->mv_count += 2;
buf->vb.v4l2_buf.field = V4L2_FIELD_INTERLACED;
- dev->field_count++;
- buf->vb.v4l2_buf.sequence = dev->field_count >> 1;
+ buf->vb.v4l2_buf.sequence = dev->seq_count++;
v4l2_get_timestamp(&buf->vb.v4l2_buf.timestamp);
}
@@ -901,7 +900,9 @@ static void buffer_queue(struct vb2_buffer *vb)
static int start_streaming(struct vb2_queue *vq, unsigned int count)
{
struct vivi_dev *dev = vb2_get_drv_priv(vq);
+
dprintk(dev, 1, "%s\n", __func__);
+ dev->seq_count = 0;
return vivi_start_generating(dev);
}