Commit f0af5e8f authored by Hans Verkuil's avatar Hans Verkuil Committed by Mauro Carvalho Chehab

[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: default avatarHans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: default avatarMauro Carvalho Chehab <m.chehab@samsung.com>
parent ab58a301
...@@ -254,7 +254,7 @@ struct vivi_dev { ...@@ -254,7 +254,7 @@ struct vivi_dev {
struct v4l2_fract timeperframe; struct v4l2_fract timeperframe;
unsigned int width, height; unsigned int width, height;
struct vb2_queue vb_vidq; struct vb2_queue vb_vidq;
unsigned int field_count; unsigned int seq_count;
u8 bars[9][3]; u8 bars[9][3];
u8 line[MAX_WIDTH * 8] __attribute__((__aligned__(4))); u8 line[MAX_WIDTH * 8] __attribute__((__aligned__(4)));
...@@ -675,8 +675,7 @@ static void vivi_fillbuff(struct vivi_dev *dev, struct vivi_buffer *buf) ...@@ -675,8 +675,7 @@ static void vivi_fillbuff(struct vivi_dev *dev, struct vivi_buffer *buf)
dev->mv_count += 2; dev->mv_count += 2;
buf->vb.v4l2_buf.field = V4L2_FIELD_INTERLACED; buf->vb.v4l2_buf.field = V4L2_FIELD_INTERLACED;
dev->field_count++; buf->vb.v4l2_buf.sequence = dev->seq_count++;
buf->vb.v4l2_buf.sequence = dev->field_count >> 1;
v4l2_get_timestamp(&buf->vb.v4l2_buf.timestamp); v4l2_get_timestamp(&buf->vb.v4l2_buf.timestamp);
} }
...@@ -901,7 +900,9 @@ static void buffer_queue(struct vb2_buffer *vb) ...@@ -901,7 +900,9 @@ static void buffer_queue(struct vb2_buffer *vb)
static int start_streaming(struct vb2_queue *vq, unsigned int count) static int start_streaming(struct vb2_queue *vq, unsigned int count)
{ {
struct vivi_dev *dev = vb2_get_drv_priv(vq); struct vivi_dev *dev = vb2_get_drv_priv(vq);
dprintk(dev, 1, "%s\n", __func__); dprintk(dev, 1, "%s\n", __func__);
dev->seq_count = 0;
return vivi_start_generating(dev); return vivi_start_generating(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