All of lore.kernel.org
 help / color / mirror / Atom feed
From: Steve Longerbeam <slongerbeam@gmail.com>
To: Peter Seiderer <ps.report@gmx.net>, linux-media@vger.kernel.org
Cc: devel@driverdev.osuosl.org,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	linux-kernel@vger.kernel.org,
	Philipp Zabel <p.zabel@pengutronix.de>,
	Steve Longerbeam <slongerbeam@gmail.com>,
	Mauro Carvalho Chehab <mchehab@kernel.org>
Subject: Re: [PATCH v4 2/2] media: staging/imx: fill vb2_v4l2_buffer sequence entry
Date: Fri, 16 Mar 2018 10:05:44 -0700	[thread overview]
Message-ID: <892dd00e-83bc-7781-6684-603ff89378cd@gmail.com> (raw)
In-Reply-To: <20180315191323.6028-2-ps.report@gmx.net>

Reviewed-by: Steve Longerbeam <steve_longerbeam@mentor.com>


On 03/15/2018 12:13 PM, Peter Seiderer wrote:
> - enables gstreamer v4l2src lost frame detection, e.g:
>
>    0:00:08.685185668  348  0x54f520 WARN  v4l2src gstv4l2src.c:970:gst_v4l2src_create:<v4l2src0> lost frames detected: count = 141 - ts: 0:00:08.330177332
>
> - fixes v4l2-compliance test failure:
>
>    Streaming ioctls:
>            test read/write: OK (Not Supported)
>                Video Capture:
>                    Buffer: 0 Sequence: 0 Field: None Timestamp: 92.991450s
>                    Buffer: 1 Sequence: 0 Field: None Timestamp: 93.008135s
>                    fail: v4l2-test-buffers.cpp(294): (int)g_sequence() < seq.last_seq + 1
>                    fail: v4l2-test-buffers.cpp(707): buf.check(q, last_seq)
>
> Signed-off-by: Peter Seiderer <ps.report@gmx.net>
> ---
> Changes in v2:
>    - fill vb2_v4l2_buffer sequence entry in imx-ic-prpencvf too
>      (suggested by Steve Longerbeam)
>
> Changes in v3:
>    - add changelog (suggested by Greg Kroah-Hartman, Fabio Estevam
>      and Dan Carpenter) and patch history
>    - use u32 (instead of __u32) (suggested by Dan Carpenter)
>    - let sequence counter start with zero, keeping v4l2-compliance
>      testing happy (needs additional setting of field to a valid
>      value, patch will follow soon)
>
> Changes in v4:
>    - add v4l2-compliance test failure to changelog
>    - reorder frame_sequence increment and assignement to
>      avoid -1 as start value (suggeted by Steve Longerbeam)
> ---
>   drivers/staging/media/imx/imx-ic-prpencvf.c | 4 ++++
>   drivers/staging/media/imx/imx-media-csi.c   | 4 ++++
>   2 files changed, 8 insertions(+)
>
> diff --git a/drivers/staging/media/imx/imx-ic-prpencvf.c b/drivers/staging/media/imx/imx-ic-prpencvf.c
> index ffeb017c73b2..28f41caba05d 100644
> --- a/drivers/staging/media/imx/imx-ic-prpencvf.c
> +++ b/drivers/staging/media/imx/imx-ic-prpencvf.c
> @@ -103,6 +103,7 @@ struct prp_priv {
>   	int nfb4eof_irq;
>   
>   	int stream_count;
> +	u32 frame_sequence; /* frame sequence counter */
>   	bool last_eof;  /* waiting for last EOF at stream off */
>   	bool nfb4eof;    /* NFB4EOF encountered during streaming */
>   	struct completion last_eof_comp;
> @@ -211,12 +212,14 @@ static void prp_vb2_buf_done(struct prp_priv *priv, struct ipuv3_channel *ch)
>   	done = priv->active_vb2_buf[priv->ipu_buf_num];
>   	if (done) {
>   		done->vbuf.field = vdev->fmt.fmt.pix.field;
> +		done->vbuf.sequence = priv->frame_sequence;
>   		vb = &done->vbuf.vb2_buf;
>   		vb->timestamp = ktime_get_ns();
>   		vb2_buffer_done(vb, priv->nfb4eof ?
>   				VB2_BUF_STATE_ERROR : VB2_BUF_STATE_DONE);
>   	}
>   
> +	priv->frame_sequence++;
>   	priv->nfb4eof = false;
>   
>   	/* get next queued buffer */
> @@ -638,6 +641,7 @@ static int prp_start(struct prp_priv *priv)
>   
>   	/* init EOF completion waitq */
>   	init_completion(&priv->last_eof_comp);
> +	priv->frame_sequence = 0;
>   	priv->last_eof = false;
>   	priv->nfb4eof = false;
>   
> diff --git a/drivers/staging/media/imx/imx-media-csi.c b/drivers/staging/media/imx/imx-media-csi.c
> index 5f69117b5811..3f2ce05848f3 100644
> --- a/drivers/staging/media/imx/imx-media-csi.c
> +++ b/drivers/staging/media/imx/imx-media-csi.c
> @@ -111,6 +111,7 @@ struct csi_priv {
>   	struct v4l2_ctrl_handler ctrl_hdlr;
>   
>   	int stream_count; /* streaming counter */
> +	u32 frame_sequence; /* frame sequence counter */
>   	bool last_eof;   /* waiting for last EOF at stream off */
>   	bool nfb4eof;    /* NFB4EOF encountered during streaming */
>   	struct completion last_eof_comp;
> @@ -237,12 +238,14 @@ static void csi_vb2_buf_done(struct csi_priv *priv)
>   	done = priv->active_vb2_buf[priv->ipu_buf_num];
>   	if (done) {
>   		done->vbuf.field = vdev->fmt.fmt.pix.field;
> +		done->vbuf.sequence = priv->frame_sequence;
>   		vb = &done->vbuf.vb2_buf;
>   		vb->timestamp = ktime_get_ns();
>   		vb2_buffer_done(vb, priv->nfb4eof ?
>   				VB2_BUF_STATE_ERROR : VB2_BUF_STATE_DONE);
>   	}
>   
> +	priv->frame_sequence++;
>   	priv->nfb4eof = false;
>   
>   	/* get next queued buffer */
> @@ -544,6 +547,7 @@ static int csi_idmac_start(struct csi_priv *priv)
>   
>   	/* init EOF completion waitq */
>   	init_completion(&priv->last_eof_comp);
> +	priv->frame_sequence = 0;
>   	priv->last_eof = false;
>   	priv->nfb4eof = false;
>   

_______________________________________________
devel mailing list
devel@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel

WARNING: multiple messages have this Message-ID (diff)
From: Steve Longerbeam <slongerbeam@gmail.com>
To: Peter Seiderer <ps.report@gmx.net>, linux-media@vger.kernel.org
Cc: Steve Longerbeam <slongerbeam@gmail.com>,
	Philipp Zabel <p.zabel@pengutronix.de>,
	Mauro Carvalho Chehab <mchehab@kernel.org>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v4 2/2] media: staging/imx: fill vb2_v4l2_buffer sequence entry
Date: Fri, 16 Mar 2018 10:05:44 -0700	[thread overview]
Message-ID: <892dd00e-83bc-7781-6684-603ff89378cd@gmail.com> (raw)
In-Reply-To: <20180315191323.6028-2-ps.report@gmx.net>

Reviewed-by: Steve Longerbeam <steve_longerbeam@mentor.com>


On 03/15/2018 12:13 PM, Peter Seiderer wrote:
> - enables gstreamer v4l2src lost frame detection, e.g:
>
>    0:00:08.685185668  348  0x54f520 WARN  v4l2src gstv4l2src.c:970:gst_v4l2src_create:<v4l2src0> lost frames detected: count = 141 - ts: 0:00:08.330177332
>
> - fixes v4l2-compliance test failure:
>
>    Streaming ioctls:
>            test read/write: OK (Not Supported)
>                Video Capture:
>                    Buffer: 0 Sequence: 0 Field: None Timestamp: 92.991450s
>                    Buffer: 1 Sequence: 0 Field: None Timestamp: 93.008135s
>                    fail: v4l2-test-buffers.cpp(294): (int)g_sequence() < seq.last_seq + 1
>                    fail: v4l2-test-buffers.cpp(707): buf.check(q, last_seq)
>
> Signed-off-by: Peter Seiderer <ps.report@gmx.net>
> ---
> Changes in v2:
>    - fill vb2_v4l2_buffer sequence entry in imx-ic-prpencvf too
>      (suggested by Steve Longerbeam)
>
> Changes in v3:
>    - add changelog (suggested by Greg Kroah-Hartman, Fabio Estevam
>      and Dan Carpenter) and patch history
>    - use u32 (instead of __u32) (suggested by Dan Carpenter)
>    - let sequence counter start with zero, keeping v4l2-compliance
>      testing happy (needs additional setting of field to a valid
>      value, patch will follow soon)
>
> Changes in v4:
>    - add v4l2-compliance test failure to changelog
>    - reorder frame_sequence increment and assignement to
>      avoid -1 as start value (suggeted by Steve Longerbeam)
> ---
>   drivers/staging/media/imx/imx-ic-prpencvf.c | 4 ++++
>   drivers/staging/media/imx/imx-media-csi.c   | 4 ++++
>   2 files changed, 8 insertions(+)
>
> diff --git a/drivers/staging/media/imx/imx-ic-prpencvf.c b/drivers/staging/media/imx/imx-ic-prpencvf.c
> index ffeb017c73b2..28f41caba05d 100644
> --- a/drivers/staging/media/imx/imx-ic-prpencvf.c
> +++ b/drivers/staging/media/imx/imx-ic-prpencvf.c
> @@ -103,6 +103,7 @@ struct prp_priv {
>   	int nfb4eof_irq;
>   
>   	int stream_count;
> +	u32 frame_sequence; /* frame sequence counter */
>   	bool last_eof;  /* waiting for last EOF at stream off */
>   	bool nfb4eof;    /* NFB4EOF encountered during streaming */
>   	struct completion last_eof_comp;
> @@ -211,12 +212,14 @@ static void prp_vb2_buf_done(struct prp_priv *priv, struct ipuv3_channel *ch)
>   	done = priv->active_vb2_buf[priv->ipu_buf_num];
>   	if (done) {
>   		done->vbuf.field = vdev->fmt.fmt.pix.field;
> +		done->vbuf.sequence = priv->frame_sequence;
>   		vb = &done->vbuf.vb2_buf;
>   		vb->timestamp = ktime_get_ns();
>   		vb2_buffer_done(vb, priv->nfb4eof ?
>   				VB2_BUF_STATE_ERROR : VB2_BUF_STATE_DONE);
>   	}
>   
> +	priv->frame_sequence++;
>   	priv->nfb4eof = false;
>   
>   	/* get next queued buffer */
> @@ -638,6 +641,7 @@ static int prp_start(struct prp_priv *priv)
>   
>   	/* init EOF completion waitq */
>   	init_completion(&priv->last_eof_comp);
> +	priv->frame_sequence = 0;
>   	priv->last_eof = false;
>   	priv->nfb4eof = false;
>   
> diff --git a/drivers/staging/media/imx/imx-media-csi.c b/drivers/staging/media/imx/imx-media-csi.c
> index 5f69117b5811..3f2ce05848f3 100644
> --- a/drivers/staging/media/imx/imx-media-csi.c
> +++ b/drivers/staging/media/imx/imx-media-csi.c
> @@ -111,6 +111,7 @@ struct csi_priv {
>   	struct v4l2_ctrl_handler ctrl_hdlr;
>   
>   	int stream_count; /* streaming counter */
> +	u32 frame_sequence; /* frame sequence counter */
>   	bool last_eof;   /* waiting for last EOF at stream off */
>   	bool nfb4eof;    /* NFB4EOF encountered during streaming */
>   	struct completion last_eof_comp;
> @@ -237,12 +238,14 @@ static void csi_vb2_buf_done(struct csi_priv *priv)
>   	done = priv->active_vb2_buf[priv->ipu_buf_num];
>   	if (done) {
>   		done->vbuf.field = vdev->fmt.fmt.pix.field;
> +		done->vbuf.sequence = priv->frame_sequence;
>   		vb = &done->vbuf.vb2_buf;
>   		vb->timestamp = ktime_get_ns();
>   		vb2_buffer_done(vb, priv->nfb4eof ?
>   				VB2_BUF_STATE_ERROR : VB2_BUF_STATE_DONE);
>   	}
>   
> +	priv->frame_sequence++;
>   	priv->nfb4eof = false;
>   
>   	/* get next queued buffer */
> @@ -544,6 +547,7 @@ static int csi_idmac_start(struct csi_priv *priv)
>   
>   	/* init EOF completion waitq */
>   	init_completion(&priv->last_eof_comp);
> +	priv->frame_sequence = 0;
>   	priv->last_eof = false;
>   	priv->nfb4eof = false;
>   

  parent reply	other threads:[~2018-03-16 17:05 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-03-15 19:13 [PATCH v4 1/2] media: staging/imx: fill vb2_v4l2_buffer field entry Peter Seiderer
2018-03-15 19:13 ` Peter Seiderer
2018-03-15 19:13 ` [PATCH v4 2/2] media: staging/imx: fill vb2_v4l2_buffer sequence entry Peter Seiderer
2018-03-15 19:13   ` Peter Seiderer
2018-03-16  8:12   ` Dan Carpenter
2018-03-16 17:05   ` Steve Longerbeam [this message]
2018-03-16 17:05     ` Steve Longerbeam
2018-06-11 20:48     ` Peter Seiderer
2018-06-12  8:41       ` Philipp Zabel
2018-06-12  8:59         ` Hans Verkuil
2018-03-16 17:02 ` [PATCH v4 1/2] media: staging/imx: fill vb2_v4l2_buffer field entry Steve Longerbeam
2018-03-16 17:02   ` Steve Longerbeam
2018-06-11 20:47   ` Peter Seiderer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=892dd00e-83bc-7781-6684-603ff89378cd@gmail.com \
    --to=slongerbeam@gmail.com \
    --cc=devel@driverdev.osuosl.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=mchehab@kernel.org \
    --cc=p.zabel@pengutronix.de \
    --cc=ps.report@gmx.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.