media: videodev2.h: add V4L2_FMT_FLAG_ENC_CAP_FRAME_INTERVAL flag
authorHans Verkuil <hverkuil-cisco@xs4all.nl>
Tue, 26 May 2020 08:59:53 +0000 (10:59 +0200)
committerMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Tue, 23 Jun 2020 12:02:46 +0000 (14:02 +0200)
Add the V4L2_FMT_FLAG_ENC_CAP_FRAME_INTERVAL flag to signal that
the coded frame interval can be set separately from the raw frame
interval for stateful encoders.

Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Reviewed-by: Michael Tretter <m.tretter@pengutronix.de>
Acked-by: Tomasz Figa <tfiga@chromium.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
Documentation/userspace-api/media/v4l/vidioc-enum-fmt.rst
Documentation/userspace-api/media/videodev2.h.rst.exceptions
include/uapi/linux/videodev2.h

index a53dd3d..05835e0 100644 (file)
@@ -167,17 +167,37 @@ the ``mbus_code`` field is handled differently:
       - The hardware decoder for this compressed bytestream format (aka coded
        format) is capable of parsing a continuous bytestream. Applications do
        not need to parse the bytestream themselves to find the boundaries
-       between frames/fields. This flag can only be used in combination with
-       the ``V4L2_FMT_FLAG_COMPRESSED`` flag, since this applies to compressed
+       between frames/fields.
+
+       This flag can only be used in combination with the
+       ``V4L2_FMT_FLAG_COMPRESSED`` flag, since this applies to compressed
        formats only. This flag is valid for stateful decoders only.
     * - ``V4L2_FMT_FLAG_DYN_RESOLUTION``
       - 0x0008
       - Dynamic resolution switching is supported by the device for this
        compressed bytestream format (aka coded format). It will notify the user
        via the event ``V4L2_EVENT_SOURCE_CHANGE`` when changes in the video
-       parameters are detected. This flag can only be used in combination
-       with the ``V4L2_FMT_FLAG_COMPRESSED`` flag, since this applies to
-       compressed formats only. It is also only applies to stateful codecs.
+       parameters are detected.
+
+       This flag can only be used in combination with the
+       ``V4L2_FMT_FLAG_COMPRESSED`` flag, since this applies to
+       compressed formats only. This flag is valid for stateful codecs only.
+    * - ``V4L2_FMT_FLAG_ENC_CAP_FRAME_INTERVAL``
+      - 0x0010
+      - The hardware encoder supports setting the ``CAPTURE`` coded frame
+       interval separately from the ``OUTPUT`` raw frame interval.
+       Setting the ``OUTPUT`` raw frame interval with :ref:`VIDIOC_S_PARM <VIDIOC_G_PARM>`
+       also sets the ``CAPTURE`` coded frame interval to the same value.
+       If this flag is set, then the ``CAPTURE`` coded frame interval can be
+       set to a different value afterwards. This is typically used for
+       offline encoding where the ``OUTPUT`` raw frame interval is used as
+       a hint for reserving hardware encoder resources and the ``CAPTURE`` coded
+       frame interval is the actual frame rate embedded in the encoded video
+       stream.
+
+       This flag can only be used in combination with the
+       ``V4L2_FMT_FLAG_COMPRESSED`` flag, since this applies to
+        compressed formats only. This flag is valid for stateful encoders only.
 
 
 Return Value
index a625fb9..ca05e4e 100644 (file)
@@ -187,6 +187,7 @@ replace define V4L2_FMT_FLAG_COMPRESSED fmtdesc-flags
 replace define V4L2_FMT_FLAG_EMULATED fmtdesc-flags
 replace define V4L2_FMT_FLAG_CONTINUOUS_BYTESTREAM fmtdesc-flags
 replace define V4L2_FMT_FLAG_DYN_RESOLUTION fmtdesc-flags
+replace define V4L2_FMT_FLAG_ENC_CAP_FRAME_INTERVAL fmtdesc-flags
 
 # V4L2 timecode types
 replace define V4L2_TC_TYPE_24FPS timecode-type
index fec2607..3038054 100644 (file)
@@ -794,6 +794,7 @@ struct v4l2_fmtdesc {
 #define V4L2_FMT_FLAG_EMULATED                 0x0002
 #define V4L2_FMT_FLAG_CONTINUOUS_BYTESTREAM    0x0004
 #define V4L2_FMT_FLAG_DYN_RESOLUTION           0x0008
+#define V4L2_FMT_FLAG_ENC_CAP_FRAME_INTERVAL   0x0010
 
        /* Frame Size and frame rate enumeration */
 /*