Messages in this thread | | | Date | Thu, 14 Apr 2022 11:06:39 +0200 | Subject | Re: [PATCH v5 09/17] media: uapi: HEVC: Define V4L2_CID_STATELESS_HEVC_SLICE_PARAMS as a dynamic array | From | Benjamin Gaignard <> |
| |
Le 08/04/2022 à 20:53, Nicolas Dufresne a écrit : > Le jeudi 07 avril 2022 à 17:29 +0200, Benjamin Gaignard a écrit : >> Make explicit that V4L2_CID_STATELESS_HEVC_SLICE_PARAMS control is >> a dynamic array control type. >> Some drivers may be able to receive multiple slices in one control >> to improve decoding performance. >> >> Signed-off-by: Benjamin Gaignard <benjamin.gaignard@collabora.com> >> --- >> Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst | 2 ++ >> include/media/hevc-ctrls.h | 3 +++ >> 2 files changed, 5 insertions(+) >> >> diff --git a/Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst b/Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst >> index 7fcc6c2bac4c..1aaf3b84b584 100644 >> --- a/Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst >> +++ b/Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst >> @@ -2964,6 +2964,8 @@ enum v4l2_mpeg_video_hevc_size_of_length_field - >> These bitstream parameters are defined according to :ref:`hevc`. >> They are described in section 7.4.7 "General slice segment header >> semantics" of the specification. >> + This control is a dynamically sized 1-dimensional array, >> + V4L2_CTRL_FLAG_DYNAMIC_ARRAY flag must be set when using it. >> >> .. c:type:: v4l2_ctrl_hevc_slice_params >> >> diff --git a/include/media/hevc-ctrls.h b/include/media/hevc-ctrls.h >> index 96a9b71d1def..28049e1a8a07 100644 >> --- a/include/media/hevc-ctrls.h >> +++ b/include/media/hevc-ctrls.h >> @@ -314,6 +314,9 @@ struct v4l2_hevc_pred_weight_table { >> /** >> * v4l2_ctrl_hevc_slice_params - HEVC slice parameters >> * >> + * This control is a dynamically sized 1-dimensional array, >> + * V4L2_CTRL_FLAG_DYNAMIC_ARRAY flag must be set when using it. >> + * > I'm not sure about this comment, but I'm sure you forgot: > > > --- a/drivers/media/v4l2-core/v4l2-ctrls-defs.c > +++ b/drivers/media/v4l2-core/v4l2-ctrls-defs.c > @@ -1505,6 +1505,7 @@ void v4l2_ctrl_fill(u32 id, const char **name, enum > v4l2_ctrl_type *type, > break; > case V4L2_CID_STATELESS_HEVC_SLICE_PARAMS: > *type = V4L2_CTRL_TYPE_HEVC_SLICE_PARAMS; > + *flags |= V4L2_CTRL_FLAG_DYNAMIC_ARRAY; > break; > case V4L2_CID_STATELESS_HEVC_SCALING_MATRIX: > *type = V4L2_CTRL_TYPE_HEVC_SCALING_MATRIX; > > Also, in AV1 we have V4L2_AV1_MAX_TILE_COUNT, which can be used in cfg.dims, > something the driver will actually set. We could have > > #define V4L2_HEVC_MAX_TILE_COUNT 600 > > And drives can set: > > .dims = { V4L2_HEVC_MAX_TILE_COUNT }, > > In the control config.
Ok that will be in v6
> >> * @bit_size: size (in bits) of the current slice data >> * @data_bit_offset: offset (in bits) to the video data in the current slice data >> * @nal_unit_type: specifies the coding type of the slice (B, P or I)
| |