All of lore.kernel.org
 help / color / mirror / Atom feed
* [RFC PATCH 0/2] Signalling last decoded frame by V4L2_BUF_FLAG_LAST and -EPIPE
@ 2015-01-22 11:28 Philipp Zabel
  2015-01-22 11:28 ` [RFC PATCH 1/2] [media] videodev2: Add V4L2_BUF_FLAG_LAST Philipp Zabel
  2015-01-22 11:28 ` [RFC PATCH 2/2] [media] videobuf2: return -EPIPE from DQBUF after the last buffer Philipp Zabel
  0 siblings, 2 replies; 8+ messages in thread
From: Philipp Zabel @ 2015-01-22 11:28 UTC (permalink / raw)
  To: linux-media
  Cc: Hans Verkuil, Pawel Osciak, Kamil Debski, Laurent Pinchart,
	Nicolas Dufresne, kernel, Philipp Zabel

At the V4L2 codec API session during ELC-E 2014, we agreed that for the decoder
draining flow, after a V4L2_DEC_CMD_STOP decoder command was issued, the last
decoded buffer should get dequeued with a V4L2_BUF_FLAG_LAST set. After that,
poll should immediately return and all following VIDIOC_DQBUF should return
-EPIPE until the stream is stopped or decoding continued via V4L2_DEC_CMD_START.
(or STREAMOFF/STREAMON).

regards
Philipp

Peter Seiderer (1):
  [media] videodev2: Add V4L2_BUF_FLAG_LAST

Philipp Zabel (1):
  [media] videobuf2: return -EPIPE from DQBUF after the last buffer

 drivers/media/v4l2-core/v4l2-mem2mem.c   | 10 +++++++++-
 drivers/media/v4l2-core/videobuf2-core.c | 18 +++++++++++++++++-
 include/media/videobuf2-core.h           |  1 +
 include/uapi/linux/videodev2.h           |  2 ++
 4 files changed, 29 insertions(+), 2 deletions(-)

-- 
2.1.4


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [RFC PATCH 1/2] [media] videodev2: Add V4L2_BUF_FLAG_LAST
  2015-01-22 11:28 [RFC PATCH 0/2] Signalling last decoded frame by V4L2_BUF_FLAG_LAST and -EPIPE Philipp Zabel
@ 2015-01-22 11:28 ` Philipp Zabel
  2015-02-02 13:48   ` Hans Verkuil
  2015-01-22 11:28 ` [RFC PATCH 2/2] [media] videobuf2: return -EPIPE from DQBUF after the last buffer Philipp Zabel
  1 sibling, 1 reply; 8+ messages in thread
From: Philipp Zabel @ 2015-01-22 11:28 UTC (permalink / raw)
  To: linux-media
  Cc: Hans Verkuil, Pawel Osciak, Kamil Debski, Laurent Pinchart,
	Nicolas Dufresne, kernel, Peter Seiderer, Philipp Zabel

From: Peter Seiderer <ps.report@gmx.net>

This v4l2_buffer flag can be used by drivers to mark a capture buffer
as the last generated buffer, for example after a V4L2_DEC_CMD_STOP
command was issued.

Signed-off-by: Peter Seiderer <ps.report@gmx.net>
Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
---
 include/uapi/linux/videodev2.h | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h
index fbdc360..c642c10 100644
--- a/include/uapi/linux/videodev2.h
+++ b/include/uapi/linux/videodev2.h
@@ -809,6 +809,8 @@ struct v4l2_buffer {
 #define V4L2_BUF_FLAG_TSTAMP_SRC_MASK		0x00070000
 #define V4L2_BUF_FLAG_TSTAMP_SRC_EOF		0x00000000
 #define V4L2_BUF_FLAG_TSTAMP_SRC_SOE		0x00010000
+/* mem2mem encoder/decoder */
+#define V4L2_BUF_FLAG_LAST			0x00100000
 
 /**
  * struct v4l2_exportbuffer - export of video buffer as DMABUF file descriptor
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [RFC PATCH 2/2] [media] videobuf2: return -EPIPE from DQBUF after the last buffer
  2015-01-22 11:28 [RFC PATCH 0/2] Signalling last decoded frame by V4L2_BUF_FLAG_LAST and -EPIPE Philipp Zabel
  2015-01-22 11:28 ` [RFC PATCH 1/2] [media] videodev2: Add V4L2_BUF_FLAG_LAST Philipp Zabel
@ 2015-01-22 11:28 ` Philipp Zabel
  2015-02-02 14:00   ` Hans Verkuil
  1 sibling, 1 reply; 8+ messages in thread
From: Philipp Zabel @ 2015-01-22 11:28 UTC (permalink / raw)
  To: linux-media
  Cc: Hans Verkuil, Pawel Osciak, Kamil Debski, Laurent Pinchart,
	Nicolas Dufresne, kernel, Philipp Zabel

If the last buffer was dequeued from a capture queue, let poll return
immediately and let DQBUF return -EPIPE to signal there will no more
buffers to dequeue until STREAMOFF.

Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
---
TODO: (How) should the last_buffer_dequeud flag be cleared in reaction to
V4L2_DEC_CMD_START?
---
 drivers/media/v4l2-core/v4l2-mem2mem.c   | 10 +++++++++-
 drivers/media/v4l2-core/videobuf2-core.c | 18 +++++++++++++++++-
 include/media/videobuf2-core.h           |  1 +
 3 files changed, 27 insertions(+), 2 deletions(-)

diff --git a/drivers/media/v4l2-core/v4l2-mem2mem.c b/drivers/media/v4l2-core/v4l2-mem2mem.c
index 80c588f..1b5b432 100644
--- a/drivers/media/v4l2-core/v4l2-mem2mem.c
+++ b/drivers/media/v4l2-core/v4l2-mem2mem.c
@@ -564,8 +564,16 @@ unsigned int v4l2_m2m_poll(struct file *file, struct v4l2_m2m_ctx *m2m_ctx,
 
 	if (list_empty(&src_q->done_list))
 		poll_wait(file, &src_q->done_wq, wait);
-	if (list_empty(&dst_q->done_list))
+	if (list_empty(&dst_q->done_list)) {
+		/*
+		 * If the last buffer was dequeued from the capture queue,
+		 * return immediately. DQBUF will return -EPIPE.
+		 */
+		if (dst_q->last_buffer_dequeued)
+			return rc | POLLIN | POLLRDNORM;
+
 		poll_wait(file, &dst_q->done_wq, wait);
+	}
 
 	if (m2m_ctx->m2m_dev->m2m_ops->lock)
 		m2m_ctx->m2m_dev->m2m_ops->lock(m2m_ctx->priv);
diff --git a/drivers/media/v4l2-core/videobuf2-core.c b/drivers/media/v4l2-core/videobuf2-core.c
index d09a891..c2c2eac 100644
--- a/drivers/media/v4l2-core/videobuf2-core.c
+++ b/drivers/media/v4l2-core/videobuf2-core.c
@@ -2046,6 +2046,10 @@ static int vb2_internal_dqbuf(struct vb2_queue *q, struct v4l2_buffer *b, bool n
 	struct vb2_buffer *vb = NULL;
 	int ret;
 
+	if (q->last_buffer_dequeued) {
+		dprintk(3, "last buffer dequeued already\n");
+		return -EPIPE;
+	}
 	if (b->type != q->type) {
 		dprintk(1, "invalid buffer type\n");
 		return -EINVAL;
@@ -2073,6 +2077,9 @@ static int vb2_internal_dqbuf(struct vb2_queue *q, struct v4l2_buffer *b, bool n
 	/* Remove from videobuf queue */
 	list_del(&vb->queued_entry);
 	q->queued_count--;
+	if (!V4L2_TYPE_IS_OUTPUT(q->type) &&
+	    vb->v4l2_buf.flags & V4L2_BUF_FLAG_LAST)
+		q->last_buffer_dequeued = true;
 	/* go back to dequeued state */
 	__vb2_dqbuf(vb);
 
@@ -2286,6 +2293,7 @@ static int vb2_internal_streamoff(struct vb2_queue *q, enum v4l2_buf_type type)
 	 */
 	__vb2_queue_cancel(q);
 	q->waiting_for_buffers = !V4L2_TYPE_IS_OUTPUT(q->type);
+	q->last_buffer_dequeued = false;
 
 	dprintk(3, "successful\n");
 	return 0;
@@ -2628,8 +2636,16 @@ unsigned int vb2_poll(struct vb2_queue *q, struct file *file, poll_table *wait)
 	if (V4L2_TYPE_IS_OUTPUT(q->type) && q->queued_count < q->num_buffers)
 		return res | POLLOUT | POLLWRNORM;
 
-	if (list_empty(&q->done_list))
+	if (list_empty(&q->done_list)) {
+		/*
+		 * If the last buffer was dequeued from a capture queue,
+		 * return immediately. DQBUF will return -EPIPE.
+		 */
+		if (!V4L2_TYPE_IS_OUTPUT(q->type) && q->last_buffer_dequeued)
+			return res | POLLIN | POLLRDNORM;
+
 		poll_wait(file, &q->done_wq, wait);
+	}
 
 	/*
 	 * Take first buffer available for dequeuing.
diff --git a/include/media/videobuf2-core.h b/include/media/videobuf2-core.h
index bd2cec2..ca337bf 100644
--- a/include/media/videobuf2-core.h
+++ b/include/media/videobuf2-core.h
@@ -429,6 +429,7 @@ struct vb2_queue {
 	unsigned int			start_streaming_called:1;
 	unsigned int			error:1;
 	unsigned int			waiting_for_buffers:1;
+	unsigned int			last_buffer_dequeued:1;
 
 	struct vb2_fileio_data		*fileio;
 	struct vb2_threadio_data	*threadio;
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [RFC PATCH 1/2] [media] videodev2: Add V4L2_BUF_FLAG_LAST
  2015-01-22 11:28 ` [RFC PATCH 1/2] [media] videodev2: Add V4L2_BUF_FLAG_LAST Philipp Zabel
@ 2015-02-02 13:48   ` Hans Verkuil
  0 siblings, 0 replies; 8+ messages in thread
From: Hans Verkuil @ 2015-02-02 13:48 UTC (permalink / raw)
  To: Philipp Zabel, linux-media
  Cc: Pawel Osciak, Kamil Debski, Laurent Pinchart, Nicolas Dufresne,
	kernel, Peter Seiderer

On 01/22/2015 12:28 PM, Philipp Zabel wrote:
> From: Peter Seiderer <ps.report@gmx.net>
> 
> This v4l2_buffer flag can be used by drivers to mark a capture buffer
> as the last generated buffer, for example after a V4L2_DEC_CMD_STOP
> command was issued.
> 
> Signed-off-by: Peter Seiderer <ps.report@gmx.net>
> Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
> ---
>  include/uapi/linux/videodev2.h | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h
> index fbdc360..c642c10 100644
> --- a/include/uapi/linux/videodev2.h
> +++ b/include/uapi/linux/videodev2.h
> @@ -809,6 +809,8 @@ struct v4l2_buffer {
>  #define V4L2_BUF_FLAG_TSTAMP_SRC_MASK		0x00070000
>  #define V4L2_BUF_FLAG_TSTAMP_SRC_EOF		0x00000000
>  #define V4L2_BUF_FLAG_TSTAMP_SRC_SOE		0x00010000
> +/* mem2mem encoder/decoder */
> +#define V4L2_BUF_FLAG_LAST			0x00100000
>  
>  /**
>   * struct v4l2_exportbuffer - export of video buffer as DMABUF file descriptor
> 

You probably knew this, but this should of course be documented in the V4L2
spec. In particular the spec should be clear about *when* the flag is set.

Also, any drivers that need this should be updated as well. Otherwise applications
cannot rely on it.

Regards,

	Hans

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [RFC PATCH 2/2] [media] videobuf2: return -EPIPE from DQBUF after the last buffer
  2015-01-22 11:28 ` [RFC PATCH 2/2] [media] videobuf2: return -EPIPE from DQBUF after the last buffer Philipp Zabel
@ 2015-02-02 14:00   ` Hans Verkuil
  2015-02-02 15:23     ` Philipp Zabel
  2015-02-03 11:20     ` Laurent Pinchart
  0 siblings, 2 replies; 8+ messages in thread
From: Hans Verkuil @ 2015-02-02 14:00 UTC (permalink / raw)
  To: Philipp Zabel, linux-media
  Cc: Pawel Osciak, Kamil Debski, Laurent Pinchart, Nicolas Dufresne, kernel

On 01/22/2015 12:28 PM, Philipp Zabel wrote:
> If the last buffer was dequeued from a capture queue, let poll return
> immediately and let DQBUF return -EPIPE to signal there will no more
> buffers to dequeue until STREAMOFF.

This looks OK to me, although I would like to see comments from others as well.
Of course, this needs to be documented in the spec as well.

> 
> Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
> ---
> TODO: (How) should the last_buffer_dequeud flag be cleared in reaction to
> V4L2_DEC_CMD_START?

I would suggest an inline function in videobuf2-core.h that clears the flag
and that drivers can call. I don't think the vb2 core can detect when it is
OK to clear the flag, it needs to be told by the driver (correct me if I am
wrong).

Regards,

	Hans

> ---
>  drivers/media/v4l2-core/v4l2-mem2mem.c   | 10 +++++++++-
>  drivers/media/v4l2-core/videobuf2-core.c | 18 +++++++++++++++++-
>  include/media/videobuf2-core.h           |  1 +
>  3 files changed, 27 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/media/v4l2-core/v4l2-mem2mem.c b/drivers/media/v4l2-core/v4l2-mem2mem.c
> index 80c588f..1b5b432 100644
> --- a/drivers/media/v4l2-core/v4l2-mem2mem.c
> +++ b/drivers/media/v4l2-core/v4l2-mem2mem.c
> @@ -564,8 +564,16 @@ unsigned int v4l2_m2m_poll(struct file *file, struct v4l2_m2m_ctx *m2m_ctx,
>  
>  	if (list_empty(&src_q->done_list))
>  		poll_wait(file, &src_q->done_wq, wait);
> -	if (list_empty(&dst_q->done_list))
> +	if (list_empty(&dst_q->done_list)) {
> +		/*
> +		 * If the last buffer was dequeued from the capture queue,
> +		 * return immediately. DQBUF will return -EPIPE.
> +		 */
> +		if (dst_q->last_buffer_dequeued)
> +			return rc | POLLIN | POLLRDNORM;
> +
>  		poll_wait(file, &dst_q->done_wq, wait);
> +	}
>  
>  	if (m2m_ctx->m2m_dev->m2m_ops->lock)
>  		m2m_ctx->m2m_dev->m2m_ops->lock(m2m_ctx->priv);
> diff --git a/drivers/media/v4l2-core/videobuf2-core.c b/drivers/media/v4l2-core/videobuf2-core.c
> index d09a891..c2c2eac 100644
> --- a/drivers/media/v4l2-core/videobuf2-core.c
> +++ b/drivers/media/v4l2-core/videobuf2-core.c
> @@ -2046,6 +2046,10 @@ static int vb2_internal_dqbuf(struct vb2_queue *q, struct v4l2_buffer *b, bool n
>  	struct vb2_buffer *vb = NULL;
>  	int ret;
>  
> +	if (q->last_buffer_dequeued) {
> +		dprintk(3, "last buffer dequeued already\n");
> +		return -EPIPE;
> +	}
>  	if (b->type != q->type) {
>  		dprintk(1, "invalid buffer type\n");
>  		return -EINVAL;
> @@ -2073,6 +2077,9 @@ static int vb2_internal_dqbuf(struct vb2_queue *q, struct v4l2_buffer *b, bool n
>  	/* Remove from videobuf queue */
>  	list_del(&vb->queued_entry);
>  	q->queued_count--;
> +	if (!V4L2_TYPE_IS_OUTPUT(q->type) &&
> +	    vb->v4l2_buf.flags & V4L2_BUF_FLAG_LAST)
> +		q->last_buffer_dequeued = true;
>  	/* go back to dequeued state */
>  	__vb2_dqbuf(vb);
>  
> @@ -2286,6 +2293,7 @@ static int vb2_internal_streamoff(struct vb2_queue *q, enum v4l2_buf_type type)
>  	 */
>  	__vb2_queue_cancel(q);
>  	q->waiting_for_buffers = !V4L2_TYPE_IS_OUTPUT(q->type);
> +	q->last_buffer_dequeued = false;
>  
>  	dprintk(3, "successful\n");
>  	return 0;
> @@ -2628,8 +2636,16 @@ unsigned int vb2_poll(struct vb2_queue *q, struct file *file, poll_table *wait)
>  	if (V4L2_TYPE_IS_OUTPUT(q->type) && q->queued_count < q->num_buffers)
>  		return res | POLLOUT | POLLWRNORM;
>  
> -	if (list_empty(&q->done_list))
> +	if (list_empty(&q->done_list)) {
> +		/*
> +		 * If the last buffer was dequeued from a capture queue,
> +		 * return immediately. DQBUF will return -EPIPE.
> +		 */
> +		if (!V4L2_TYPE_IS_OUTPUT(q->type) && q->last_buffer_dequeued)
> +			return res | POLLIN | POLLRDNORM;
> +
>  		poll_wait(file, &q->done_wq, wait);
> +	}
>  
>  	/*
>  	 * Take first buffer available for dequeuing.
> diff --git a/include/media/videobuf2-core.h b/include/media/videobuf2-core.h
> index bd2cec2..ca337bf 100644
> --- a/include/media/videobuf2-core.h
> +++ b/include/media/videobuf2-core.h
> @@ -429,6 +429,7 @@ struct vb2_queue {
>  	unsigned int			start_streaming_called:1;
>  	unsigned int			error:1;
>  	unsigned int			waiting_for_buffers:1;
> +	unsigned int			last_buffer_dequeued:1;
>  
>  	struct vb2_fileio_data		*fileio;
>  	struct vb2_threadio_data	*threadio;
> 


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [RFC PATCH 2/2] [media] videobuf2: return -EPIPE from DQBUF after the last buffer
  2015-02-02 14:00   ` Hans Verkuil
@ 2015-02-02 15:23     ` Philipp Zabel
  2015-02-03 11:20     ` Laurent Pinchart
  1 sibling, 0 replies; 8+ messages in thread
From: Philipp Zabel @ 2015-02-02 15:23 UTC (permalink / raw)
  To: Hans Verkuil
  Cc: linux-media, kernel, Kamil Debski, Nicolas Dufresne,
	Laurent Pinchart, Pawel Osciak

Am Montag, den 02.02.2015, 15:00 +0100 schrieb Hans Verkuil:
> On 01/22/2015 12:28 PM, Philipp Zabel wrote:
> > If the last buffer was dequeued from a capture queue, let poll return
> > immediately and let DQBUF return -EPIPE to signal there will no more
> > buffers to dequeue until STREAMOFF.
> 
> This looks OK to me, although I would like to see comments from others as well.
> Of course, this needs to be documented in the spec as well.

Thanks, I'll fix that in the next round.

> > Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
> > ---
> > TODO: (How) should the last_buffer_dequeud flag be cleared in reaction to
> > V4L2_DEC_CMD_START?
> 
> I would suggest an inline function in videobuf2-core.h that clears the flag
> and that drivers can call. I don't think the vb2 core can detect when it is
> OK to clear the flag, it needs to be told by the driver (correct me if I am
> wrong).

No, I think you are right that this should be done explicitly. I'll add
an inline function next time.

regards
Philipp


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [RFC PATCH 2/2] [media] videobuf2: return -EPIPE from DQBUF after the last buffer
  2015-02-02 14:00   ` Hans Verkuil
  2015-02-02 15:23     ` Philipp Zabel
@ 2015-02-03 11:20     ` Laurent Pinchart
  2015-02-04 11:38       ` Philipp Zabel
  1 sibling, 1 reply; 8+ messages in thread
From: Laurent Pinchart @ 2015-02-03 11:20 UTC (permalink / raw)
  To: Hans Verkuil
  Cc: Philipp Zabel, linux-media, Pawel Osciak, Kamil Debski,
	Nicolas Dufresne, kernel

On Monday 02 February 2015 15:00:51 Hans Verkuil wrote:
> On 01/22/2015 12:28 PM, Philipp Zabel wrote:
> > If the last buffer was dequeued from a capture queue, let poll return
> > immediately and let DQBUF return -EPIPE to signal there will no more
> > buffers to dequeue until STREAMOFF.
> 
> This looks OK to me, although I would like to see comments from others as
> well. Of course, this needs to be documented in the spec as well.

I haven't followed the V4L2 codec API discussion during ELC-E. Could someone 
briefly expose the rationale for this and the codec draining flow ? The 
explanation should probably included in the documentation.

Existing applications will receive -EPIPE from DQBUF now. Have potential 
breakages been taken into account ?

> > Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
> > ---
> > TODO: (How) should the last_buffer_dequeud flag be cleared in reaction to
> > V4L2_DEC_CMD_START?
> 
> I would suggest an inline function in videobuf2-core.h that clears the flag
> and that drivers can call. I don't think the vb2 core can detect when it is
> OK to clear the flag, it needs to be told by the driver (correct me if I am
> wrong).

-- 
Regards,

Laurent Pinchart


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [RFC PATCH 2/2] [media] videobuf2: return -EPIPE from DQBUF after the last buffer
  2015-02-03 11:20     ` Laurent Pinchart
@ 2015-02-04 11:38       ` Philipp Zabel
  0 siblings, 0 replies; 8+ messages in thread
From: Philipp Zabel @ 2015-02-04 11:38 UTC (permalink / raw)
  To: Laurent Pinchart
  Cc: Hans Verkuil, Kamil Debski, Pawel Osciak, kernel,
	Nicolas Dufresne, linux-media

Hi Laurent,

Am Dienstag, den 03.02.2015, 13:20 +0200 schrieb Laurent Pinchart:
> On Monday 02 February 2015 15:00:51 Hans Verkuil wrote:
> > On 01/22/2015 12:28 PM, Philipp Zabel wrote:
> > > If the last buffer was dequeued from a capture queue, let poll return
> > > immediately and let DQBUF return -EPIPE to signal there will no more
> > > buffers to dequeue until STREAMOFF.
> > 
> > This looks OK to me, although I would like to see comments from others as
> > well. Of course, this needs to be documented in the spec as well.
> 
> I haven't followed the V4L2 codec API discussion during ELC-E. Could someone 
> briefly expose the rationale for this and the codec draining flow ? The 
> explanation should probably included in the documentation.

This is the draining flow as written down in the notes:

  The decoder draining flow starts with the application making the
  driver aware of its intentions by calling VIDIOC_DECODER_CMD with
  V4L2_DEC_CMD_STOP.

  The driver processes the remaining buffers on the OUTPUT queue.
  Once all CAPTURE buffers produced from those are ready to dequeue, it 
  sends a V4L2_EVENT_EOS.

  The application then dequeues buffers from the CAPTURE queue until it
  encounters a buffer with V4L2_BUF_FLAG_LAST set. This buffer may
  already be empty due to hardware limitations.
  Alternatively, the application may simply continue to dequeue
  (possibly empty) buffers until the VIDIOC_DQBUF ioctl returns -EPIPE.

  To resume decoding, the application can call VIDIOC_DECODER_CMD with
  V4L2_CMD_START without the need to stop streaming.

This should work the same for encoding.
The rationale for using -EPIPE was IIRC that it allows for simpler code
(DQBUF loop until error). Also it works without the newest kernel
headers that #define V4L2_BUF_FLAG_LAST.

I don't remember if we talked about what should happen to new buffers
queued via QBUF on the OUTPUT queue while in draining mode, but I
suppose the driver should just hold them until V4L2_CMD_START is called.

> Existing applications will receive -EPIPE from DQBUF now. Have potential 
> breakages been taken into account ?

We can continue to produce empty frames this way, which are currently
used to signal the last frame in s5p-mfc. I am not aware of other
unspecified mechanisms in use.

regards
Philipp


^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2015-02-04 11:38 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-01-22 11:28 [RFC PATCH 0/2] Signalling last decoded frame by V4L2_BUF_FLAG_LAST and -EPIPE Philipp Zabel
2015-01-22 11:28 ` [RFC PATCH 1/2] [media] videodev2: Add V4L2_BUF_FLAG_LAST Philipp Zabel
2015-02-02 13:48   ` Hans Verkuil
2015-01-22 11:28 ` [RFC PATCH 2/2] [media] videobuf2: return -EPIPE from DQBUF after the last buffer Philipp Zabel
2015-02-02 14:00   ` Hans Verkuil
2015-02-02 15:23     ` Philipp Zabel
2015-02-03 11:20     ` Laurent Pinchart
2015-02-04 11:38       ` Philipp Zabel

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.