Commit 869ba3c8 authored by Benjamin Gaignard's avatar Benjamin Gaignard Committed by Mauro Carvalho Chehab

media: uapi: HEVC: Define V4L2_CID_STATELESS_HEVC_SLICE_PARAMS as a dynamic array

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: default avatarBenjamin Gaignard <benjamin.gaignard@collabora.com>
Reviewed-by: default avatarEzequiel Garcia <ezequiel@vanguardiasur.com.ar>
Signed-off-by: default avatarHans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@kernel.org>
parent 625e9ab4
...@@ -2986,6 +2986,8 @@ enum v4l2_mpeg_video_hevc_size_of_length_field - ...@@ -2986,6 +2986,8 @@ enum v4l2_mpeg_video_hevc_size_of_length_field -
These bitstream parameters are defined according to :ref:`hevc`. These bitstream parameters are defined according to :ref:`hevc`.
They are described in section 7.4.7 "General slice segment header They are described in section 7.4.7 "General slice segment header
semantics" of the specification. 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 .. c:type:: v4l2_ctrl_hevc_slice_params
......
...@@ -1510,6 +1510,7 @@ void v4l2_ctrl_fill(u32 id, const char **name, enum v4l2_ctrl_type *type, ...@@ -1510,6 +1510,7 @@ void v4l2_ctrl_fill(u32 id, const char **name, enum v4l2_ctrl_type *type,
break; break;
case V4L2_CID_STATELESS_HEVC_SLICE_PARAMS: case V4L2_CID_STATELESS_HEVC_SLICE_PARAMS:
*type = V4L2_CTRL_TYPE_HEVC_SLICE_PARAMS; *type = V4L2_CTRL_TYPE_HEVC_SLICE_PARAMS;
*flags |= V4L2_CTRL_FLAG_DYNAMIC_ARRAY;
break; break;
case V4L2_CID_STATELESS_HEVC_SCALING_MATRIX: case V4L2_CID_STATELESS_HEVC_SCALING_MATRIX:
*type = V4L2_CTRL_TYPE_HEVC_SCALING_MATRIX; *type = V4L2_CTRL_TYPE_HEVC_SCALING_MATRIX;
......
...@@ -178,6 +178,8 @@ static const struct cedrus_control cedrus_controls[] = { ...@@ -178,6 +178,8 @@ static const struct cedrus_control cedrus_controls[] = {
{ {
.cfg = { .cfg = {
.id = V4L2_CID_STATELESS_HEVC_SLICE_PARAMS, .id = V4L2_CID_STATELESS_HEVC_SLICE_PARAMS,
/* The driver can only handle 1 entry per slice for now */
.dims = { 1 },
}, },
.codec = CEDRUS_CODEC_H265, .codec = CEDRUS_CODEC_H265,
}, },
......
...@@ -314,6 +314,9 @@ struct v4l2_hevc_pred_weight_table { ...@@ -314,6 +314,9 @@ struct v4l2_hevc_pred_weight_table {
/** /**
* struct v4l2_ctrl_hevc_slice_params - HEVC slice parameters * struct 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 * @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 * @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) * @nal_unit_type: specifies the coding type of the slice (B, P or I)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment