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

[media] solo6x10: fix sequence handling

Signed-off-by: default avatarHans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 9a8bfe9f
...@@ -173,6 +173,7 @@ struct solo_enc_dev { ...@@ -173,6 +173,7 @@ struct solo_enc_dev {
u32 fmt; u32 fmt;
enum solo_enc_types type; enum solo_enc_types type;
u32 sequence;
struct vb2_queue vidq; struct vb2_queue vidq;
struct list_head vidq_active; struct list_head vidq_active;
int desc_count; int desc_count;
...@@ -267,6 +268,7 @@ struct solo_dev { ...@@ -267,6 +268,7 @@ struct solo_dev {
/* Buffer handling */ /* Buffer handling */
struct vb2_queue vidq; struct vb2_queue vidq;
struct vb2_alloc_ctx *alloc_ctx; struct vb2_alloc_ctx *alloc_ctx;
u32 sequence;
struct task_struct *kthread; struct task_struct *kthread;
struct mutex lock; struct mutex lock;
spinlock_t slock; spinlock_t slock;
......
...@@ -269,6 +269,7 @@ static int solo_enc_on(struct solo_enc_dev *solo_enc) ...@@ -269,6 +269,7 @@ static int solo_enc_on(struct solo_enc_dev *solo_enc)
/* Make sure to do a bandwidth check */ /* Make sure to do a bandwidth check */
if (solo_enc->bw_weight > solo_dev->enc_bw_remain) if (solo_enc->bw_weight > solo_dev->enc_bw_remain)
return -EBUSY; return -EBUSY;
solo_enc->sequence = 0;
solo_dev->enc_bw_remain -= solo_enc->bw_weight; solo_dev->enc_bw_remain -= solo_enc->bw_weight;
if (solo_enc->type == SOLO_ENC_TYPE_EXT) if (solo_enc->type == SOLO_ENC_TYPE_EXT)
...@@ -522,7 +523,7 @@ static int solo_enc_fillbuf(struct solo_enc_dev *solo_enc, ...@@ -522,7 +523,7 @@ static int solo_enc_fillbuf(struct solo_enc_dev *solo_enc,
ret = solo_fill_jpeg(solo_enc, vb, vh); ret = solo_fill_jpeg(solo_enc, vb, vh);
if (!ret) { if (!ret) {
vb->v4l2_buf.sequence++; vb->v4l2_buf.sequence = solo_enc->sequence++;
vb->v4l2_buf.timestamp.tv_sec = vh->sec; vb->v4l2_buf.timestamp.tv_sec = vh->sec;
vb->v4l2_buf.timestamp.tv_usec = vh->usec; vb->v4l2_buf.timestamp.tv_usec = vh->usec;
} }
......
...@@ -224,7 +224,7 @@ static void solo_fillbuf(struct solo_dev *solo_dev, ...@@ -224,7 +224,7 @@ static void solo_fillbuf(struct solo_dev *solo_dev,
if (!error) { if (!error) {
vb2_set_plane_payload(vb, 0, vb2_set_plane_payload(vb, 0,
solo_vlines(solo_dev) * solo_bytesperline(solo_dev)); solo_vlines(solo_dev) * solo_bytesperline(solo_dev));
vb->v4l2_buf.sequence++; vb->v4l2_buf.sequence = solo_dev->sequence++;
v4l2_get_timestamp(&vb->v4l2_buf.timestamp); v4l2_get_timestamp(&vb->v4l2_buf.timestamp);
} }
...@@ -332,6 +332,7 @@ static int solo_start_streaming(struct vb2_queue *q, unsigned int count) ...@@ -332,6 +332,7 @@ static int solo_start_streaming(struct vb2_queue *q, unsigned int count)
{ {
struct solo_dev *solo_dev = vb2_get_drv_priv(q); struct solo_dev *solo_dev = vb2_get_drv_priv(q);
solo_dev->sequence = 0;
return solo_start_thread(solo_dev); return solo_start_thread(solo_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