video: driver: use cap id for v4l2 ctrl to hfi value mapping

Use cap_id instead of ctrl_id while assigning the respective
hfi values for a v4l2 control and vice versa.

Change-Id: I42f3733a28b4b00ca04605dfc1d2ef0a6fb7833d
Signed-off-by: Dikshita Agarwal <quic_dikshita@quicinc.com>
This commit is contained in:
Dikshita Agarwal
2022-07-13 14:35:30 +05:30
bovenliggende e5bc8371ea
commit 39623d261e

Bestand weergeven

@@ -4287,8 +4287,8 @@ int msm_vidc_v4l2_menu_to_hfi(struct msm_vidc_inst *inst,
{
struct msm_vidc_inst_capability *capability = inst->capabilities;
switch (capability->cap[cap_id].v4l2_id) {
case V4L2_CID_MPEG_VIDEO_H264_ENTROPY_MODE:
switch (cap_id) {
case ENTROPY_MODE:
switch (capability->cap[cap_id].value) {
case V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CABAC:
*value = 1;
@@ -4301,30 +4301,31 @@ int msm_vidc_v4l2_menu_to_hfi(struct msm_vidc_inst *inst,
goto set_default;
}
return 0;
case V4L2_CID_MPEG_VIDC_H264_ENCODE_DELIVERY_MODE:
switch (capability->cap[cap_id].value) {
case V4L2_MPEG_VIDC_H264_ENCODE_DELIVERY_MODE_FRAME_BASED:
*value = 0;
break;
case V4L2_MPEG_VIDC_H264_ENCODE_DELIVERY_MODE_SLICE_BASED:
*value = 1;
break;
default:
*value = 0;
goto set_default;
}
return 0;
case V4L2_CID_MPEG_VIDC_HEVC_ENCODE_DELIVERY_MODE:
switch (capability->cap[cap_id].value) {
case V4L2_MPEG_VIDC_HEVC_ENCODE_DELIVERY_MODE_FRAME_BASED:
*value = 0;
break;
case V4L2_MPEG_VIDC_HEVC_ENCODE_DELIVERY_MODE_SLICE_BASED:
*value = 1;
break;
default:
*value = 0;
goto set_default;
case DELIVERY_MODE:
if (inst->codec == MSM_VIDC_H264) {
switch (capability->cap[cap_id].value) {
case V4L2_MPEG_VIDC_H264_ENCODE_DELIVERY_MODE_FRAME_BASED:
*value = 0;
break;
case V4L2_MPEG_VIDC_H264_ENCODE_DELIVERY_MODE_SLICE_BASED:
*value = 1;
break;
default:
*value = 0;
goto set_default;
}
} else if (inst->codec == MSM_VIDC_HEVC) {
switch (capability->cap[cap_id].value) {
case V4L2_MPEG_VIDC_HEVC_ENCODE_DELIVERY_MODE_FRAME_BASED:
*value = 0;
break;
case V4L2_MPEG_VIDC_HEVC_ENCODE_DELIVERY_MODE_SLICE_BASED:
*value = 1;
break;
default:
*value = 0;
goto set_default;
}
}
return 0;
default:
@@ -4347,38 +4348,34 @@ int msm_vidc_v4l2_to_hfi_enum(struct msm_vidc_inst *inst,
{
struct msm_vidc_inst_capability *capability = inst->capabilities;
switch (capability->cap[cap_id].v4l2_id) {
case V4L2_CID_MPEG_VIDEO_BITRATE_MODE:
switch (cap_id) {
case BITRATE_MODE:
*value = inst->hfi_rc_type;
return 0;
case V4L2_CID_MPEG_VIDEO_HEVC_PROFILE:
case V4L2_CID_MPEG_VIDEO_H264_PROFILE:
case V4L2_CID_MPEG_VIDEO_VP9_PROFILE:
case V4L2_CID_MPEG_VIDEO_AV1_PROFILE:
case V4L2_CID_MPEG_VIDEO_HEVC_LEVEL:
case V4L2_CID_MPEG_VIDEO_H264_LEVEL:
case V4L2_CID_MPEG_VIDEO_VP9_LEVEL:
case V4L2_CID_MPEG_VIDEO_AV1_LEVEL:
case V4L2_CID_MPEG_VIDEO_HEVC_TIER:
case V4L2_CID_MPEG_VIDEO_AV1_TIER:
case V4L2_CID_MPEG_VIDC_VIDEO_BLUR_TYPES:
case PROFILE:
case LEVEL:
case HEVC_TIER:
case AV1_TIER:
case BLUR_TYPES:
*value = capability->cap[cap_id].value;
return 0;
case V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_TYPE:
switch (capability->cap[cap_id].value) {
case V4L2_MPEG_VIDEO_HEVC_HIERARCHICAL_CODING_B:
*value = HFI_HIER_B;
break;
case V4L2_MPEG_VIDEO_HEVC_HIERARCHICAL_CODING_P:
//TODO (AS): check if this is right mapping
*value = HFI_HIER_P_SLIDING_WINDOW;
break;
default:
*value = HFI_HIER_P_SLIDING_WINDOW;
goto set_default;
case LAYER_TYPE:
if (inst->codec == MSM_VIDC_HEVC) {
switch (capability->cap[cap_id].value) {
case V4L2_MPEG_VIDEO_HEVC_HIERARCHICAL_CODING_B:
*value = HFI_HIER_B;
break;
case V4L2_MPEG_VIDEO_HEVC_HIERARCHICAL_CODING_P:
//TODO (AS): check if this is right mapping
*value = HFI_HIER_P_SLIDING_WINDOW;
break;
default:
*value = HFI_HIER_P_SLIDING_WINDOW;
goto set_default;
}
}
return 0;
case V4L2_CID_ROTATE:
case ROTATION:
switch (capability->cap[cap_id].value) {
case 0:
*value = HFI_ROTATION_NONE;
@@ -4397,39 +4394,40 @@ int msm_vidc_v4l2_to_hfi_enum(struct msm_vidc_inst *inst,
goto set_default;
}
return 0;
case V4L2_CID_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE:
switch (capability->cap[cap_id].value) {
case V4L2_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE_ENABLED:
*value = HFI_DEBLOCK_ALL_BOUNDARY;
break;
case V4L2_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE_DISABLED:
*value = HFI_DEBLOCK_DISABLE;
break;
case DB_HEVC_DISABLE_SLICE_BOUNDARY:
*value = HFI_DEBLOCK_DISABLE_AT_SLICE_BOUNDARY;
break;
default:
*value = HFI_DEBLOCK_ALL_BOUNDARY;
goto set_default;
case LF_MODE:
if (inst->codec == MSM_VIDC_HEVC) {
switch (capability->cap[cap_id].value) {
case V4L2_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE_ENABLED:
*value = HFI_DEBLOCK_ALL_BOUNDARY;
break;
case V4L2_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE_DISABLED:
*value = HFI_DEBLOCK_DISABLE;
break;
case DB_HEVC_DISABLE_SLICE_BOUNDARY:
*value = HFI_DEBLOCK_DISABLE_AT_SLICE_BOUNDARY;
break;
default:
*value = HFI_DEBLOCK_ALL_BOUNDARY;
goto set_default;
}
} else if (inst->codec == MSM_VIDC_H264) {
switch (capability->cap[cap_id].value) {
case V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_ENABLED:
*value = HFI_DEBLOCK_ALL_BOUNDARY;
break;
case V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_DISABLED:
*value = HFI_DEBLOCK_DISABLE;
break;
case DB_H264_DISABLE_SLICE_BOUNDARY:
*value = HFI_DEBLOCK_DISABLE_AT_SLICE_BOUNDARY;
break;
default:
*value = HFI_DEBLOCK_ALL_BOUNDARY;
goto set_default;
}
}
return 0;
case V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_MODE:
switch (capability->cap[cap_id].value) {
case V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_ENABLED:
*value = HFI_DEBLOCK_ALL_BOUNDARY;
break;
case V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_DISABLED:
*value = HFI_DEBLOCK_DISABLE;
break;
case DB_H264_DISABLE_SLICE_BOUNDARY:
*value = HFI_DEBLOCK_DISABLE_AT_SLICE_BOUNDARY;
break;
default:
*value = HFI_DEBLOCK_ALL_BOUNDARY;
goto set_default;
}
return 0;
case V4L2_CID_MPEG_VIDEO_HEVC_SIZE_OF_LENGTH_FIELD:
case NAL_LENGTH_FIELD:
switch (capability->cap[cap_id].value) {
case V4L2_MPEG_VIDEO_HEVC_SIZE_4:
*value = HFI_NAL_LENGTH_SIZE_4;