[platform]: Update some SOC's codec support

rk3228 do NOT have jpeg encoder and rk3036 do NOT have all encoder. we
update the device name in mpp_get_vcodec_dev_name function.

Change-Id: If80d864543761572645928e59e1e09fc906fec31
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
This commit is contained in:
Herman Chen
2018-05-09 10:29:03 +08:00
parent 73056c6eb1
commit c87119b698
2 changed files with 18 additions and 0 deletions

View File

@@ -92,6 +92,12 @@ static MPP_RET hal_jpege_init(void *hal, MppHalCfg *cfg)
p_api = &ctx->hal_api; p_api = &ctx->hal_api;
// NOTE: rk3036 and rk3228 do NOT have jpeg encoder
if (NULL == mpp_get_vcodec_dev_name(MPP_CTX_ENC, MPP_VIDEO_CodingMJPEG)) {
mpp_err("SOC %s do NOT support jpeg encoding\n", mpp_get_soc_name());
return MPP_ERR_INIT;
}
hw_flag = mpp_get_vcodec_type(); hw_flag = mpp_get_vcodec_type();
if (hw_flag & HAVE_VPU2) if (hw_flag & HAVE_VPU2)
hard_mode = VDPU2_MODE; hard_mode = VDPU2_MODE;

View File

@@ -341,6 +341,15 @@ const char *mpp_get_vcodec_dev_name(MppCtxType type, MppCodingType coding)
RockchipSocType soc_type = MppPlatformService::get_instance()->get_soc_type(); RockchipSocType soc_type = MppPlatformService::get_instance()->get_soc_type();
switch (soc_type) { switch (soc_type) {
case ROCKCHIP_SOC_RK3036 : {
/* rk3036 do NOT have encoder */
if (type == MPP_CTX_ENC)
dev = NULL;
else if (coding == MPP_VIDEO_CodingHEVC && type == MPP_CTX_DEC)
dev = mpp_find_device(mpp_hevc_dev);
else
dev = mpp_find_device(mpp_vpu_dev);
} break;
case ROCKCHIP_SOC_RK3066 : case ROCKCHIP_SOC_RK3066 :
case ROCKCHIP_SOC_RK3188 : { case ROCKCHIP_SOC_RK3188 : {
/* rk3066/rk3188 have vpu1 only */ /* rk3066/rk3188 have vpu1 only */
@@ -381,11 +390,14 @@ const char *mpp_get_vcodec_dev_name(MppCtxType type, MppCodingType coding)
* rk3228 have codec: * rk3228 have codec:
* 1 - vpu2 * 1 - vpu2
* 2 - RK H.264/H.265 4K decoder * 2 - RK H.264/H.265 4K decoder
* NOTE: rk3228 do NOT have jpeg encoder
*/ */
if (type == MPP_CTX_DEC && if (type == MPP_CTX_DEC &&
(coding == MPP_VIDEO_CodingAVC || (coding == MPP_VIDEO_CodingAVC ||
coding == MPP_VIDEO_CodingHEVC)) coding == MPP_VIDEO_CodingHEVC))
dev = mpp_find_device(mpp_rkvdec_dev); dev = mpp_find_device(mpp_rkvdec_dev);
else if (type == MPP_CTX_ENC && coding == MPP_VIDEO_CodingMJPEG)
dev = NULL;
else else
dev = mpp_find_device(mpp_vpu_dev); dev = mpp_find_device(mpp_vpu_dev);
} break; } break;