On 04/06/2017 08:11 AM, Smitha T Murthy wrote: > @@ -775,6 +832,47 @@ const char *v4l2_ctrl_get_name(u32 id) > case V4L2_CID_MPEG_VIDEO_VPX_P_FRAME_QP: return "VPX > P-Frame QP Value"; > case V4L2_CID_MPEG_VIDEO_VPX_PROFILE: return "VPX > Profile"; > > + /* HEVC controls */ [...] > + case V4L2_CID_MPEG_VIDEO_HEVC_LF_SLICE_BOUNDARY: return "HEVC LF > Across Slice Boundary or Not";
Please make sure the names are no longer than 31 characters to avoid truncation during control enumeration in user space. Data structures like struct v4l2_queryctrl, struct v4l2_query_ext_ctrl have only 32 bytes long array dedicated for the control name. > + case V4L2_CID_MPEG_VIDEO_HEVC_HIERARCHICAL_QP: return "HEVC QP > Values"; > + case V4L2_CID_MPEG_VIDEO_HEVC_HIERARCHICAL_CODING_TYPE: return "HEVC > Hierarchical Coding Type"; > + case V4L2_CID_MPEG_VIDEO_HEVC_HIERARCHICAL_CODING_LAYER:return "HEVC > Hierarchical Coding Layer"; > + case V4L2_CID_MPEG_VIDEO_HEVC_HIERARCHICAL_CODING_LAYER_QP:return "HEVC > Hierarchical Layer QP"; How about s/HIERARCHICAL_/HIER_ for the above 3 control IDs? > + case V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_LAYER0_BITRATE:return "HEVC > Hierarchical Lay 0 Bit Rate"; > + case V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_LAYER1_BITRATE:return "HEVC > Hierarchical Lay 1 Bit Rate"; > + case V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_LAYER2_BITRATE:return "HEVC > Hierarchical Lay 2 Bit Rate"; > + case V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_LAYER3_BITRATE:return "HEVC > Hierarchical Lay 3 Bit Rate"; > + case V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_LAYER4_BITRATE:return "HEVC > Hierarchical Lay 4 Bit Rate"; > + case V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_LAYER5_BITRATE:return "HEVC > Hierarchical Lay 5 Bit Rate"; > + case V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_LAYER6_BITRATE:return "HEVC > Hierarchical Lay 6 Bit Rate"; Using single letter L instead of LAYER would make the control ID shorter and more consistent with existing controls, e.g. V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L6_BITRATE. > + case V4L2_CID_MPEG_VIDEO_HEVC_SIGN_DATA_HIDING: return "HEVC > Sign Data Hiding"; > + case V4L2_CID_MPEG_VIDEO_HEVC_GENERAL_PB: return "HEVC > General PB"; > + case V4L2_CID_MPEG_VIDEO_HEVC_TEMPORAL_ID: return "HEVC > Temporal ID"; > + case V4L2_CID_MPEG_VIDEO_HEVC_STRONG_SMOOTHING: return "HEVC > Strong Intra Smoothing"; > + case V4L2_CID_MPEG_VIDEO_HEVC_INTRA_PU_SPLIT: return "HEVC > Intra PU Split"; > + case V4L2_CID_MPEG_VIDEO_HEVC_TMV_PREDICTION: return "HEVC > TMV Prediction"; > + case V4L2_CID_MPEG_VIDEO_HEVC_MAX_NUM_MERGE_MV_MINUS1: return "HEVC > Max Number of Candidate MVs"; > + case V4L2_CID_MPEG_VIDEO_HEVC_WITHOUT_STARTCODE: return "HEVC > ENC Without Startcode"; > + case V4L2_CID_MPEG_VIDEO_HEVC_REFRESH_PERIOD: return "HEVC > Num of I Frame b/w 2 IDR"; > + case V4L2_CID_MPEG_VIDEO_HEVC_LF_BETA_OFFSET_DIV2: return "HEVC > Loop Filter Beta Offset"; > + case V4L2_CID_MPEG_VIDEO_HEVC_LF_TC_OFFSET_DIV2: return "HEVC > Loop Filter tc Offset"; s/tc/Tc or s/tc/TC ? > + case V4L2_CID_MPEG_VIDEO_HEVC_SIZE_OF_LENGTH_FIELD: return "HEVC > Size of Length Field"; -- Thanks, Sylwester