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

This commit is contained in:
qctecmdr
2021-07-01 18:02:58 -07:00
committed by Gerrit - the friendly Code Review server
4 changed files with 17 additions and 9 deletions

View File

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

View File

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

View File

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

View File

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