[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>
This commit is contained in:
parent
ab58a30162
commit
f0af5e8f01
1 changed files with 4 additions and 3 deletions
|
@ -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)
|
||||||
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)
|
||||||
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue