Browse Source

video: driver: Allow HB layer encoding type

- Allow HB layer encoding type
- fix dynamic setting of I Frame QP and Peak Bitrate.

This reverts commit 4ef2b8899d7e493e4115892a2d0e14b7e9a4d98f.

Change-Id: I4d63dd424c68d388709684c649ef492ce2489caa
Akshata Sahukar 4 years ago
parent
commit
925c0b1a58

+ 4 - 3
driver/platform/waipio/src/msm_vidc_waipio.c

@@ -670,10 +670,10 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
 		HFI_PROP_QP_PACKED,
 		CAP_FLAG_ROOT | CAP_FLAG_OUTPUT_PORT},
 
-	/* TODO: Allow only HP until fw fatal error for HB type is resolved */
 	{LAYER_TYPE, ENC, HEVC,
+		V4L2_MPEG_VIDEO_HEVC_HIERARCHICAL_CODING_B,
 		V4L2_MPEG_VIDEO_HEVC_HIERARCHICAL_CODING_P,
-		V4L2_MPEG_VIDEO_HEVC_HIERARCHICAL_CODING_P,
+		BIT(V4L2_MPEG_VIDEO_HEVC_HIERARCHICAL_CODING_B) |
 		BIT(V4L2_MPEG_VIDEO_HEVC_HIERARCHICAL_CODING_P),
 		V4L2_MPEG_VIDEO_HEVC_HIERARCHICAL_CODING_P,
 		V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_TYPE,
@@ -681,8 +681,9 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
 		CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU},
 
 	{LAYER_TYPE, ENC, H264,
+		V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_B,
 		V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_P,
-		V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_P,
+		BIT(V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_B) |
 		BIT(V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_P),
 		V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_P,
 		V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_TYPE,

+ 12 - 0
driver/vidc/src/msm_vidc_control.c

@@ -1389,6 +1389,10 @@ int msm_vidc_adjust_hevc_min_qp(void *instance, struct v4l2_ctrl *ctrl)
 	}
 	capability = inst->capabilities;
 
+	if (ctrl)
+		msm_vidc_update_cap_value(inst, MIN_FRAME_QP,
+			ctrl->val, __func__);
+
 	rc = msm_vidc_adjust_hevc_qp(inst, MIN_FRAME_QP);
 
 	return rc;
@@ -1406,6 +1410,10 @@ int msm_vidc_adjust_hevc_max_qp(void *instance, struct v4l2_ctrl *ctrl)
 	}
 	capability = inst->capabilities;
 
+	if (ctrl)
+		msm_vidc_update_cap_value(inst, MAX_FRAME_QP,
+			ctrl->val, __func__);
+
 	rc = msm_vidc_adjust_hevc_qp(inst, MAX_FRAME_QP);
 
 	return rc;
@@ -1423,6 +1431,10 @@ int msm_vidc_adjust_hevc_frame_qp(void *instance, struct v4l2_ctrl *ctrl)
 	}
 	capability = inst->capabilities;
 
+	if (ctrl)
+		msm_vidc_update_cap_value(inst, I_FRAME_QP,
+			ctrl->val, __func__);
+
 	rc = msm_vidc_adjust_hevc_qp(inst, I_FRAME_QP);
 
 	return rc;

+ 1 - 0
driver/vidc/src/msm_vidc_driver.c

@@ -1097,6 +1097,7 @@ bool msm_vidc_allow_s_ctrl(struct msm_vidc_inst *inst, u32 id)
 			case V4L2_CID_MPEG_VIDC_VIDEO_BLUR_RESOLUTION:
 			case V4L2_CID_MPEG_VIDEO_CONSTANT_QUALITY:
 			case V4L2_CID_MPEG_VIDC_ENC_INPUT_COMPRESSION_RATIO:
+			case V4L2_CID_MPEG_VIDEO_BITRATE_PEAK:
 				allow = true;
 				break;
 			default: