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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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 <p.zabel@xxxxxxxxxxxxxx> wrote:
> > From: Peter Seiderer <ps.report@xxxxxxx>
> >
> > 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 <ps.report@xxxxxxx>
> > Signed-off-by: Philipp Zabel <p.zabel@xxxxxxxxxxxxxx>
> > ---
> > 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.</entry>
> >           </row>
> >           <row>
> > +           <entry><constant>V4L2_BUF_FLAG_LAST</constant></entry>
> > +           <entry>0x00100000</entry>
> > +           <entry>Last buffer produced by the hardware. mem2mem codec drivers
> > +set this flag on the capture queue for the last buffer when the
> > +<link linkend="vidioc-querybuf">VIDIOC_QUERYBUF</link> or
> > +<link linkend="vidioc-qbuf">VIDIOC_DQBUF</link> ioctl is called. After the
> > +queue is drained, the <link linkend="vidioc-qbuf">VIDIOC_DQBUF</link> 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;.</entry>
> > +         </row>
> > +         <row>
> >             <entry><constant>V4L2_BUF_FLAG_TIMESTAMP_MASK</constant></entry>
> >             <entry>0x0000e000</entry>
> >             <entry>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 <constant>V4L2_DEC_CMD_STOP_TO_BLACK</constant> is set, then the decoder will
> >  set the picture to black after it stopped decoding. Otherwise the last image will
> > -repeat. If <constant>V4L2_DEC_CMD_STOP_IMMEDIATELY</constant> is set, then the decoder
> > +repeat. mem2mem decoders will stop producing new frames altogether. They will send
> > +a <constant>V4L2_EVENT_EOS</constant> 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 <constant>V4L2_BUF_FLAG_LAST</constant> 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 <constant>V4L2_DEC_CMD_STOP_IMMEDIATELY</constant> is set, then the decoder
> >  stops immediately (ignoring the <structfield>pts</structfield> 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.</entry>
> >  encoding will continue until the end of the current <wordasword>Group
> >  Of Pictures</wordasword>, otherwise encoding will stop immediately.
> >  When the encoder is already stopped, this command does
> > -nothing.</entry>
> > +nothing. mem2mem encoders will send a <constant>V4L2_EVENT_EOS</constant> event
> > +after the last frame was encoded and will set the
> > +<constant>V4L2_BUF_FLAG_LAST</constant> buffer flag on the capture queue when
> > +there will be no new buffers produced to dequeue</entry>
> 
> 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 majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux