Messages in this thread | | | Date | Wed, 1 Jun 2022 18:02:52 +0200 | Subject | Re: [PATCH v6 09/17] media: uapi: HEVC: Define V4L2_CID_STATELESS_HEVC_SLICE_PARAMS as a dynamic array | From | Benjamin Gaignard <> |
| |
Le 01/06/2022 à 17:43, Jernej Škrabec a écrit : > Dne nedelja, 29. maj 2022 ob 11:19:12 CEST je Jernej Škrabec napisal(a): >> Dne petek, 27. maj 2022 ob 16:31:26 CEST je Benjamin Gaignard napisal(a): >>> 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. >>> >>> Define the max size of the dynamic that can driver can set in .dims = {}. >>> >>> Signed-off-by: Benjamin Gaignard <benjamin.gaignard@collabora.com> >>> --- >>> version 6: >>> - Set V4L2_CTRL_FLAG_DYNAMIC_ARRAY flag automatically when using >>> V4L2_CID_STATELESS_HEVC_SLICE_PARAMS control. >>> - Add a define for max slices count >>> >>> Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst | 2 ++ >>> drivers/media/v4l2-core/v4l2-ctrls-defs.c | 1 + >>> include/media/hevc-ctrls.h | 5 +++++ >>> 3 files changed, 8 insertions(+) >>> >>> diff --git a/Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst b/ >> Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst >>> index 06b967de140c..0796b1563daa 100644 >>> --- a/Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst >>> +++ b/Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst >>> @@ -2986,6 +2986,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/drivers/media/v4l2-core/v4l2-ctrls-defs.c b/drivers/media/ > v4l2- >> core/v4l2-ctrls-defs.c >>> index 9f55503cd3d6..d594efbcbb93 100644 >>> --- a/drivers/media/v4l2-core/v4l2-ctrls-defs.c >>> +++ b/drivers/media/v4l2-core/v4l2-ctrls-defs.c >>> @@ -1510,6 +1510,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; >> This change breaks Cedrus. I'll check what needs to be changed. > Please include the change bellow to keep Cedrus working. I'll expand support > for more slices later.
That will be in version 7. Thanks. I will wait for more reviews on the others patches before send it.
Regards, Benjamin
> > Best regards, > Jernej > > --- a/drivers/staging/media/sunxi/cedrus/cedrus.c > +++ b/drivers/staging/media/sunxi/cedrus/cedrus.c > @@ -178,6 +178,7 @@ static const struct cedrus_control cedrus_controls[] = { > { > .cfg = { > .id = V4L2_CID_STATELESS_HEVC_SLICE_PARAMS, > + .dims = { 1 }, > }, > .codec = CEDRUS_CODEC_H265, > }, > >>> break; >>> case V4L2_CID_STATELESS_HEVC_SCALING_MATRIX: >>> *type = V4L2_CTRL_TYPE_HEVC_SCALING_MATRIX; >>> diff --git a/include/media/hevc-ctrls.h b/include/media/hevc-ctrls.h >>> index 0dbd5d681c28..140151609c96 100644 >>> --- a/include/media/hevc-ctrls.h >>> +++ b/include/media/hevc-ctrls.h >>> @@ -311,9 +311,14 @@ struct v4l2_hevc_pred_weight_table { >>> #define > V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_LOOP_FILTER_ACROSS_SLICES_ENABLED >> (1ULL << 8) >>> #define V4L2_HEVC_SLICE_PARAMS_FLAG_DEPENDENT_SLICE_SEGMENT (1ULL << >> 9) >>> >>> +#define V4L2_HEVC_SLICE_MAX_COUNT 600 >>> + >>> /** >>> * 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. >>> + * >>> * @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) >>> -- >>> 2.32.0 >>> >>> >> >> >
| |