From b0b1581fc1936b609f64fb000c47c6b90ddd85fa Mon Sep 17 00:00:00 2001 From: Rohit Kulkarni Date: Fri, 29 Apr 2016 13:40:32 -0700 Subject: [PATCH] msm: vidc: Use Dcvs only when there is no resolution change When driver detects that there is a dynamic resolution change mid-stream it will not activate dcvs. CRs-Fixed: 1007339 Change-Id: Ia5e5b42598b7e32360267e42665a5ce3880aaeee Signed-off-by: Rohit Kulkarni --- drivers/media/platform/msm/vidc/msm_vidc_common.c | 2 ++ drivers/media/platform/msm/vidc/msm_vidc_dcvs.c | 3 ++- drivers/media/platform/msm/vidc/msm_vidc_internal.h | 1 + 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/media/platform/msm/vidc/msm_vidc_common.c b/drivers/media/platform/msm/vidc/msm_vidc_common.c index 4de9be4f44e5..ae0e3918cdf2 100644 --- a/drivers/media/platform/msm/vidc/msm_vidc_common.c +++ b/drivers/media/platform/msm/vidc/msm_vidc_common.c @@ -1174,6 +1174,8 @@ static void handle_event_change(enum hal_command_response cmd, void *data) inst->prop.width[OUTPUT_PORT] = event_notify->width; } + inst->seqchanged_count++; + if (inst->session_type == MSM_VIDC_DECODER) msm_dcvs_init_load(inst); diff --git a/drivers/media/platform/msm/vidc/msm_vidc_dcvs.c b/drivers/media/platform/msm/vidc/msm_vidc_dcvs.c index 5e29fb94894e..fd93f7831777 100644 --- a/drivers/media/platform/msm/vidc/msm_vidc_dcvs.c +++ b/drivers/media/platform/msm/vidc/msm_vidc_dcvs.c @@ -619,7 +619,8 @@ static bool msm_dcvs_check_supported(struct msm_vidc_inst *inst) if (!is_codec_supported || !IS_VALID_DCVS_SESSION(num_mbs_per_frame, res->dcvs_limit[inst->session_type].min_mbpf) || - !IS_VALID_DCVS_SESSION(instance_load, dcvs_limit)) + !IS_VALID_DCVS_SESSION(instance_load, dcvs_limit) || + inst->seqchanged_count > 1) return false; if (!output_buf_req) { diff --git a/drivers/media/platform/msm/vidc/msm_vidc_internal.h b/drivers/media/platform/msm/vidc/msm_vidc_internal.h index 97d5abf17922..cf51ebc6f978 100644 --- a/drivers/media/platform/msm/vidc/msm_vidc_internal.h +++ b/drivers/media/platform/msm/vidc/msm_vidc_internal.h @@ -274,6 +274,7 @@ struct msm_vidc_inst { bool in_reconfig; u32 reconfig_width; u32 reconfig_height; + u32 seqchanged_count; struct dentry *debugfs_root; void *priv; struct msm_vidc_debug debug;