From 15513c12e3c5f5e7c683865b3e019cf90babab8f Mon Sep 17 00:00:00 2001 From: Hans Verkuil Date: Fri, 15 Mar 2013 13:16:49 -0300 Subject: [PATCH] [media] solo6x10: fix sequence handling Signed-off-by: Hans Verkuil Signed-off-by: Mauro Carvalho Chehab --- drivers/staging/media/solo6x10/solo6x10.h | 2 ++ drivers/staging/media/solo6x10/v4l2-enc.c | 3 ++- drivers/staging/media/solo6x10/v4l2.c | 3 ++- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/drivers/staging/media/solo6x10/solo6x10.h b/drivers/staging/media/solo6x10/solo6x10.h index 6c00f07..94ac294 100644 --- a/drivers/staging/media/solo6x10/solo6x10.h +++ b/drivers/staging/media/solo6x10/solo6x10.h @@ -173,6 +173,7 @@ struct solo_enc_dev { u32 fmt; enum solo_enc_types type; + u32 sequence; struct vb2_queue vidq; struct list_head vidq_active; int desc_count; @@ -267,6 +268,7 @@ struct solo_dev { /* Buffer handling */ struct vb2_queue vidq; struct vb2_alloc_ctx *alloc_ctx; + u32 sequence; struct task_struct *kthread; struct mutex lock; spinlock_t slock; diff --git a/drivers/staging/media/solo6x10/v4l2-enc.c b/drivers/staging/media/solo6x10/v4l2-enc.c index f804c93..4fbfb35 100644 --- a/drivers/staging/media/solo6x10/v4l2-enc.c +++ b/drivers/staging/media/solo6x10/v4l2-enc.c @@ -269,6 +269,7 @@ static int solo_enc_on(struct solo_enc_dev *solo_enc) /* Make sure to do a bandwidth check */ if (solo_enc->bw_weight > solo_dev->enc_bw_remain) return -EBUSY; + solo_enc->sequence = 0; solo_dev->enc_bw_remain -= solo_enc->bw_weight; if (solo_enc->type == SOLO_ENC_TYPE_EXT) @@ -522,7 +523,7 @@ static int solo_enc_fillbuf(struct solo_enc_dev *solo_enc, ret = solo_fill_jpeg(solo_enc, vb, vh); 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_usec = vh->usec; } diff --git a/drivers/staging/media/solo6x10/v4l2.c b/drivers/staging/media/solo6x10/v4l2.c index b5643ab..02749a3 100644 --- a/drivers/staging/media/solo6x10/v4l2.c +++ b/drivers/staging/media/solo6x10/v4l2.c @@ -224,7 +224,7 @@ finish_buf: if (!error) { vb2_set_plane_payload(vb, 0, 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); } @@ -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); + solo_dev->sequence = 0; return solo_start_thread(solo_dev); } -- 2.7.4