Skip to content

Commit 46a309d

Browse files
ezequielgarciamchehab
authored andcommitted
media: uapi: move H264 stateless controls out of staging
The H.264 stateless 'uAPI' was staging and marked explicitly in the V4L2 specification that it will change and is unstable. Note that these control IDs were never exported as a public API, they were only defined in kernel-local headers (h264-ctrls.h). Now, the H264 stateless controls is ready to be part of the stable uAPI. While not too late, let's rename them and re-number their control IDs, moving them to the newly created stateless control class, and updating all the drivers accordingly. Signed-off-by: Ezequiel Garcia <[email protected]> Tested-by: Jernej Skrabec <[email protected]> Signed-off-by: Hans Verkuil <[email protected]> Signed-off-by: Mauro Carvalho Chehab <[email protected]>
1 parent afc5329 commit 46a309d

File tree

11 files changed

+457
-475
lines changed

11 files changed

+457
-475
lines changed

drivers/media/v4l2-core/v4l2-ctrls.c

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -693,9 +693,9 @@ const char * const *v4l2_ctrl_get_menu(u32 id)
693693
return h264_fp_arrangement_type;
694694
case V4L2_CID_MPEG_VIDEO_H264_FMO_MAP_TYPE:
695695
return h264_fmo_map_type;
696-
case V4L2_CID_MPEG_VIDEO_H264_DECODE_MODE:
696+
case V4L2_CID_STATELESS_H264_DECODE_MODE:
697697
return h264_decode_mode;
698-
case V4L2_CID_MPEG_VIDEO_H264_START_CODE:
698+
case V4L2_CID_STATELESS_H264_START_CODE:
699699
return h264_start_code;
700700
case V4L2_CID_MPEG_VIDEO_MPEG2_LEVEL:
701701
return mpeg_mpeg2_level;
@@ -920,14 +920,6 @@ const char *v4l2_ctrl_get_name(u32 id)
920920
case V4L2_CID_MPEG_VIDEO_H264_I_FRAME_MAX_QP: return "H264 I-Frame Maximum QP Value";
921921
case V4L2_CID_MPEG_VIDEO_H264_P_FRAME_MIN_QP: return "H264 P-Frame Minimum QP Value";
922922
case V4L2_CID_MPEG_VIDEO_H264_P_FRAME_MAX_QP: return "H264 P-Frame Maximum QP Value";
923-
case V4L2_CID_MPEG_VIDEO_H264_SPS: return "H264 Sequence Parameter Set";
924-
case V4L2_CID_MPEG_VIDEO_H264_PPS: return "H264 Picture Parameter Set";
925-
case V4L2_CID_MPEG_VIDEO_H264_SCALING_MATRIX: return "H264 Scaling Matrix";
926-
case V4L2_CID_MPEG_VIDEO_H264_SLICE_PARAMS: return "H264 Slice Parameters";
927-
case V4L2_CID_MPEG_VIDEO_H264_DECODE_PARAMS: return "H264 Decode Parameters";
928-
case V4L2_CID_MPEG_VIDEO_H264_DECODE_MODE: return "H264 Decode Mode";
929-
case V4L2_CID_MPEG_VIDEO_H264_START_CODE: return "H264 Start Code";
930-
case V4L2_CID_MPEG_VIDEO_H264_PRED_WEIGHTS: return "H264 Prediction Weight Table";
931923
case V4L2_CID_MPEG_VIDEO_MPEG2_LEVEL: return "MPEG2 Level";
932924
case V4L2_CID_MPEG_VIDEO_MPEG2_PROFILE: return "MPEG2 Profile";
933925
case V4L2_CID_MPEG_VIDEO_MPEG4_I_FRAME_QP: return "MPEG4 I-Frame QP Value";
@@ -1185,6 +1177,14 @@ const char *v4l2_ctrl_get_name(u32 id)
11851177
/* Stateless Codec controls */
11861178
/* Keep the order of the 'case's the same as in v4l2-controls.h! */
11871179
case V4L2_CID_CODEC_STATELESS_CLASS: return "Stateless Codec Controls";
1180+
case V4L2_CID_STATELESS_H264_DECODE_MODE: return "H264 Decode Mode";
1181+
case V4L2_CID_STATELESS_H264_START_CODE: return "H264 Start Code";
1182+
case V4L2_CID_STATELESS_H264_SPS: return "H264 Sequence Parameter Set";
1183+
case V4L2_CID_STATELESS_H264_PPS: return "H264 Picture Parameter Set";
1184+
case V4L2_CID_STATELESS_H264_SCALING_MATRIX: return "H264 Scaling Matrix";
1185+
case V4L2_CID_STATELESS_H264_PRED_WEIGHTS: return "H264 Prediction Weight Table";
1186+
case V4L2_CID_STATELESS_H264_SLICE_PARAMS: return "H264 Slice Parameters";
1187+
case V4L2_CID_STATELESS_H264_DECODE_PARAMS: return "H264 Decode Parameters";
11881188
default:
11891189
return NULL;
11901190
}
@@ -1310,8 +1310,6 @@ void v4l2_ctrl_fill(u32 id, const char **name, enum v4l2_ctrl_type *type,
13101310
case V4L2_CID_MPEG_VIDEO_H264_VUI_SAR_IDC:
13111311
case V4L2_CID_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE:
13121312
case V4L2_CID_MPEG_VIDEO_H264_FMO_MAP_TYPE:
1313-
case V4L2_CID_MPEG_VIDEO_H264_DECODE_MODE:
1314-
case V4L2_CID_MPEG_VIDEO_H264_START_CODE:
13151313
case V4L2_CID_MPEG_VIDEO_MPEG2_LEVEL:
13161314
case V4L2_CID_MPEG_VIDEO_MPEG2_PROFILE:
13171315
case V4L2_CID_MPEG_VIDEO_MPEG4_LEVEL:
@@ -1342,6 +1340,8 @@ void v4l2_ctrl_fill(u32 id, const char **name, enum v4l2_ctrl_type *type,
13421340
case V4L2_CID_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE:
13431341
case V4L2_CID_MPEG_VIDEO_HEVC_DECODE_MODE:
13441342
case V4L2_CID_MPEG_VIDEO_HEVC_START_CODE:
1343+
case V4L2_CID_STATELESS_H264_DECODE_MODE:
1344+
case V4L2_CID_STATELESS_H264_START_CODE:
13451345
case V4L2_CID_CAMERA_ORIENTATION:
13461346
*type = V4L2_CTRL_TYPE_MENU;
13471347
break;
@@ -1436,22 +1436,22 @@ void v4l2_ctrl_fill(u32 id, const char **name, enum v4l2_ctrl_type *type,
14361436
case V4L2_CID_MPEG_VIDEO_FWHT_PARAMS:
14371437
*type = V4L2_CTRL_TYPE_FWHT_PARAMS;
14381438
break;
1439-
case V4L2_CID_MPEG_VIDEO_H264_SPS:
1439+
case V4L2_CID_STATELESS_H264_SPS:
14401440
*type = V4L2_CTRL_TYPE_H264_SPS;
14411441
break;
1442-
case V4L2_CID_MPEG_VIDEO_H264_PPS:
1442+
case V4L2_CID_STATELESS_H264_PPS:
14431443
*type = V4L2_CTRL_TYPE_H264_PPS;
14441444
break;
1445-
case V4L2_CID_MPEG_VIDEO_H264_SCALING_MATRIX:
1445+
case V4L2_CID_STATELESS_H264_SCALING_MATRIX:
14461446
*type = V4L2_CTRL_TYPE_H264_SCALING_MATRIX;
14471447
break;
1448-
case V4L2_CID_MPEG_VIDEO_H264_SLICE_PARAMS:
1448+
case V4L2_CID_STATELESS_H264_SLICE_PARAMS:
14491449
*type = V4L2_CTRL_TYPE_H264_SLICE_PARAMS;
14501450
break;
1451-
case V4L2_CID_MPEG_VIDEO_H264_DECODE_PARAMS:
1451+
case V4L2_CID_STATELESS_H264_DECODE_PARAMS:
14521452
*type = V4L2_CTRL_TYPE_H264_DECODE_PARAMS;
14531453
break;
1454-
case V4L2_CID_MPEG_VIDEO_H264_PRED_WEIGHTS:
1454+
case V4L2_CID_STATELESS_H264_PRED_WEIGHTS:
14551455
*type = V4L2_CTRL_TYPE_H264_PRED_WEIGHTS;
14561456
break;
14571457
case V4L2_CID_MPEG_VIDEO_VP8_FRAME_HEADER:

drivers/staging/media/hantro/hantro_drv.c

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,7 @@ queue_init(void *priv, struct vb2_queue *src_vq, struct vb2_queue *dst_vq)
231231

232232
static int hantro_try_ctrl(struct v4l2_ctrl *ctrl)
233233
{
234-
if (ctrl->id == V4L2_CID_MPEG_VIDEO_H264_SPS) {
234+
if (ctrl->id == V4L2_CID_STATELESS_H264_SPS) {
235235
const struct v4l2_ctrl_h264_sps *sps = ctrl->p_new.p_h264_sps;
236236

237237
if (sps->chroma_format_idc > 1)
@@ -304,39 +304,39 @@ static const struct hantro_ctrl controls[] = {
304304
}, {
305305
.codec = HANTRO_H264_DECODER,
306306
.cfg = {
307-
.id = V4L2_CID_MPEG_VIDEO_H264_DECODE_PARAMS,
307+
.id = V4L2_CID_STATELESS_H264_DECODE_PARAMS,
308308
},
309309
}, {
310310
.codec = HANTRO_H264_DECODER,
311311
.cfg = {
312-
.id = V4L2_CID_MPEG_VIDEO_H264_SPS,
312+
.id = V4L2_CID_STATELESS_H264_SPS,
313313
.ops = &hantro_ctrl_ops,
314314
},
315315
}, {
316316
.codec = HANTRO_H264_DECODER,
317317
.cfg = {
318-
.id = V4L2_CID_MPEG_VIDEO_H264_PPS,
318+
.id = V4L2_CID_STATELESS_H264_PPS,
319319
},
320320
}, {
321321
.codec = HANTRO_H264_DECODER,
322322
.cfg = {
323-
.id = V4L2_CID_MPEG_VIDEO_H264_SCALING_MATRIX,
323+
.id = V4L2_CID_STATELESS_H264_SCALING_MATRIX,
324324
},
325325
}, {
326326
.codec = HANTRO_H264_DECODER,
327327
.cfg = {
328-
.id = V4L2_CID_MPEG_VIDEO_H264_DECODE_MODE,
329-
.min = V4L2_MPEG_VIDEO_H264_DECODE_MODE_FRAME_BASED,
330-
.def = V4L2_MPEG_VIDEO_H264_DECODE_MODE_FRAME_BASED,
331-
.max = V4L2_MPEG_VIDEO_H264_DECODE_MODE_FRAME_BASED,
328+
.id = V4L2_CID_STATELESS_H264_DECODE_MODE,
329+
.min = V4L2_STATELESS_H264_DECODE_MODE_FRAME_BASED,
330+
.def = V4L2_STATELESS_H264_DECODE_MODE_FRAME_BASED,
331+
.max = V4L2_STATELESS_H264_DECODE_MODE_FRAME_BASED,
332332
},
333333
}, {
334334
.codec = HANTRO_H264_DECODER,
335335
.cfg = {
336-
.id = V4L2_CID_MPEG_VIDEO_H264_START_CODE,
337-
.min = V4L2_MPEG_VIDEO_H264_START_CODE_ANNEX_B,
338-
.def = V4L2_MPEG_VIDEO_H264_START_CODE_ANNEX_B,
339-
.max = V4L2_MPEG_VIDEO_H264_START_CODE_ANNEX_B,
336+
.id = V4L2_CID_STATELESS_H264_START_CODE,
337+
.min = V4L2_STATELESS_H264_START_CODE_ANNEX_B,
338+
.def = V4L2_STATELESS_H264_START_CODE_ANNEX_B,
339+
.max = V4L2_STATELESS_H264_START_CODE_ANNEX_B,
340340
},
341341
}, {
342342
.codec = HANTRO_H264_DECODER,

drivers/staging/media/hantro/hantro_h264.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -344,22 +344,22 @@ int hantro_h264_dec_prepare_run(struct hantro_ctx *ctx)
344344
hantro_start_prepare_run(ctx);
345345

346346
ctrls->scaling =
347-
hantro_get_ctrl(ctx, V4L2_CID_MPEG_VIDEO_H264_SCALING_MATRIX);
347+
hantro_get_ctrl(ctx, V4L2_CID_STATELESS_H264_SCALING_MATRIX);
348348
if (WARN_ON(!ctrls->scaling))
349349
return -EINVAL;
350350

351351
ctrls->decode =
352-
hantro_get_ctrl(ctx, V4L2_CID_MPEG_VIDEO_H264_DECODE_PARAMS);
352+
hantro_get_ctrl(ctx, V4L2_CID_STATELESS_H264_DECODE_PARAMS);
353353
if (WARN_ON(!ctrls->decode))
354354
return -EINVAL;
355355

356356
ctrls->sps =
357-
hantro_get_ctrl(ctx, V4L2_CID_MPEG_VIDEO_H264_SPS);
357+
hantro_get_ctrl(ctx, V4L2_CID_STATELESS_H264_SPS);
358358
if (WARN_ON(!ctrls->sps))
359359
return -EINVAL;
360360

361361
ctrls->pps =
362-
hantro_get_ctrl(ctx, V4L2_CID_MPEG_VIDEO_H264_PPS);
362+
hantro_get_ctrl(ctx, V4L2_CID_STATELESS_H264_PPS);
363363
if (WARN_ON(!ctrls->pps))
364364
return -EINVAL;
365365

drivers/staging/media/rkvdec/rkvdec-h264.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1067,16 +1067,16 @@ static void rkvdec_h264_run_preamble(struct rkvdec_ctx *ctx,
10671067
struct v4l2_ctrl *ctrl;
10681068

10691069
ctrl = v4l2_ctrl_find(&ctx->ctrl_hdl,
1070-
V4L2_CID_MPEG_VIDEO_H264_DECODE_PARAMS);
1070+
V4L2_CID_STATELESS_H264_DECODE_PARAMS);
10711071
run->decode_params = ctrl ? ctrl->p_cur.p : NULL;
10721072
ctrl = v4l2_ctrl_find(&ctx->ctrl_hdl,
1073-
V4L2_CID_MPEG_VIDEO_H264_SPS);
1073+
V4L2_CID_STATELESS_H264_SPS);
10741074
run->sps = ctrl ? ctrl->p_cur.p : NULL;
10751075
ctrl = v4l2_ctrl_find(&ctx->ctrl_hdl,
1076-
V4L2_CID_MPEG_VIDEO_H264_PPS);
1076+
V4L2_CID_STATELESS_H264_PPS);
10771077
run->pps = ctrl ? ctrl->p_cur.p : NULL;
10781078
ctrl = v4l2_ctrl_find(&ctx->ctrl_hdl,
1079-
V4L2_CID_MPEG_VIDEO_H264_SCALING_MATRIX);
1079+
V4L2_CID_STATELESS_H264_SCALING_MATRIX);
10801080
run->scaling_matrix = ctrl ? ctrl->p_cur.p : NULL;
10811081

10821082
rkvdec_run_preamble(ctx, &run->base);

drivers/staging/media/rkvdec/rkvdec.c

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929

3030
static int rkvdec_try_ctrl(struct v4l2_ctrl *ctrl)
3131
{
32-
if (ctrl->id == V4L2_CID_MPEG_VIDEO_H264_SPS) {
32+
if (ctrl->id == V4L2_CID_STATELESS_H264_SPS) {
3333
const struct v4l2_ctrl_h264_sps *sps = ctrl->p_new.p_h264_sps;
3434
/*
3535
* TODO: The hardware supports 10-bit and 4:2:2 profiles,
@@ -56,31 +56,31 @@ static const struct v4l2_ctrl_ops rkvdec_ctrl_ops = {
5656
static const struct rkvdec_ctrl_desc rkvdec_h264_ctrl_descs[] = {
5757
{
5858
.mandatory = true,
59-
.cfg.id = V4L2_CID_MPEG_VIDEO_H264_DECODE_PARAMS,
59+
.cfg.id = V4L2_CID_STATELESS_H264_DECODE_PARAMS,
6060
},
6161
{
6262
.mandatory = true,
63-
.cfg.id = V4L2_CID_MPEG_VIDEO_H264_SPS,
63+
.cfg.id = V4L2_CID_STATELESS_H264_SPS,
6464
.cfg.ops = &rkvdec_ctrl_ops,
6565
},
6666
{
6767
.mandatory = true,
68-
.cfg.id = V4L2_CID_MPEG_VIDEO_H264_PPS,
68+
.cfg.id = V4L2_CID_STATELESS_H264_PPS,
6969
},
7070
{
71-
.cfg.id = V4L2_CID_MPEG_VIDEO_H264_SCALING_MATRIX,
71+
.cfg.id = V4L2_CID_STATELESS_H264_SCALING_MATRIX,
7272
},
7373
{
74-
.cfg.id = V4L2_CID_MPEG_VIDEO_H264_DECODE_MODE,
75-
.cfg.min = V4L2_MPEG_VIDEO_H264_DECODE_MODE_FRAME_BASED,
76-
.cfg.max = V4L2_MPEG_VIDEO_H264_DECODE_MODE_FRAME_BASED,
77-
.cfg.def = V4L2_MPEG_VIDEO_H264_DECODE_MODE_FRAME_BASED,
74+
.cfg.id = V4L2_CID_STATELESS_H264_DECODE_MODE,
75+
.cfg.min = V4L2_STATELESS_H264_DECODE_MODE_FRAME_BASED,
76+
.cfg.max = V4L2_STATELESS_H264_DECODE_MODE_FRAME_BASED,
77+
.cfg.def = V4L2_STATELESS_H264_DECODE_MODE_FRAME_BASED,
7878
},
7979
{
80-
.cfg.id = V4L2_CID_MPEG_VIDEO_H264_START_CODE,
81-
.cfg.min = V4L2_MPEG_VIDEO_H264_START_CODE_ANNEX_B,
82-
.cfg.def = V4L2_MPEG_VIDEO_H264_START_CODE_ANNEX_B,
83-
.cfg.max = V4L2_MPEG_VIDEO_H264_START_CODE_ANNEX_B,
80+
.cfg.id = V4L2_CID_STATELESS_H264_START_CODE,
81+
.cfg.min = V4L2_STATELESS_H264_START_CODE_ANNEX_B,
82+
.cfg.def = V4L2_STATELESS_H264_START_CODE_ANNEX_B,
83+
.cfg.max = V4L2_STATELESS_H264_START_CODE_ANNEX_B,
8484
},
8585
{
8686
.cfg.id = V4L2_CID_MPEG_VIDEO_H264_PROFILE,

drivers/staging/media/sunxi/cedrus/cedrus.c

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -45,60 +45,60 @@ static const struct cedrus_control cedrus_controls[] = {
4545
},
4646
{
4747
.cfg = {
48-
.id = V4L2_CID_MPEG_VIDEO_H264_DECODE_PARAMS,
48+
.id = V4L2_CID_STATELESS_H264_DECODE_PARAMS,
4949
},
5050
.codec = CEDRUS_CODEC_H264,
5151
.required = true,
5252
},
5353
{
5454
.cfg = {
55-
.id = V4L2_CID_MPEG_VIDEO_H264_SLICE_PARAMS,
55+
.id = V4L2_CID_STATELESS_H264_SLICE_PARAMS,
5656
},
5757
.codec = CEDRUS_CODEC_H264,
5858
.required = true,
5959
},
6060
{
6161
.cfg = {
62-
.id = V4L2_CID_MPEG_VIDEO_H264_SPS,
62+
.id = V4L2_CID_STATELESS_H264_SPS,
6363
},
6464
.codec = CEDRUS_CODEC_H264,
6565
.required = true,
6666
},
6767
{
6868
.cfg = {
69-
.id = V4L2_CID_MPEG_VIDEO_H264_PPS,
69+
.id = V4L2_CID_STATELESS_H264_PPS,
7070
},
7171
.codec = CEDRUS_CODEC_H264,
7272
.required = true,
7373
},
7474
{
7575
.cfg = {
76-
.id = V4L2_CID_MPEG_VIDEO_H264_SCALING_MATRIX,
76+
.id = V4L2_CID_STATELESS_H264_SCALING_MATRIX,
7777
},
7878
.codec = CEDRUS_CODEC_H264,
7979
.required = false,
8080
},
8181
{
8282
.cfg = {
83-
.id = V4L2_CID_MPEG_VIDEO_H264_PRED_WEIGHTS,
83+
.id = V4L2_CID_STATELESS_H264_PRED_WEIGHTS,
8484
},
8585
.codec = CEDRUS_CODEC_H264,
8686
.required = false,
8787
},
8888
{
8989
.cfg = {
90-
.id = V4L2_CID_MPEG_VIDEO_H264_DECODE_MODE,
91-
.max = V4L2_MPEG_VIDEO_H264_DECODE_MODE_SLICE_BASED,
92-
.def = V4L2_MPEG_VIDEO_H264_DECODE_MODE_SLICE_BASED,
90+
.id = V4L2_CID_STATELESS_H264_DECODE_MODE,
91+
.max = V4L2_STATELESS_H264_DECODE_MODE_SLICE_BASED,
92+
.def = V4L2_STATELESS_H264_DECODE_MODE_SLICE_BASED,
9393
},
9494
.codec = CEDRUS_CODEC_H264,
9595
.required = false,
9696
},
9797
{
9898
.cfg = {
99-
.id = V4L2_CID_MPEG_VIDEO_H264_START_CODE,
100-
.max = V4L2_MPEG_VIDEO_H264_START_CODE_NONE,
101-
.def = V4L2_MPEG_VIDEO_H264_START_CODE_NONE,
99+
.id = V4L2_CID_STATELESS_H264_START_CODE,
100+
.max = V4L2_STATELESS_H264_START_CODE_NONE,
101+
.def = V4L2_STATELESS_H264_START_CODE_NONE,
102102
},
103103
.codec = CEDRUS_CODEC_H264,
104104
.required = false,

drivers/staging/media/sunxi/cedrus/cedrus_dec.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -48,17 +48,17 @@ void cedrus_device_run(void *priv)
4848

4949
case V4L2_PIX_FMT_H264_SLICE:
5050
run.h264.decode_params = cedrus_find_control_data(ctx,
51-
V4L2_CID_MPEG_VIDEO_H264_DECODE_PARAMS);
51+
V4L2_CID_STATELESS_H264_DECODE_PARAMS);
5252
run.h264.pps = cedrus_find_control_data(ctx,
53-
V4L2_CID_MPEG_VIDEO_H264_PPS);
53+
V4L2_CID_STATELESS_H264_PPS);
5454
run.h264.scaling_matrix = cedrus_find_control_data(ctx,
55-
V4L2_CID_MPEG_VIDEO_H264_SCALING_MATRIX);
55+
V4L2_CID_STATELESS_H264_SCALING_MATRIX);
5656
run.h264.slice_params = cedrus_find_control_data(ctx,
57-
V4L2_CID_MPEG_VIDEO_H264_SLICE_PARAMS);
57+
V4L2_CID_STATELESS_H264_SLICE_PARAMS);
5858
run.h264.sps = cedrus_find_control_data(ctx,
59-
V4L2_CID_MPEG_VIDEO_H264_SPS);
59+
V4L2_CID_STATELESS_H264_SPS);
6060
run.h264.pred_weights = cedrus_find_control_data(ctx,
61-
V4L2_CID_MPEG_VIDEO_H264_PRED_WEIGHTS);
61+
V4L2_CID_STATELESS_H264_PRED_WEIGHTS);
6262
break;
6363

6464
case V4L2_PIX_FMT_HEVC_SLICE:

0 commit comments

Comments
 (0)