Re: [PATCH v4 1/4] [media] videodev2: Add V4L2_BUF_FLAG_LAST

2015-04-13 Thread Philipp Zabel
Am Montag, den 13.04.2015, 14:42 +0900 schrieb Pawel Osciak:
> Hi,
> Thanks for working on this!
> 
> On Wed, Mar 25, 2015 at 2:46 AM, Philipp Zabel  wrote:
> > From: Peter Seiderer 
> >
> > 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.
> > The DocBook is updated to mention mem2mem codecs and the mem2mem draining 
> > flow
> > signals in the VIDIOC_DECODER_CMD V4L2_DEC_CMD_STOP and VIDIOC_ENCODER_CMD
> > V4L2_ENC_CMD_STOP documentation.
> >
> > Signed-off-by: Peter Seiderer 
> > Signed-off-by: Philipp Zabel 
> > ---
> > Changes since v3:
> >  - Added DocBook update mentioning V4L2_BUF_FLAG_LAST in the encoder/decoder
> >stop command documentation.
> > ---
> >  Documentation/DocBook/media/v4l/io.xml | 10 ++
> >  Documentation/DocBook/media/v4l/vidioc-decoder-cmd.xml |  6 +-
> >  Documentation/DocBook/media/v4l/vidioc-encoder-cmd.xml |  5 -
> >  include/trace/events/v4l2.h|  3 ++-
> >  include/uapi/linux/videodev2.h |  2 ++
> >  5 files changed, 23 insertions(+), 3 deletions(-)
> >
> > diff --git a/Documentation/DocBook/media/v4l/io.xml 
> > b/Documentation/DocBook/media/v4l/io.xml
> > index 1c17f80..f3b8bc0 100644
> > --- a/Documentation/DocBook/media/v4l/io.xml
> > +++ b/Documentation/DocBook/media/v4l/io.xml
> > @@ -1129,6 +1129,16 @@ in this buffer has not been created by the CPU but 
> > by some DMA-capable unit,
> >  in which case caches have not been used.
> >   
> >   
> > +   V4L2_BUF_FLAG_LAST
> > +   0x0010
> > +   Last buffer produced by the hardware. mem2mem codec 
> > drivers
> > +set this flag on the capture queue for the last buffer when the
> > +VIDIOC_QUERYBUF or
> > +VIDIOC_DQBUF ioctl is called. After the
> > +queue is drained, the VIDIOC_DQBUF 
> > ioctl will
> 
> Perhaps just s/After the queue is drained, the/Any subsequent/ ? This
> would make it more clear I feel.
> DQBUF of LAST is the end of draining.

Concise, I like it.

> > +not block anymore, but return an &EPIPE;.
> > + 
> > + 
> > V4L2_BUF_FLAG_TIMESTAMP_MASK
> > 0xe000
> > Mask for timestamp types below. To test the
> > diff --git a/Documentation/DocBook/media/v4l/vidioc-decoder-cmd.xml 
> > b/Documentation/DocBook/media/v4l/vidioc-decoder-cmd.xml
> > index 9215627..cbb7135 100644
> > --- a/Documentation/DocBook/media/v4l/vidioc-decoder-cmd.xml
> > +++ b/Documentation/DocBook/media/v4l/vidioc-decoder-cmd.xml
> > @@ -197,7 +197,11 @@ be muted when playing back at a non-standard speed.
> >  this command does nothing. This command has two flags:
> >  if V4L2_DEC_CMD_STOP_TO_BLACK is set, then the 
> > decoder will
> >  set the picture to black after it stopped decoding. Otherwise the last 
> > image will
> > -repeat. If V4L2_DEC_CMD_STOP_IMMEDIATELY is set, then 
> > the decoder
> > +repeat. mem2mem decoders will stop producing new frames altogether. They 
> > will send
> > +a V4L2_EVENT_EOS event after the last frame was 
> > decoded and
> 
> s/was decoded/has been decoded and all frames are ready to be dequeued/

Yes.

> > +will set the V4L2_BUF_FLAG_LAST buffer flag when 
> > there will
> > +be no new buffers produced to dequeue.
> 
> To make the timing description more explicit, s/when there will be no
> new buffers produced to dequeue./on the final buffer being dequeued/
> perhaps?
> EOS indicates "no more buffers will be produced and all are ready to
> be dequeued", while LAST indicates "final buffer being dequeued".

Yes.

> > +If V4L2_DEC_CMD_STOP_IMMEDIATELY is set, then the 
> > decoder
> >  stops immediately (ignoring the pts value), 
> > otherwise it
> >  will keep decoding until timestamp >= pts or until the last of the pending 
> > data from
> >  its internal buffers was decoded.
> > diff --git a/Documentation/DocBook/media/v4l/vidioc-encoder-cmd.xml 
> > b/Documentation/DocBook/media/v4l/vidioc-encoder-cmd.xml
> > index 0619ca5..e9cf601 100644
> > --- a/Documentation/DocBook/media/v4l/vidioc-encoder-cmd.xml
> > +++ b/Documentation/DocBook/media/v4l/vidioc-encoder-cmd.xml
> > @@ -129,7 +129,10 @@ this command.
> >  encoding will continue until the end of the current Group
> >  Of Pictures, otherwise encoding will stop immediately.
> >  When the encoder is already stopped, this command does
> > -nothing.
> > +nothing. mem2mem encoders will send a V4L2_EVENT_EOS 
> > event
> > +after the last frame was encoded and will set the
> > +V4L2_BUF_FLAG_LAST buffer flag on the capture queue 
> > when
> > +there will be no new buffers produced to dequeue
> 
> I'd propose the same here.

