From e786da48eb74f2d453890029bb504f768b7e33d7 Mon Sep 17 00:00:00 2001 From: Priyanka Gujjula Date: Mon, 25 Oct 2021 21:36:44 +0530 Subject: [PATCH] video: driver: Use max fps from inst caps Use maximum framerate from published instance caps to make it platform agnostic. Change-Id: I319768e722774969287abb9e782ddbece7593ff9 Signed-off-by: Priyanka Gujjula --- driver/platform/waipio/src/msm_vidc_waipio.c | 2 ++ driver/variant/iris2/src/msm_vidc_power_iris2.c | 4 ++-- driver/vidc/inc/msm_vidc_internal.h | 2 -- driver/vidc/src/msm_vidc.c | 5 +++-- driver/vidc/src/msm_vidc_driver.c | 5 +++-- 5 files changed, 10 insertions(+), 8 deletions(-) diff --git a/driver/platform/waipio/src/msm_vidc_waipio.c b/driver/platform/waipio/src/msm_vidc_waipio.c index dd539b92e3..b00ae7eafa 100644 --- a/driver/platform/waipio/src/msm_vidc_waipio.c +++ b/driver/platform/waipio/src/msm_vidc_waipio.c @@ -18,6 +18,8 @@ #define MAX_BASE_LAYER_PRIORITY_ID 63 #define MAX_BITRATE 220000000 #define DEFAULT_BITRATE 20000000 +#define MINIMUM_FPS 1 +#define MAXIMUM_FPS 960 #define MIN_QP_10BIT -12 #define MIN_QP_8BIT 0 #define MAX_QP 51 diff --git a/driver/variant/iris2/src/msm_vidc_power_iris2.c b/driver/variant/iris2/src/msm_vidc_power_iris2.c index 2d1a60348a..88f9ad7f9f 100644 --- a/driver/variant/iris2/src/msm_vidc_power_iris2.c +++ b/driver/variant/iris2/src/msm_vidc_power_iris2.c @@ -166,7 +166,7 @@ u64 msm_vidc_calc_freq_iris2(struct msm_vidc_inst *inst, u32 data_size) vsp_cycles += mbs_per_second * base_cycles; /* Add 25 percent extra for 960fps use case */ - if (fps >= MAXIMUM_FPS) + if (fps >= 960) vsp_cycles += div_u64(vpp_cycles * 25, 100); if (inst->codec == MSM_VIDC_VP9 && @@ -372,7 +372,7 @@ static u64 __calculate_decoder(struct vidc_bus_vote_data *d) llc.line_buffer_write + ddr.total; /* Add 25 percent extra for 960fps use case */ - if (fps >= MAXIMUM_FPS) { + if (fps >= 960) { ddr.total += div_u64(ddr.total * 25, 100); llc.total += div_u64(llc.total * 25, 100); } diff --git a/driver/vidc/inc/msm_vidc_internal.h b/driver/vidc/inc/msm_vidc_internal.h index 5fa6a87b75..833e9e40f5 100644 --- a/driver/vidc/inc/msm_vidc_internal.h +++ b/driver/vidc/inc/msm_vidc_internal.h @@ -30,8 +30,6 @@ #define MIN_SUPPORTED_WIDTH 32 #define MIN_SUPPORTED_HEIGHT 32 #define DEFAULT_FPS 30 -#define MINIMUM_FPS 1 -#define MAXIMUM_FPS 960 #define MAXIMUM_VP9_FPS 60 #define SINGLE_INPUT_BUFFER 1 #define SINGLE_OUTPUT_BUFFER 1 diff --git a/driver/vidc/src/msm_vidc.c b/driver/vidc/src/msm_vidc.c index 3b91c66d53..81924a65a4 100644 --- a/driver/vidc/src/msm_vidc.c +++ b/driver/vidc/src/msm_vidc.c @@ -729,11 +729,12 @@ int msm_vidc_enum_frameintervals(void *instance, struct v4l2_frmivalenum *fival) fival->type = V4L2_FRMIVAL_TYPE_STEPWISE; fival->stepwise.min.numerator = 1; - fival->stepwise.min.denominator = min_t(u32, fps, MAXIMUM_FPS); + fival->stepwise.min.denominator = + min_t(u32, fps, capability->cap[FRAME_RATE].max); fival->stepwise.max.numerator = 1; fival->stepwise.max.denominator = 1; fival->stepwise.step.numerator = 1; - fival->stepwise.step.denominator = MAXIMUM_FPS; + fival->stepwise.step.denominator = capability->cap[FRAME_RATE].max; return 0; } diff --git a/driver/vidc/src/msm_vidc_driver.c b/driver/vidc/src/msm_vidc_driver.c index a7a32ce1fd..ba876c14cd 100644 --- a/driver/vidc/src/msm_vidc_driver.c +++ b/driver/vidc/src/msm_vidc_driver.c @@ -2641,7 +2641,7 @@ void msm_vidc_allow_dcvs(struct msm_vidc_inst *inst) struct msm_vidc_core *core; u32 fps; - if (!inst || !inst->core) { + if (!inst || !inst->core || !inst->capabilities) { d_vpr_e("%s: Invalid args: %pK\n", __func__, inst); return; } @@ -2696,7 +2696,8 @@ void msm_vidc_allow_dcvs(struct msm_vidc_inst *inst) } fps = msm_vidc_get_fps(inst); - if (is_decode_session(inst) && fps >= MAXIMUM_FPS) { + if (is_decode_session(inst) && + fps >= inst->capabilities->cap[FRAME_RATE].max) { allow = false; i_vpr_h(inst, "%s: unsupported fps %d\n", __func__, fps); goto exit;