diff --git a/mpp/hal/common/av1/hal_av1d_api_v2.c b/mpp/hal/common/av1/hal_av1d_api_v2.c index c3bbeadc..f9ca5924 100644 --- a/mpp/hal/common/av1/hal_av1d_api_v2.c +++ b/mpp/hal/common/av1/hal_av1d_api_v2.c @@ -70,6 +70,8 @@ MPP_RET hal_av1d_init(void *hal, MppHalCfg *cfg) mpp_err("mpp_dev_init failed ret: %d\n", ret); goto __FAILED; } + cfg->hw_info = mpp_get_dec_hw_info_by_client_type(type); + p_hal->hw_info = cfg->hw_info; //< get buffer group if (p_hal->buf_group == NULL) { diff --git a/mpp/hal/common/av1/hal_av1d_common.h b/mpp/hal/common/av1/hal_av1d_common.h index ffe1d324..63cee11f 100644 --- a/mpp/hal/common/av1/hal_av1d_common.h +++ b/mpp/hal/common/av1/hal_av1d_common.h @@ -188,6 +188,7 @@ typedef struct av1d_hal_ctx_t { MppDev dev; void *reg_ctx; RK_U32 fast_mode; + const MppDecHwCap *hw_info; } Av1dHalCtx; #endif /* __HAL_AV1D_GLOBAL_H__ */ diff --git a/mpp/hal/rkdec/av1d/hal_av1d_vdpu383.c b/mpp/hal/rkdec/av1d/hal_av1d_vdpu383.c index 90fb9a91..c455d5af 100644 --- a/mpp/hal/rkdec/av1d/hal_av1d_vdpu383.c +++ b/mpp/hal/rkdec/av1d/hal_av1d_vdpu383.c @@ -1381,6 +1381,7 @@ MPP_RET vdpu383_av1d_init(void *hal, MppHalCfg *cfg) MPP_RET ret = MPP_OK; Av1dHalCtx *p_hal = (Av1dHalCtx *)hal; INP_CHECK(ret, NULL == p_hal); + (void) cfg; FUN_CHECK(hal_av1d_alloc_res(hal)); @@ -1388,23 +1389,6 @@ MPP_RET vdpu383_av1d_init(void *hal, MppHalCfg *cfg) mpp_slots_set_prop(p_hal->slots, SLOTS_VER_ALIGN, rkv_ver_align); mpp_slots_set_prop(p_hal->slots, SLOTS_LEN_ALIGN, rkv_len_align); - { - // report hw_info to parser - const MppSocInfo *info = mpp_get_soc_info(); - const void *hw_info = NULL; - RK_U32 i; - - for (i = 0; i < MPP_ARRAY_ELEMS(info->dec_caps); i++) { - if (info->dec_caps[i] && info->dec_caps[i]->type == VPU_CLIENT_RKVDEC) { - hw_info = info->dec_caps[i]; - break; - } - } - - mpp_assert(hw_info); - cfg->hw_info = hw_info; - } - __RETURN: return MPP_OK; __FAILED: diff --git a/mpp/hal/rkdec/avs2d/hal_avs2d_api.c b/mpp/hal/rkdec/avs2d/hal_avs2d_api.c index e8711dd3..98c89812 100644 --- a/mpp/hal/rkdec/avs2d/hal_avs2d_api.c +++ b/mpp/hal/rkdec/avs2d/hal_avs2d_api.c @@ -103,6 +103,8 @@ MPP_RET hal_avs2d_init(void *hal, MppHalCfg *cfg) mpp_err("mpp_dev_init failed. ret: %d\n", ret); return ret; } + cfg->hw_info = mpp_get_dec_hw_info_by_client_type(VPU_CLIENT_RKVDEC); + p_hal->hw_info = cfg->hw_info; cfg->support_fast_mode = 1; p_hal->cfg = cfg->cfg; diff --git a/mpp/hal/rkdec/avs2d/hal_avs2d_rkv.c b/mpp/hal/rkdec/avs2d/hal_avs2d_rkv.c index bd2ea8e7..9ad2c349 100644 --- a/mpp/hal/rkdec/avs2d/hal_avs2d_rkv.c +++ b/mpp/hal/rkdec/avs2d/hal_avs2d_rkv.c @@ -551,22 +551,6 @@ MPP_RET hal_avs2d_rkv_init(void *hal, MppHalCfg *cfg) mpp_slots_set_prop(p_hal->frame_slots, SLOTS_VER_ALIGN, avs2d_ver_align); mpp_slots_set_prop(p_hal->frame_slots, SLOTS_LEN_ALIGN, avs2d_len_align); - { - // report hw_info to parser - const MppSocInfo *info = mpp_get_soc_info(); - const void *hw_info = NULL; - - for (i = 0; i < MPP_ARRAY_ELEMS(info->dec_caps); i++) { - if (info->dec_caps[i] && info->dec_caps[i]->type == VPU_CLIENT_RKVDEC) { - hw_info = info->dec_caps[i]; - break; - } - } - - mpp_assert(hw_info); - cfg->hw_info = hw_info; - } - __RETURN: AVS2D_HAL_TRACE("Out. ret %d", ret); (void)cfg; diff --git a/mpp/hal/rkdec/avs2d/hal_avs2d_vdpu382.c b/mpp/hal/rkdec/avs2d/hal_avs2d_vdpu382.c index 1e3eafc9..3bee7808 100644 --- a/mpp/hal/rkdec/avs2d/hal_avs2d_vdpu382.c +++ b/mpp/hal/rkdec/avs2d/hal_avs2d_vdpu382.c @@ -618,23 +618,6 @@ MPP_RET hal_avs2d_vdpu382_init(void *hal, MppHalCfg *cfg) mpp_slots_set_prop(p_hal->frame_slots, SLOTS_VER_ALIGN, avs2d_ver_align); mpp_slots_set_prop(p_hal->frame_slots, SLOTS_LEN_ALIGN, avs2d_len_align); - { - // report hw_info to parser - const MppSocInfo *info = mpp_get_soc_info(); - const void *hw_info = NULL; - - for (i = 0; i < MPP_ARRAY_ELEMS(info->dec_caps); i++) { - if (info->dec_caps[i] && info->dec_caps[i]->type == VPU_CLIENT_RKVDEC) { - hw_info = info->dec_caps[i]; - break; - } - } - - mpp_assert(hw_info); - cfg->hw_info = hw_info; - p_hal->hw_info = hw_info; - } - __RETURN: AVS2D_HAL_TRACE("Out. ret %d", ret); (void)cfg; diff --git a/mpp/hal/rkdec/avs2d/hal_avs2d_vdpu383.c b/mpp/hal/rkdec/avs2d/hal_avs2d_vdpu383.c index 9e0625dc..33cdbfce 100644 --- a/mpp/hal/rkdec/avs2d/hal_avs2d_vdpu383.c +++ b/mpp/hal/rkdec/avs2d/hal_avs2d_vdpu383.c @@ -513,22 +513,6 @@ MPP_RET hal_avs2d_vdpu383_init(void *hal, MppHalCfg *cfg) mpp_slots_set_prop(p_hal->frame_slots, SLOTS_VER_ALIGN, avs2d_ver_align); mpp_slots_set_prop(p_hal->frame_slots, SLOTS_LEN_ALIGN, avs2d_len_align); - { - // report hw_info to parser - const MppSocInfo *info = mpp_get_soc_info(); - const void *hw_info = NULL; - - for (i = 0; i < MPP_ARRAY_ELEMS(info->dec_caps); i++) { - if (info->dec_caps[i] && info->dec_caps[i]->type == VPU_CLIENT_RKVDEC) { - hw_info = info->dec_caps[i]; - break; - } - } - - mpp_assert(hw_info); - cfg->hw_info = hw_info; - } - __RETURN: AVS2D_HAL_TRACE("Out. ret %d", ret); (void)cfg; diff --git a/mpp/hal/rkdec/h264d/hal_h264d_api.c b/mpp/hal/rkdec/h264d/hal_h264d_api.c index 352fea0a..18dc80a0 100644 --- a/mpp/hal/rkdec/h264d/hal_h264d_api.c +++ b/mpp/hal/rkdec/h264d/hal_h264d_api.c @@ -329,6 +329,8 @@ MPP_RET hal_h264d_init(void *hal, MppHalCfg *cfg) mpp_err("mpp_dev_init failed ret: %d\n", ret); goto __FAILED; } + cfg->hw_info = mpp_get_dec_hw_info_by_client_type(client_type); + p_hal->hw_info = cfg->hw_info; //!< callback function to parser module p_hal->dec_cb = cfg->dec_cb; diff --git a/mpp/hal/rkdec/h264d/hal_h264d_rkv_reg.c b/mpp/hal/rkdec/h264d/hal_h264d_rkv_reg.c index be071820..217aeac9 100644 --- a/mpp/hal/rkdec/h264d/hal_h264d_rkv_reg.c +++ b/mpp/hal/rkdec/h264d/hal_h264d_rkv_reg.c @@ -583,22 +583,6 @@ MPP_RET rkv_h264d_init(void *hal, MppHalCfg *cfg) mpp_slots_set_prop(p_hal->frame_slots, SLOTS_VER_ALIGN, rkv_ver_align); mpp_slots_set_prop(p_hal->frame_slots, SLOTS_LEN_ALIGN, rkv_len_align); - { - // report hw_info to parser - const MppSocInfo *info = mpp_get_soc_info(); - const void *hw_info = NULL; - - for (i = 0; i < MPP_ARRAY_ELEMS(info->dec_caps); i++) { - if (info->dec_caps[i] && info->dec_caps[i]->type == VPU_CLIENT_RKVDEC) { - hw_info = info->dec_caps[i]; - break; - } - } - - mpp_assert(hw_info); - cfg->hw_info = hw_info; - } - (void)cfg; __RETURN: return MPP_OK; diff --git a/mpp/hal/rkdec/h264d/hal_h264d_vdpu1.c b/mpp/hal/rkdec/h264d/hal_h264d_vdpu1.c index 60a7d70a..21808a25 100644 --- a/mpp/hal/rkdec/h264d/hal_h264d_vdpu1.c +++ b/mpp/hal/rkdec/h264d/hal_h264d_vdpu1.c @@ -743,6 +743,7 @@ MPP_RET vdpu1_h264d_init(void *hal, MppHalCfg *cfg) MPP_RET ret = MPP_ERR_UNKNOW; H264dHalCtx_t *p_hal = (H264dHalCtx_t *)hal; INP_CHECK(ret, NULL == hal); + (void) cfg; //!< malloc init registers MEM_CHECK(ret, p_hal->priv = @@ -777,23 +778,6 @@ MPP_RET vdpu1_h264d_init(void *hal, MppHalCfg *cfg) mpp_slots_set_prop(p_hal->frame_slots, SLOTS_HOR_ALIGN, vdpu_hor_align); mpp_slots_set_prop(p_hal->frame_slots, SLOTS_VER_ALIGN, vdpu_ver_align); - { - // report hw_info to parser - const MppSocInfo *info = mpp_get_soc_info(); - const void *hw_info = NULL; - RK_U32 i; - - for (i = 0; i < MPP_ARRAY_ELEMS(info->dec_caps); i++) { - if (info->dec_caps[i] && info->dec_caps[i]->type == VPU_CLIENT_VDPU1) { - hw_info = info->dec_caps[i]; - break; - } - } - - mpp_assert(hw_info); - cfg->hw_info = hw_info; - } - __RETURN: return MPP_OK; __FAILED: diff --git a/mpp/hal/rkdec/h264d/hal_h264d_vdpu2.c b/mpp/hal/rkdec/h264d/hal_h264d_vdpu2.c index cb2c766f..86cc8f7e 100644 --- a/mpp/hal/rkdec/h264d/hal_h264d_vdpu2.c +++ b/mpp/hal/rkdec/h264d/hal_h264d_vdpu2.c @@ -802,6 +802,7 @@ MPP_RET vdpu2_h264d_init(void *hal, MppHalCfg *cfg) MPP_RET ret = MPP_ERR_UNKNOW; H264dHalCtx_t *p_hal = (H264dHalCtx_t *)hal; INP_CHECK(ret, NULL == hal); + (void) cfg; MEM_CHECK(ret, p_hal->priv = mpp_calloc_size(void, sizeof(H264dVdpuPriv_t))); @@ -835,23 +836,6 @@ MPP_RET vdpu2_h264d_init(void *hal, MppHalCfg *cfg) mpp_slots_set_prop(p_hal->frame_slots, SLOTS_HOR_ALIGN, vdpu_hor_align); mpp_slots_set_prop(p_hal->frame_slots, SLOTS_VER_ALIGN, vdpu_ver_align); - { - // report hw_info to parser - const MppSocInfo *info = mpp_get_soc_info(); - const void *hw_info = NULL; - RK_U32 i; - - for (i = 0; i < MPP_ARRAY_ELEMS(info->dec_caps); i++) { - if (info->dec_caps[i] && info->dec_caps[i]->type == VPU_CLIENT_VDPU2) { - hw_info = info->dec_caps[i]; - break; - } - } - - mpp_assert(hw_info); - cfg->hw_info = hw_info; - } - __RETURN: return MPP_OK; __FAILED: diff --git a/mpp/hal/rkdec/h264d/hal_h264d_vdpu34x.c b/mpp/hal/rkdec/h264d/hal_h264d_vdpu34x.c index 0fcf4380..ac303fba 100644 --- a/mpp/hal/rkdec/h264d/hal_h264d_vdpu34x.c +++ b/mpp/hal/rkdec/h264d/hal_h264d_vdpu34x.c @@ -747,21 +747,6 @@ MPP_RET vdpu34x_h264d_init(void *hal, MppHalCfg *cfg) mpp_slots_set_prop(p_hal->frame_slots, SLOTS_VER_ALIGN, rkv_ver_align); mpp_slots_set_prop(p_hal->frame_slots, SLOTS_LEN_ALIGN, rkv_len_align); - { - // report hw_info to parser - const MppSocInfo *info = mpp_get_soc_info(); - const void *hw_info = NULL; - - for (i = 0; i < MPP_ARRAY_ELEMS(info->dec_caps); i++) { - if (info->dec_caps[i] && info->dec_caps[i]->type == VPU_CLIENT_RKVDEC) { - hw_info = info->dec_caps[i]; - break; - } - } - - mpp_assert(hw_info); - cfg->hw_info = hw_info; - } if (cfg->hal_fbc_adj_cfg) { cfg->hal_fbc_adj_cfg->func = vdpu34x_afbc_align_calc; cfg->hal_fbc_adj_cfg->expand = 16; diff --git a/mpp/hal/rkdec/h264d/hal_h264d_vdpu382.c b/mpp/hal/rkdec/h264d/hal_h264d_vdpu382.c index f2289772..b20ddbed 100644 --- a/mpp/hal/rkdec/h264d/hal_h264d_vdpu382.c +++ b/mpp/hal/rkdec/h264d/hal_h264d_vdpu382.c @@ -768,24 +768,6 @@ MPP_RET vdpu382_h264d_init(void *hal, MppHalCfg *cfg) mpp_slots_set_prop(p_hal->frame_slots, SLOTS_VER_ALIGN, rkv_ver_align); mpp_slots_set_prop(p_hal->frame_slots, SLOTS_LEN_ALIGN, rkv_len_align); - { - // report hw_info to parser - const MppSocInfo *info = mpp_get_soc_info(); - const void *hw_info = NULL; - - for (i = 0; i < MPP_ARRAY_ELEMS(info->dec_caps); i++) { - if (info->dec_caps[i] && info->dec_caps[i]->type == VPU_CLIENT_RKVDEC) { - hw_info = info->dec_caps[i]; - break; - } - } - - mpp_assert(hw_info); - cfg->hw_info = hw_info; - - p_hal->hw_info = hw_info; - } - { /* check kernel support err ref hack process */ const MppServiceCmdCap *cap = mpp_get_mpp_service_cmd_cap(); diff --git a/mpp/hal/rkdec/h264d/hal_h264d_vdpu383.c b/mpp/hal/rkdec/h264d/hal_h264d_vdpu383.c index 102a47ce..cce0d9f6 100644 --- a/mpp/hal/rkdec/h264d/hal_h264d_vdpu383.c +++ b/mpp/hal/rkdec/h264d/hal_h264d_vdpu383.c @@ -632,6 +632,7 @@ MPP_RET vdpu383_h264d_init(void *hal, MppHalCfg *cfg) H264dHalCtx_t *p_hal = (H264dHalCtx_t *)hal; INP_CHECK(ret, NULL == p_hal); + (void) cfg; MEM_CHECK(ret, p_hal->reg_ctx = mpp_calloc_size(void, sizeof(Vdpu383H264dRegCtx))); Vdpu383H264dRegCtx *reg_ctx = (Vdpu383H264dRegCtx *)p_hal->reg_ctx; @@ -670,22 +671,6 @@ MPP_RET vdpu383_h264d_init(void *hal, MppHalCfg *cfg) mpp_slots_set_prop(p_hal->frame_slots, SLOTS_VER_ALIGN, rkv_ver_align); mpp_slots_set_prop(p_hal->frame_slots, SLOTS_LEN_ALIGN, rkv_len_align); - { - // report hw_info to parser - const MppSocInfo *info = mpp_get_soc_info(); - const void *hw_info = NULL; - - for (i = 0; i < MPP_ARRAY_ELEMS(info->dec_caps); i++) { - if (info->dec_caps[i] && info->dec_caps[i]->type == VPU_CLIENT_RKVDEC) { - hw_info = info->dec_caps[i]; - break; - } - } - - mpp_assert(hw_info); - cfg->hw_info = hw_info; - } - __RETURN: return MPP_OK; __FAILED: diff --git a/mpp/hal/rkdec/h265d/hal_h265d_api.c b/mpp/hal/rkdec/h265d/hal_h265d_api.c index 5eae3dca..3a1ecf61 100644 --- a/mpp/hal/rkdec/h265d/hal_h265d_api.c +++ b/mpp/hal/rkdec/h265d/hal_h265d_api.c @@ -54,6 +54,8 @@ MPP_RET hal_h265d_init(void *ctx, MppHalCfg *cfg) mpp_err("mpp_dev_init failed ret: %d\n", ret); return ret; } + cfg->hw_info = mpp_get_dec_hw_info_by_client_type(client_type); + p->hw_info = cfg->hw_info; hw_id = mpp_get_client_hw_id(client_type); p->dev = cfg->dev; diff --git a/mpp/hal/rkdec/h265d/hal_h265d_rkv.c b/mpp/hal/rkdec/h265d/hal_h265d_rkv.c index 81ecff7c..5e5e4112 100644 --- a/mpp/hal/rkdec/h265d/hal_h265d_rkv.c +++ b/mpp/hal/rkdec/h265d/hal_h265d_rkv.c @@ -210,25 +210,6 @@ MPP_RET hal_h265d_rkv_init(void *hal, MppHalCfg *cfg) return ret; } - - { - // report hw_info to parser - const MppSocInfo *info = mpp_get_soc_info(); - const void *hw_info = NULL; - RK_U32 i = 0; - - for (i = 0; i < MPP_ARRAY_ELEMS(info->dec_caps); i++) { - if (info->dec_caps[i] && ( info->dec_caps[i]->type == VPU_CLIENT_RKVDEC || - info->dec_caps[i]->type == VPU_CLIENT_HEVC_DEC)) { - hw_info = info->dec_caps[i]; - break; - } - } - - mpp_assert(hw_info); - cfg->hw_info = hw_info; - } - #ifdef dump fp = fopen("/data/hal.bin", "wb"); #endif diff --git a/mpp/hal/rkdec/h265d/hal_h265d_vdpu34x.c b/mpp/hal/rkdec/h265d/hal_h265d_vdpu34x.c index 32325a6f..6db50e3f 100644 --- a/mpp/hal/rkdec/h265d/hal_h265d_vdpu34x.c +++ b/mpp/hal/rkdec/h265d/hal_h265d_vdpu34x.c @@ -159,23 +159,6 @@ static MPP_RET hal_h265d_vdpu34x_init(void *hal, MppHalCfg *cfg) return ret; } - { - // report hw_info to parser - const MppSocInfo *info = mpp_get_soc_info(); - const void *hw_info = NULL; - RK_U32 i; - - for (i = 0; i < MPP_ARRAY_ELEMS(info->dec_caps); i++) { - if (info->dec_caps[i] && info->dec_caps[i]->type == VPU_CLIENT_RKVDEC) { - hw_info = info->dec_caps[i]; - break; - } - } - - mpp_assert(hw_info); - cfg->hw_info = hw_info; - } - if (cfg->hal_fbc_adj_cfg) { cfg->hal_fbc_adj_cfg->func = vdpu34x_afbc_align_calc; cfg->hal_fbc_adj_cfg->expand = 16; diff --git a/mpp/hal/rkdec/h265d/hal_h265d_vdpu382.c b/mpp/hal/rkdec/h265d/hal_h265d_vdpu382.c index d4652bd9..b0ae740c 100644 --- a/mpp/hal/rkdec/h265d/hal_h265d_vdpu382.c +++ b/mpp/hal/rkdec/h265d/hal_h265d_vdpu382.c @@ -159,26 +159,6 @@ static MPP_RET hal_h265d_vdpu382_init(void *hal, MppHalCfg *cfg) return ret; } - { - // report hw_info to parser - const MppSocInfo *info = mpp_get_soc_info(); - const void *hw_info = NULL; - RK_U32 i; - - for (i = 0; i < MPP_ARRAY_ELEMS(info->dec_caps); i++) { - if (info->dec_caps[i] && info->dec_caps[i]->type == VPU_CLIENT_RKVDEC) { - hw_info = info->dec_caps[i]; - break; - } - } - - mpp_assert(hw_info); - cfg->hw_info = hw_info; - - //save hw_info to context - reg_ctx->hw_info = hw_info; - } - if (cfg->hal_fbc_adj_cfg) { cfg->hal_fbc_adj_cfg->func = vdpu382_afbc_align_calc; cfg->hal_fbc_adj_cfg->expand = 16; diff --git a/mpp/hal/rkdec/h265d/hal_h265d_vdpu383.c b/mpp/hal/rkdec/h265d/hal_h265d_vdpu383.c index 06dbd2c1..9a0542e4 100644 --- a/mpp/hal/rkdec/h265d/hal_h265d_vdpu383.c +++ b/mpp/hal/rkdec/h265d/hal_h265d_vdpu383.c @@ -173,23 +173,6 @@ static MPP_RET hal_h265d_vdpu383_init(void *hal, MppHalCfg *cfg) return ret; } - { - // report hw_info to parser - const MppSocInfo *info = mpp_get_soc_info(); - const void *hw_info = NULL; - RK_U32 i; - - for (i = 0; i < MPP_ARRAY_ELEMS(info->dec_caps); i++) { - if (info->dec_caps[i] && info->dec_caps[i]->type == VPU_CLIENT_RKVDEC) { - hw_info = info->dec_caps[i]; - break; - } - } - - mpp_assert(hw_info); - cfg->hw_info = hw_info; - } - (void) cfg; return MPP_OK; } diff --git a/mpp/hal/rkdec/vp9d/hal_vp9d_api.c b/mpp/hal/rkdec/vp9d/hal_vp9d_api.c index 1dafaec6..e02039d7 100644 --- a/mpp/hal/rkdec/vp9d/hal_vp9d_api.c +++ b/mpp/hal/rkdec/vp9d/hal_vp9d_api.c @@ -42,6 +42,8 @@ MPP_RET hal_vp9d_init(void *ctx, MppHalCfg *cfg) mpp_err("mpp_dev_init failed ret: %d\n", ret); return ret; } + cfg->hw_info = mpp_get_dec_hw_info_by_client_type(client_type); + p->hw_info = cfg->hw_info; hw_id = mpp_get_client_hw_id(client_type); p->dev = cfg->dev; diff --git a/mpp/hal/rkdec/vp9d/hal_vp9d_vdpu34x.c b/mpp/hal/rkdec/vp9d/hal_vp9d_vdpu34x.c index dfcba08d..a0245d1c 100644 --- a/mpp/hal/rkdec/vp9d/hal_vp9d_vdpu34x.c +++ b/mpp/hal/rkdec/vp9d/hal_vp9d_vdpu34x.c @@ -258,22 +258,6 @@ static MPP_RET hal_vp9d_vdpu34x_init(void *hal, MppHalCfg *cfg) } hw_ctx->last_segid_flag = 1; - { - // report hw_info to parser - const MppSocInfo *info = mpp_get_soc_info(); - const void *hw_info = NULL; - RK_U32 i; - - for (i = 0; i < MPP_ARRAY_ELEMS(info->dec_caps); i++) { - if (info->dec_caps[i] && info->dec_caps[i]->type == VPU_CLIENT_RKVDEC) { - hw_info = info->dec_caps[i]; - break; - } - } - - mpp_assert(hw_info); - cfg->hw_info = hw_info; - } if (cfg->hal_fbc_adj_cfg) { cfg->hal_fbc_adj_cfg->func = vdpu34x_afbc_align_calc; diff --git a/mpp/hal/rkdec/vp9d/hal_vp9d_vdpu382.c b/mpp/hal/rkdec/vp9d/hal_vp9d_vdpu382.c index f267fd19..da3ba195 100644 --- a/mpp/hal/rkdec/vp9d/hal_vp9d_vdpu382.c +++ b/mpp/hal/rkdec/vp9d/hal_vp9d_vdpu382.c @@ -259,23 +259,6 @@ static MPP_RET hal_vp9d_vdpu382_init(void *hal, MppHalCfg *cfg) } hw_ctx->last_segid_flag = 1; - { - // report hw_info to parser - const MppSocInfo *info = mpp_get_soc_info(); - const void *hw_info = NULL; - RK_U32 i; - - for (i = 0; i < MPP_ARRAY_ELEMS(info->dec_caps); i++) { - if (info->dec_caps[i] && info->dec_caps[i]->type == VPU_CLIENT_RKVDEC) { - hw_info = info->dec_caps[i]; - break; - } - } - - mpp_assert(hw_info); - cfg->hw_info = hw_info; - p_hal->hw_info = hw_info; - } if (cfg->hal_fbc_adj_cfg) { cfg->hal_fbc_adj_cfg->func = vdpu382_afbc_align_calc; diff --git a/mpp/hal/rkdec/vp9d/hal_vp9d_vdpu383.c b/mpp/hal/rkdec/vp9d/hal_vp9d_vdpu383.c index 58b5c49b..e345e7fa 100644 --- a/mpp/hal/rkdec/vp9d/hal_vp9d_vdpu383.c +++ b/mpp/hal/rkdec/vp9d/hal_vp9d_vdpu383.c @@ -341,6 +341,7 @@ static MPP_RET hal_vp9d_vdpu383_init(void *hal, MppHalCfg *cfg) HalVp9dCtx *p_hal = (HalVp9dCtx*)hal; MEM_CHECK(ret, p_hal->hw_ctx = mpp_calloc_size(void, sizeof(Vdpu383Vp9dCtx))); Vdpu383Vp9dCtx *hw_ctx = (Vdpu383Vp9dCtx*)p_hal->hw_ctx; + (void) cfg; hw_ctx->mv_base_addr = -1; hw_ctx->pre_mv_base_addr = -1; @@ -362,22 +363,6 @@ static MPP_RET hal_vp9d_vdpu383_init(void *hal, MppHalCfg *cfg) } hw_ctx->last_segid_flag = 1; - { - // report hw_info to parser - const MppSocInfo *info = mpp_get_soc_info(); - const void *hw_info = NULL; - RK_U32 i; - - for (i = 0; i < MPP_ARRAY_ELEMS(info->dec_caps); i++) { - if (info->dec_caps[i] && info->dec_caps[i]->type == VPU_CLIENT_RKVDEC) { - hw_info = info->dec_caps[i]; - break; - } - } - - mpp_assert(hw_info); - cfg->hw_info = hw_info; - } return ret; __FAILED: diff --git a/osal/inc/mpp_soc.h b/osal/inc/mpp_soc.h index d666ff7c..c629809b 100644 --- a/osal/inc/mpp_soc.h +++ b/osal/inc/mpp_soc.h @@ -103,6 +103,7 @@ RockchipSocType mpp_get_soc_type(void); const MppSocInfo *mpp_get_soc_info(void); RK_U32 mpp_check_soc_cap(MppCtxType type, MppCodingType coding); +const MppDecHwCap* mpp_get_dec_hw_info_by_client_type(MppClientType client_type); #ifdef __cplusplus } diff --git a/osal/mpp_soc.cpp b/osal/mpp_soc.cpp index 051004ef..c8fa1000 100644 --- a/osal/mpp_soc.cpp +++ b/osal/mpp_soc.cpp @@ -1135,3 +1135,19 @@ RK_U32 mpp_check_soc_cap(MppCtxType type, MppCodingType coding) return is_valid_cap_coding(cap, coding); } + +const MppDecHwCap* mpp_get_dec_hw_info_by_client_type(MppClientType client_type) +{ + const MppDecHwCap* hw_info = NULL; + const MppSocInfo *info = mpp_get_soc_info(); + RK_U32 i = 0; + + for (i = 0; i < MPP_ARRAY_ELEMS(info->dec_caps); i++) { + if (info->dec_caps[i] && info->dec_caps[i]->type == client_type) { + hw_info = info->dec_caps[i]; + break; + } + } + + return hw_info; +}