On Fri, Aug 30, 2019 at 6:45 PM Hans Verkuil <hverkuil-cisco@xxxxxxxxx> wrote: > > On 8/30/19 11:38 AM, Alexandre Courbot wrote: > > On Fri, Aug 23, 2019 at 4:45 AM Jernej Skrabec <jernej.skrabec@xxxxxxxx> wrote: > >> > >> From: Hans Verkuil <hverkuil-cisco@xxxxxxxxx> > >> > >> Add this new V4L2_DEC_CMD_FLUSH decoder command and document it. > >> > >> Signed-off-by: Hans Verkuil <hverkuil-cisco@xxxxxxxxx> > >> Signed-off-by: Jernej Skrabec <jernej.skrabec@xxxxxxxx> > >> --- > >> Documentation/media/uapi/v4l/vidioc-decoder-cmd.rst | 11 ++++++++++- > >> Documentation/media/videodev2.h.rst.exceptions | 1 + > >> include/uapi/linux/videodev2.h | 1 + > >> 3 files changed, 12 insertions(+), 1 deletion(-) > >> > >> diff --git a/Documentation/media/uapi/v4l/vidioc-decoder-cmd.rst b/Documentation/media/uapi/v4l/vidioc-decoder-cmd.rst > >> index 57f0066f4cff..0bffef6058f7 100644 > >> --- a/Documentation/media/uapi/v4l/vidioc-decoder-cmd.rst > >> +++ b/Documentation/media/uapi/v4l/vidioc-decoder-cmd.rst > >> @@ -208,7 +208,16 @@ introduced in Linux 3.3. They are, however, mandatory for stateful mem2mem decod > >> been started yet, the driver will return an ``EPERM`` error code. When > >> the decoder is already running, this command does nothing. No > >> flags are defined for this command. > >> - > >> + * - ``V4L2_DEC_CMD_FLUSH`` > >> + - 4 > >> + - Flush any held capture buffers. Only valid for stateless decoders, > >> + and only if ``V4L2_BUF_CAP_SUPPORTS_M2M_HOLD_CAPTURE_BUF`` was set. > >> + This command is typically used when the application reached the > >> + end of the stream and the last output buffer had the > >> + ``V4L2_BUF_FLAG_M2M_HOLD_CAPTURE_BUF`` flag set. This would prevent > >> + dequeueing the last capture buffer containing the last decoded frame. > >> + So this command can be used to explicitly flush that last decoded > >> + frame. > > > > Just for safety, can we also specify that it is valid to call this > > command even if no buffer was held (in which case it is a no-op), as > > this can help make user-space code simpler? > > Ah yes, thanks for the reminder. > > Jernej, when you post the next version of this series, can you change the text > above to: > > - Flush any held capture buffers. Only valid for stateless decoders. > This command is typically used when the application reached the > end of the stream and the last output buffer had the > ``V4L2_BUF_FLAG_M2M_HOLD_CAPTURE_BUF`` flag set. This would prevent > dequeueing the capture buffer containing the last decoded frame. > So this command can be used to explicitly flush that final decoded > frame. This command does nothing if there are no held capture buffers. With the above, Reviewed-by: Alexandre Courbot <acourbot@xxxxxxxxxxxx> Thanks! > > Regards, > > Hans > > > > >> > >> Return Value > >> ============ > >> diff --git a/Documentation/media/videodev2.h.rst.exceptions b/Documentation/media/videodev2.h.rst.exceptions > >> index adeb6b7a15cb..a79028e4d929 100644 > >> --- a/Documentation/media/videodev2.h.rst.exceptions > >> +++ b/Documentation/media/videodev2.h.rst.exceptions > >> @@ -434,6 +434,7 @@ replace define V4L2_DEC_CMD_START decoder-cmds > >> replace define V4L2_DEC_CMD_STOP decoder-cmds > >> replace define V4L2_DEC_CMD_PAUSE decoder-cmds > >> replace define V4L2_DEC_CMD_RESUME decoder-cmds > >> +replace define V4L2_DEC_CMD_FLUSH decoder-cmds > >> > >> replace define V4L2_DEC_CMD_START_MUTE_AUDIO decoder-cmds > >> replace define V4L2_DEC_CMD_PAUSE_TO_BLACK decoder-cmds > >> diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h > >> index 4fa9f543742d..91a79e16089c 100644 > >> --- a/include/uapi/linux/videodev2.h > >> +++ b/include/uapi/linux/videodev2.h > >> @@ -1978,6 +1978,7 @@ struct v4l2_encoder_cmd { > >> #define V4L2_DEC_CMD_STOP (1) > >> #define V4L2_DEC_CMD_PAUSE (2) > >> #define V4L2_DEC_CMD_RESUME (3) > >> +#define V4L2_DEC_CMD_FLUSH (4) > >> > >> /* Flags for V4L2_DEC_CMD_START */ > >> #define V4L2_DEC_CMD_START_MUTE_AUDIO (1 << 0) > >> -- > >> 2.22.1 > >> > _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel