Bladeren bron

Merge "driver: video: Reset sequence change request property only during psc handling"

qctecmdr 4 jaren geleden
bovenliggende
commit
aaab46d99b

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

@@ -504,9 +504,7 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
 		1, V4L2_MPEG_MSM_VIDC_DISABLE,
 		V4L2_CID_MPEG_VIDC_LOWLATENCY_REQUEST,
 		HFI_PROP_SEQ_CHANGE_AT_SYNC_FRAME,
-		CAP_FLAG_INPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED,
-		{0}, {0},
-		NULL, msm_vidc_set_seq_change_at_sync_frame},
+		CAP_FLAG_INPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED},
 
 	{LTR_COUNT, ENC, H264|HEVC,
 		0, 2, 1, 0,

+ 1 - 2
driver/vidc/inc/msm_vidc_control.h

@@ -98,8 +98,7 @@ int msm_vidc_set_csc_custom_matrix(void *instance,
 	enum msm_vidc_inst_capability_type cap_id);
 int msm_vidc_set_session_priority(void* instance,
 	enum msm_vidc_inst_capability_type cap_id);
-int msm_vidc_set_seq_change_at_sync_frame(void* instance,
-	enum msm_vidc_inst_capability_type cap_id);
+int msm_vidc_set_seq_change_at_sync_frame(void *instance);
 int msm_vidc_set_level(void *instance,
 	enum msm_vidc_inst_capability_type cap_id);
 int msm_vidc_set_s32(void *instance,

+ 5 - 1
driver/vidc/src/msm_vdec.c

@@ -762,7 +762,7 @@ static int msm_vdec_set_output_properties(struct msm_vidc_inst *inst)
 	if (rc)
 		return rc;
 
-	rc = msm_vidc_set_seq_change_at_sync_frame(inst, LOWLATENCY_MODE);
+	rc = msm_vidc_set_seq_change_at_sync_frame(inst);
 	if (rc)
 		return rc;
 
@@ -2044,6 +2044,10 @@ int msm_vdec_process_cmd(struct msm_vidc_inst *inst, u32 cmd)
 		if (rc)
 			return rc;
 
+		rc = msm_vidc_set_seq_change_at_sync_frame(inst);
+		if (rc)
+			return rc;
+
 		rc = venus_hfi_session_command(inst,
 				HFI_CMD_RESUME,
 				port,

+ 10 - 3
driver/vidc/src/msm_vidc_control.c

@@ -808,6 +808,14 @@ int msm_v4l2_op_s_ctrl(struct v4l2_ctrl *ctrl)
 		goto exit;
 	}
 
+	if (ctrl->id == V4L2_CID_MPEG_VIDC_LOWLATENCY_REQUEST) {
+		if (ctrl->val == V4L2_MPEG_MSM_VIDC_ENABLE) {
+			rc = msm_vidc_set_seq_change_at_sync_frame(inst);
+			if (rc)
+				return rc;
+		}
+	}
+
 exit:
 	if (rc)
 		msm_vidc_free_capabililty_list(inst, CHILD_LIST | FW_LIST);
@@ -3615,8 +3623,7 @@ int msm_vidc_set_pipe(void *instance,
 	return rc;
 }
 
-int msm_vidc_set_seq_change_at_sync_frame(void* instance,
-	enum msm_vidc_inst_capability_type cap_id)
+int msm_vidc_set_seq_change_at_sync_frame(void *instance)
 {
 	int rc = 0;
 	u32 payload;
@@ -3628,7 +3635,7 @@ int msm_vidc_set_seq_change_at_sync_frame(void* instance,
 	}
 
 	payload = inst->capabilities->cap[LOWLATENCY_MODE].value;
-	rc = msm_vidc_packetize_control(inst, cap_id, HFI_PAYLOAD_U32,
+	rc = msm_vidc_packetize_control(inst, LOWLATENCY_MODE, HFI_PAYLOAD_U32,
 		&payload, sizeof(u32), __func__);
 	if (rc)
 		return rc;