diff --git a/driver/platform/waipio/src/msm_vidc_waipio.c b/driver/platform/waipio/src/msm_vidc_waipio.c index 7c48727cc9..e83b7ff608 100644 --- a/driver/platform/waipio/src/msm_vidc_waipio.c +++ b/driver/platform/waipio/src/msm_vidc_waipio.c @@ -481,10 +481,10 @@ static struct msm_platform_inst_capability instance_data_waipio[] = { V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE, 1, V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_CID_MPEG_VIDC_LOWLATENCY_REQUEST, - HFI_PROP_STAGE, - CAP_FLAG_DYNAMIC_ALLOWED, + HFI_PROP_SEQ_CHANGE_AT_SYNC_FRAME, + CAP_FLAG_INPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED, {0}, {0}, - NULL, msm_vidc_set_stage}, + NULL, msm_vidc_set_seq_change_at_sync_frame}, {LTR_COUNT, ENC, H264|HEVC, 0, 2, 1, 0, diff --git a/driver/vidc/inc/msm_vidc_control.h b/driver/vidc/inc/msm_vidc_control.h index 9595717963..f0aebcc2de 100644 --- a/driver/vidc/inc/msm_vidc_control.h +++ b/driver/vidc/inc/msm_vidc_control.h @@ -95,6 +95,8 @@ 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_s32(void *instance, enum msm_vidc_inst_capability_type cap_id); int msm_vidc_set_q16(void *instance, diff --git a/driver/vidc/src/msm_vdec.c b/driver/vidc/src/msm_vdec.c index afdaeb82af..f0f17d09f6 100644 --- a/driver/vidc/src/msm_vdec.c +++ b/driver/vidc/src/msm_vdec.c @@ -778,6 +778,10 @@ 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); + if (rc) + return rc; + return rc; } diff --git a/driver/vidc/src/msm_vidc_control.c b/driver/vidc/src/msm_vidc_control.c index d41214c136..4d948e79f1 100644 --- a/driver/vidc/src/msm_vidc_control.c +++ b/driver/vidc/src/msm_vidc_control.c @@ -3351,3 +3351,24 @@ 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 rc = 0; + u32 payload; + struct msm_vidc_inst* inst = (struct msm_vidc_inst*)instance; + + if (!inst || !inst->capabilities) { + d_vpr_e("%s: invalid params\n", __func__); + return -EINVAL; + } + + payload = inst->capabilities->cap[LOWLATENCY_MODE].value; + rc = msm_vidc_packetize_control(inst, cap_id, HFI_PAYLOAD_U32, + &payload, sizeof(u32), __func__); + if (rc) + return rc; + + return rc; +} \ No newline at end of file