And yes. Thanks, I'll make those changes.

regards
Philipp

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majord

Re: [PATCH v4 1/4] [media] videodev2: Add V4L2_BUF_FLAG_LAST

2015-04-12 Thread Pawel Osciak
Hi,
Thanks for working on this!

On Wed, Mar 25, 2015 at 2:46 AM, Philipp Zabel  wrote:
> From: Peter Seiderer 
>
> 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.
> The DocBook is updated to mention mem2mem codecs and the mem2mem draining flow
> signals in the VIDIOC_DECODER_CMD V4L2_DEC_CMD_STOP and VIDIOC_ENCODER_CMD
> V4L2_ENC_CMD_STOP documentation.
>
> Signed-off-by: Peter Seiderer 
> Signed-off-by: Philipp Zabel 
> ---
> Changes since v3:
>  - Added DocBook update mentioning V4L2_BUF_FLAG_LAST in the encoder/decoder
>stop command documentation.
> ---
>  Documentation/DocBook/media/v4l/io.xml | 10 ++
>  Documentation/DocBook/media/v4l/vidioc-decoder-cmd.xml |  6 +-
>  Documentation/DocBook/media/v4l/vidioc-encoder-cmd.xml |  5 -
>  include/trace/events/v4l2.h|  3 ++-
>  include/uapi/linux/videodev2.h |  2 ++
>  5 files changed, 23 insertions(+), 3 deletions(-)
>
> diff --git a/Documentation/DocBook/media/v4l/io.xml 
> b/Documentation/DocBook/media/v4l/io.xml
> index 1c17f80..f3b8bc0 100644
> --- a/Documentation/DocBook/media/v4l/io.xml
> +++ b/Documentation/DocBook/media/v4l/io.xml
> @@ -1129,6 +1129,16 @@ in this buffer has not been created by the CPU but by 
> some DMA-capable unit,
>  in which case caches have not been used.
>   
>   
> +   V4L2_BUF_FLAG_LAST
> +   0x0010
> +   Last buffer produced by the hardware. mem2mem codec drivers
> +set this flag on the capture queue for the last buffer when the
> +VIDIOC_QUERYBUF or
> +VIDIOC_DQBUF ioctl is called. After the
> +queue is drained, the VIDIOC_DQBUF ioctl 
> will

Perhaps just s/After the queue is drained, the/Any subsequent/ ? This
would make it more clear I feel.
DQBUF of LAST is the end of draining.

> +not block anymore, but return an &EPIPE;.
> + 
> + 
> V4L2_BUF_FLAG_TIMESTAMP_MASK
> 0xe000
> Mask for timestamp types below. To test the
> diff --git a/Documentation/DocBook/media/v4l/vidioc-decoder-cmd.xml 
> b/Documentation/DocBook/media/v4l/vidioc-decoder-cmd.xml
> index 9215627..cbb7135 100644
> --- a/Documentation/DocBook/media/v4l/vidioc-decoder-cmd.xml
> +++ b/Documentation/DocBook/media/v4l/vidioc-decoder-cmd.xml
> @@ -197,7 +197,11 @@ be muted when playing back at a non-standard speed.
>  this command does nothing. This command has two flags:
>  if V4L2_DEC_CMD_STOP_TO_BLACK is set, then the decoder 
> will
>  set the picture to black after it stopped decoding. Otherwise the last image 
> will
> -repeat. If V4L2_DEC_CMD_STOP_IMMEDIATELY is set, then 
> the decoder
> +repeat. mem2mem decoders will stop producing new frames altogether. They 
> will send
> +a V4L2_EVENT_EOS event after the last frame was decoded 
> and

s/was decoded/has been decoded and all frames are ready to be dequeued/

> +will set the V4L2_BUF_FLAG_LAST buffer flag when there 
> will
> +be no new buffers produced to dequeue.

To make the timing description more explicit, s/when there will be no
new buffers produced to dequeue./on the final buffer being dequeued/
perhaps?
EOS indicates "no more buffers will be produced and all are ready to
be dequeued", while LAST indicates "final buffer being dequeued".

> +If V4L2_DEC_CMD_STOP_IMMEDIATELY is set, then the 
> decoder
>  stops immediately (ignoring the pts value), 
> otherwise it
>  will keep decoding until timestamp >= pts or until the last of the pending 
> data from
>  its internal buffers was decoded.
> diff --git a/Documentation/DocBook/media/v4l/vidioc-encoder-cmd.xml 
> b/Documentation/DocBook/media/v4l/vidioc-encoder-cmd.xml
> index 0619ca5..e9cf601 100644
> --- a/Documentation/DocBook/media/v4l/vidioc-encoder-cmd.xml
> +++ b/Documentation/DocBook/media/v4l/vidioc-encoder-cmd.xml
> @@ -129,7 +129,10 @@ this command.
>  encoding will continue until the end of the current Group
>  Of Pictures, otherwise encoding will stop immediately.
>  When the encoder is already stopped, this command does
> -nothing.
> +nothing. mem2mem encoders will send a V4L2_EVENT_EOS 
> event
> +after the last frame was encoded and will set the
> +V4L2_BUF_FLAG_LAST buffer flag on the capture queue when
> +there will be no new buffers produced to dequeue

I'd propose the same here.

-- 
Thanks,
Pawel
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html