mirror of
https://github.com/nyanmisaka/mpp.git
synced 2025-10-05 17:16:50 +08:00
[jpegd]: Fix stream copy_flag by hw cap
Change-Id: Iadcdb46f4828f8e5d9bc8fd77d76bd090a1e602e Signed-off-by: Grey Li <grey.li@rock-chips.com> Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
This commit is contained in:
@@ -1179,8 +1179,11 @@ static MPP_RET jpegd_deinit(void *ctx)
|
|||||||
|
|
||||||
static MPP_RET jpegd_init(void *ctx, ParserCfg *parser_cfg)
|
static MPP_RET jpegd_init(void *ctx, ParserCfg *parser_cfg)
|
||||||
{
|
{
|
||||||
jpegd_dbg_func("enter\n");
|
|
||||||
JpegdCtx *JpegCtx = (JpegdCtx *)ctx;
|
JpegdCtx *JpegCtx = (JpegdCtx *)ctx;
|
||||||
|
const MppDecHwCap *hw_info = parser_cfg->hw_info;
|
||||||
|
|
||||||
|
jpegd_dbg_func("enter\n");
|
||||||
|
|
||||||
if (NULL == JpegCtx) {
|
if (NULL == JpegCtx) {
|
||||||
JpegCtx = (JpegdCtx *)mpp_calloc(JpegdCtx, 1);
|
JpegCtx = (JpegdCtx *)mpp_calloc(JpegdCtx, 1);
|
||||||
if (NULL == JpegCtx) {
|
if (NULL == JpegCtx) {
|
||||||
@@ -1188,13 +1191,12 @@ static MPP_RET jpegd_init(void *ctx, ParserCfg *parser_cfg)
|
|||||||
return MPP_ERR_NULL_PTR;
|
return MPP_ERR_NULL_PTR;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
mpp_env_get_u32("jpegd_debug", &jpegd_debug, 0);
|
mpp_env_get_u32("jpegd_debug", &jpegd_debug, 0);
|
||||||
// mpp only support baseline
|
// mpp only support baseline
|
||||||
JpegCtx->scan_all_marker = 0;
|
JpegCtx->scan_all_marker = 0;
|
||||||
|
|
||||||
const char* soc_name = NULL;
|
if (hw_info && hw_info->cap_hw_jpg_fix) {
|
||||||
soc_name = mpp_get_soc_name();
|
|
||||||
if (soc_name && (strstr(soc_name, "1108") || strstr(soc_name, "356"))) {
|
|
||||||
/*
|
/*
|
||||||
* no need to copy stream when decoding jpeg;
|
* no need to copy stream when decoding jpeg;
|
||||||
* just scan parts of markers to reduce CPU's occupancy
|
* just scan parts of markers to reduce CPU's occupancy
|
||||||
|
@@ -20,6 +20,7 @@
|
|||||||
|
|
||||||
#include "mpp_env.h"
|
#include "mpp_env.h"
|
||||||
#include "mpp_debug.h"
|
#include "mpp_debug.h"
|
||||||
|
#include "mpp_common.h"
|
||||||
#include "osal_2str.h"
|
#include "osal_2str.h"
|
||||||
|
|
||||||
#include "mpp_hal.h"
|
#include "mpp_hal.h"
|
||||||
@@ -150,6 +151,19 @@ static MPP_RET hal_jpegd_init(void *hal, MppHalCfg *cfg)
|
|||||||
} break;
|
} break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
// report hw_info to parser
|
||||||
|
const MppSocInfo *info = mpp_get_soc_info();
|
||||||
|
RK_U32 i;
|
||||||
|
|
||||||
|
for (i = 0; i < MPP_ARRAY_ELEMS(info->dec_caps); i++) {
|
||||||
|
if (info->dec_caps[i] && info->dec_caps[i]->type == client_type) {
|
||||||
|
cfg->hw_info = info->dec_caps[i];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return p_api->init(hal, cfg);
|
return p_api->init(hal, cfg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -63,7 +63,8 @@ typedef struct MppDecHwCap_t {
|
|||||||
RK_U32 cap_down_scale : 1;
|
RK_U32 cap_down_scale : 1;
|
||||||
RK_U32 cap_lmt_linebuf : 1;
|
RK_U32 cap_lmt_linebuf : 1;
|
||||||
RK_U32 cap_core_num : 3;
|
RK_U32 cap_core_num : 3;
|
||||||
RK_U32 reserved : 9;
|
RK_U32 cap_hw_jpg_fix : 1;
|
||||||
|
RK_U32 reserved : 8;
|
||||||
} MppDecHwCap;
|
} MppDecHwCap;
|
||||||
|
|
||||||
typedef struct MppEncHwCap_t {
|
typedef struct MppEncHwCap_t {
|
||||||
|
@@ -79,6 +79,7 @@ static const MppDecHwCap vdpu1 = {
|
|||||||
.cap_down_scale = 0,
|
.cap_down_scale = 0,
|
||||||
.cap_lmt_linebuf = 1,
|
.cap_lmt_linebuf = 1,
|
||||||
.cap_core_num = 1,
|
.cap_core_num = 1,
|
||||||
|
.cap_hw_jpg_fix = 0,
|
||||||
.reserved = 0,
|
.reserved = 0,
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -96,6 +97,7 @@ static const MppDecHwCap vdpu1_2160p = {
|
|||||||
.cap_down_scale = 0,
|
.cap_down_scale = 0,
|
||||||
.cap_lmt_linebuf = 1,
|
.cap_lmt_linebuf = 1,
|
||||||
.cap_core_num = 1,
|
.cap_core_num = 1,
|
||||||
|
.cap_hw_jpg_fix = 0,
|
||||||
.reserved = 0,
|
.reserved = 0,
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -113,6 +115,7 @@ static const MppDecHwCap vdpu1_jpeg_pp = {
|
|||||||
.cap_down_scale = 0,
|
.cap_down_scale = 0,
|
||||||
.cap_lmt_linebuf = 1,
|
.cap_lmt_linebuf = 1,
|
||||||
.cap_core_num = 1,
|
.cap_core_num = 1,
|
||||||
|
.cap_hw_jpg_fix = 0,
|
||||||
.reserved = 0,
|
.reserved = 0,
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -130,6 +133,7 @@ static const MppDecHwCap vdpu2 = {
|
|||||||
.cap_down_scale = 0,
|
.cap_down_scale = 0,
|
||||||
.cap_lmt_linebuf = 1,
|
.cap_lmt_linebuf = 1,
|
||||||
.cap_core_num = 1,
|
.cap_core_num = 1,
|
||||||
|
.cap_hw_jpg_fix = 0,
|
||||||
.reserved = 0,
|
.reserved = 0,
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -147,6 +151,7 @@ static const MppDecHwCap vdpu2_jpeg = {
|
|||||||
.cap_down_scale = 0,
|
.cap_down_scale = 0,
|
||||||
.cap_lmt_linebuf = 1,
|
.cap_lmt_linebuf = 1,
|
||||||
.cap_core_num = 1,
|
.cap_core_num = 1,
|
||||||
|
.cap_hw_jpg_fix = 0,
|
||||||
.reserved = 0,
|
.reserved = 0,
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -164,6 +169,43 @@ static const MppDecHwCap vdpu2_jpeg_pp = {
|
|||||||
.cap_down_scale = 0,
|
.cap_down_scale = 0,
|
||||||
.cap_lmt_linebuf = 1,
|
.cap_lmt_linebuf = 1,
|
||||||
.cap_core_num = 1,
|
.cap_core_num = 1,
|
||||||
|
.cap_hw_jpg_fix = 0,
|
||||||
|
.reserved = 0,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const MppDecHwCap vdpu2_jpeg_fix = {
|
||||||
|
.cap_coding = HAVE_MJPEG,
|
||||||
|
.type = VPU_CLIENT_VDPU2,
|
||||||
|
.cap_fbc = 0,
|
||||||
|
.cap_4k = 0,
|
||||||
|
.cap_8k = 0,
|
||||||
|
.cap_colmv_buf = 0,
|
||||||
|
.cap_hw_h265_rps = 0,
|
||||||
|
.cap_hw_vp9_prob = 0,
|
||||||
|
.cap_jpg_pp_out = 0,
|
||||||
|
.cap_10bit = 0,
|
||||||
|
.cap_down_scale = 0,
|
||||||
|
.cap_lmt_linebuf = 1,
|
||||||
|
.cap_core_num = 1,
|
||||||
|
.cap_hw_jpg_fix = 1,
|
||||||
|
.reserved = 0,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const MppDecHwCap vdpu2_jpeg_pp_fix = {
|
||||||
|
.cap_coding = CAP_CODING_JPEGD_PP,
|
||||||
|
.type = VPU_CLIENT_VDPU2_PP,
|
||||||
|
.cap_fbc = 0,
|
||||||
|
.cap_4k = 0,
|
||||||
|
.cap_8k = 0,
|
||||||
|
.cap_colmv_buf = 0,
|
||||||
|
.cap_hw_h265_rps = 0,
|
||||||
|
.cap_hw_vp9_prob = 0,
|
||||||
|
.cap_jpg_pp_out = 1,
|
||||||
|
.cap_10bit = 0,
|
||||||
|
.cap_down_scale = 0,
|
||||||
|
.cap_lmt_linebuf = 1,
|
||||||
|
.cap_core_num = 1,
|
||||||
|
.cap_hw_jpg_fix = 1,
|
||||||
.reserved = 0,
|
.reserved = 0,
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -181,6 +223,7 @@ static const MppDecHwCap rk_hevc = {
|
|||||||
.cap_down_scale = 0,
|
.cap_down_scale = 0,
|
||||||
.cap_lmt_linebuf = 1,
|
.cap_lmt_linebuf = 1,
|
||||||
.cap_core_num = 1,
|
.cap_core_num = 1,
|
||||||
|
.cap_hw_jpg_fix = 0,
|
||||||
.reserved = 0,
|
.reserved = 0,
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -198,6 +241,7 @@ static const MppDecHwCap rk_hevc_1080p = {
|
|||||||
.cap_down_scale = 0,
|
.cap_down_scale = 0,
|
||||||
.cap_lmt_linebuf = 1,
|
.cap_lmt_linebuf = 1,
|
||||||
.cap_core_num = 1,
|
.cap_core_num = 1,
|
||||||
|
.cap_hw_jpg_fix = 0,
|
||||||
.reserved = 0,
|
.reserved = 0,
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -215,6 +259,7 @@ static const MppDecHwCap vdpu341 = {
|
|||||||
.cap_down_scale = 0,
|
.cap_down_scale = 0,
|
||||||
.cap_lmt_linebuf = 1,
|
.cap_lmt_linebuf = 1,
|
||||||
.cap_core_num = 1,
|
.cap_core_num = 1,
|
||||||
|
.cap_hw_jpg_fix = 0,
|
||||||
.reserved = 0,
|
.reserved = 0,
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -232,6 +277,7 @@ static const MppDecHwCap vdpu341_lite = {
|
|||||||
.cap_down_scale = 0,
|
.cap_down_scale = 0,
|
||||||
.cap_lmt_linebuf = 1,
|
.cap_lmt_linebuf = 1,
|
||||||
.cap_core_num = 1,
|
.cap_core_num = 1,
|
||||||
|
.cap_hw_jpg_fix = 0,
|
||||||
.reserved = 0,
|
.reserved = 0,
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -249,6 +295,7 @@ static const MppDecHwCap vdpu341_lite_1080p = {
|
|||||||
.cap_down_scale = 0,
|
.cap_down_scale = 0,
|
||||||
.cap_lmt_linebuf = 1,
|
.cap_lmt_linebuf = 1,
|
||||||
.cap_core_num = 1,
|
.cap_core_num = 1,
|
||||||
|
.cap_hw_jpg_fix = 0,
|
||||||
.reserved = 0,
|
.reserved = 0,
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -266,6 +313,7 @@ static const MppDecHwCap vdpu341_h264 = {
|
|||||||
.cap_down_scale = 0,
|
.cap_down_scale = 0,
|
||||||
.cap_lmt_linebuf = 1,
|
.cap_lmt_linebuf = 1,
|
||||||
.cap_core_num = 1,
|
.cap_core_num = 1,
|
||||||
|
.cap_hw_jpg_fix = 0,
|
||||||
.reserved = 0,
|
.reserved = 0,
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -284,6 +332,7 @@ static const MppDecHwCap vdpu34x = {
|
|||||||
.cap_down_scale = 0,
|
.cap_down_scale = 0,
|
||||||
.cap_lmt_linebuf = 0,
|
.cap_lmt_linebuf = 0,
|
||||||
.cap_core_num = 1,
|
.cap_core_num = 1,
|
||||||
|
.cap_hw_jpg_fix = 0,
|
||||||
.reserved = 0,
|
.reserved = 0,
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -301,6 +350,7 @@ static const MppDecHwCap vdpu38x = {
|
|||||||
.cap_down_scale = 1,
|
.cap_down_scale = 1,
|
||||||
.cap_lmt_linebuf = 0,
|
.cap_lmt_linebuf = 0,
|
||||||
.cap_core_num = 2,
|
.cap_core_num = 2,
|
||||||
|
.cap_hw_jpg_fix = 0,
|
||||||
.reserved = 0,
|
.reserved = 0,
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -318,6 +368,7 @@ static const MppDecHwCap avspd = {
|
|||||||
.cap_down_scale = 0,
|
.cap_down_scale = 0,
|
||||||
.cap_lmt_linebuf = 1,
|
.cap_lmt_linebuf = 1,
|
||||||
.cap_core_num = 1,
|
.cap_core_num = 1,
|
||||||
|
.cap_hw_jpg_fix = 0,
|
||||||
.reserved = 0,
|
.reserved = 0,
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -335,6 +386,7 @@ static const MppDecHwCap rkjpegd = {
|
|||||||
.cap_down_scale = 0,
|
.cap_down_scale = 0,
|
||||||
.cap_lmt_linebuf = 0,
|
.cap_lmt_linebuf = 0,
|
||||||
.cap_core_num = 1,
|
.cap_core_num = 1,
|
||||||
|
.cap_hw_jpg_fix = 1,
|
||||||
.reserved = 0,
|
.reserved = 0,
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -352,6 +404,7 @@ static const MppDecHwCap av1d = {
|
|||||||
.cap_down_scale = 0,
|
.cap_down_scale = 0,
|
||||||
.cap_lmt_linebuf = 1,
|
.cap_lmt_linebuf = 1,
|
||||||
.cap_core_num = 1,
|
.cap_core_num = 1,
|
||||||
|
.cap_hw_jpg_fix = 0,
|
||||||
.reserved = 0,
|
.reserved = 0,
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -636,7 +689,7 @@ static const MppSocInfo mpp_soc_infos[] = {
|
|||||||
"rv1109",
|
"rv1109",
|
||||||
ROCKCHIP_SOC_RV1109,
|
ROCKCHIP_SOC_RV1109,
|
||||||
HAVE_VDPU2 | HAVE_VEPU2_JPEG | HAVE_RKVDEC | HAVE_RKVENC,
|
HAVE_VDPU2 | HAVE_VEPU2_JPEG | HAVE_RKVDEC | HAVE_RKVENC,
|
||||||
{ &vdpu2_jpeg, &vdpu341_lite, NULL, NULL, NULL, NULL, },
|
{ &vdpu2_jpeg_fix, &vdpu341_lite, NULL, NULL, NULL, NULL, },
|
||||||
{ &vepu2_jpeg, &vepu541, NULL, NULL, },
|
{ &vepu2_jpeg, &vepu541, NULL, NULL, },
|
||||||
},
|
},
|
||||||
{ /*
|
{ /*
|
||||||
@@ -648,7 +701,7 @@ static const MppSocInfo mpp_soc_infos[] = {
|
|||||||
"rv1126",
|
"rv1126",
|
||||||
ROCKCHIP_SOC_RV1126,
|
ROCKCHIP_SOC_RV1126,
|
||||||
HAVE_VDPU2 | HAVE_VEPU2_JPEG | HAVE_RKVDEC | HAVE_RKVENC,
|
HAVE_VDPU2 | HAVE_VEPU2_JPEG | HAVE_RKVDEC | HAVE_RKVENC,
|
||||||
{ &vdpu2_jpeg, &vdpu341_lite, NULL, NULL, NULL, NULL, },
|
{ &vdpu2_jpeg_fix, &vdpu341_lite, NULL, NULL, NULL, NULL, },
|
||||||
{ &vepu2_jpeg, &vepu541, NULL, NULL, },
|
{ &vepu2_jpeg, &vepu541, NULL, NULL, },
|
||||||
},
|
},
|
||||||
{ /*
|
{ /*
|
||||||
@@ -659,7 +712,7 @@ static const MppSocInfo mpp_soc_infos[] = {
|
|||||||
"rk3326",
|
"rk3326",
|
||||||
ROCKCHIP_SOC_RK3326,
|
ROCKCHIP_SOC_RK3326,
|
||||||
HAVE_VDPU2 | HAVE_VDPU2_PP | HAVE_VEPU2 | HAVE_HEVC_DEC,
|
HAVE_VDPU2 | HAVE_VDPU2_PP | HAVE_VEPU2 | HAVE_HEVC_DEC,
|
||||||
{ &rk_hevc_1080p, &vdpu2, &vdpu2_jpeg_pp, NULL, NULL, NULL, },
|
{ &rk_hevc_1080p, &vdpu2, &vdpu2_jpeg_pp_fix, NULL, NULL, NULL, },
|
||||||
{ &vepu2, NULL, NULL, NULL, },
|
{ &vepu2, NULL, NULL, NULL, },
|
||||||
},
|
},
|
||||||
{ /*
|
{ /*
|
||||||
@@ -670,7 +723,7 @@ static const MppSocInfo mpp_soc_infos[] = {
|
|||||||
"px30",
|
"px30",
|
||||||
ROCKCHIP_SOC_RK3326,
|
ROCKCHIP_SOC_RK3326,
|
||||||
HAVE_VDPU2 | HAVE_VDPU2_PP | HAVE_VEPU2 | HAVE_HEVC_DEC,
|
HAVE_VDPU2 | HAVE_VDPU2_PP | HAVE_VEPU2 | HAVE_HEVC_DEC,
|
||||||
{ &rk_hevc_1080p, &vdpu2, &vdpu2_jpeg_pp, NULL, NULL, NULL, },
|
{ &rk_hevc_1080p, &vdpu2, &vdpu2_jpeg_pp_fix, NULL, NULL, NULL, },
|
||||||
{ &vepu2, NULL, NULL, NULL, },
|
{ &vepu2, NULL, NULL, NULL, },
|
||||||
},
|
},
|
||||||
{ /*
|
{ /*
|
||||||
@@ -692,7 +745,7 @@ static const MppSocInfo mpp_soc_infos[] = {
|
|||||||
"rk3566",
|
"rk3566",
|
||||||
ROCKCHIP_SOC_RK3566,
|
ROCKCHIP_SOC_RK3566,
|
||||||
HAVE_VDPU2 | HAVE_VDPU2_PP | HAVE_VEPU2 | HAVE_RKVDEC | HAVE_RKVENC | HAVE_JPEG_DEC,
|
HAVE_VDPU2 | HAVE_VDPU2_PP | HAVE_VEPU2 | HAVE_RKVDEC | HAVE_RKVENC | HAVE_JPEG_DEC,
|
||||||
{ &vdpu34x, &rkjpegd, &vdpu2, &vdpu2_jpeg_pp, NULL, NULL, },
|
{ &vdpu34x, &rkjpegd, &vdpu2, &vdpu2_jpeg_pp_fix, NULL, NULL, },
|
||||||
{ &vepu540, &vepu2, NULL, NULL, },
|
{ &vepu540, &vepu2, NULL, NULL, },
|
||||||
},
|
},
|
||||||
{ /*
|
{ /*
|
||||||
@@ -705,7 +758,7 @@ static const MppSocInfo mpp_soc_infos[] = {
|
|||||||
"rk3568",
|
"rk3568",
|
||||||
ROCKCHIP_SOC_RK3568,
|
ROCKCHIP_SOC_RK3568,
|
||||||
HAVE_VDPU2 | HAVE_VDPU2_PP | HAVE_VEPU2 | HAVE_RKVDEC | HAVE_RKVENC | HAVE_JPEG_DEC,
|
HAVE_VDPU2 | HAVE_VDPU2_PP | HAVE_VEPU2 | HAVE_RKVDEC | HAVE_RKVENC | HAVE_JPEG_DEC,
|
||||||
{ &vdpu34x, &rkjpegd, &vdpu2, &vdpu2_jpeg_pp, NULL, NULL, },
|
{ &vdpu34x, &rkjpegd, &vdpu2, &vdpu2_jpeg_pp_fix, NULL, NULL, },
|
||||||
{ &vepu540, &vepu2, NULL, NULL, },
|
{ &vepu540, &vepu2, NULL, NULL, },
|
||||||
},
|
},
|
||||||
{ /*
|
{ /*
|
||||||
@@ -719,7 +772,7 @@ static const MppSocInfo mpp_soc_infos[] = {
|
|||||||
ROCKCHIP_SOC_RK3588,
|
ROCKCHIP_SOC_RK3588,
|
||||||
HAVE_VDPU2 | HAVE_VDPU2_PP | HAVE_VEPU2 | HAVE_RKVDEC | HAVE_RKVENC |
|
HAVE_VDPU2 | HAVE_VDPU2_PP | HAVE_VEPU2 | HAVE_RKVDEC | HAVE_RKVENC |
|
||||||
HAVE_JPEG_DEC | HAVE_AV1DEC | HAVE_AVSDEC | HAVE_VEPU2_JPEG,
|
HAVE_JPEG_DEC | HAVE_AV1DEC | HAVE_AVSDEC | HAVE_VEPU2_JPEG,
|
||||||
{ &vdpu38x, &rkjpegd, &vdpu2, &vdpu2_jpeg_pp, &av1d, &avspd},
|
{ &vdpu38x, &rkjpegd, &vdpu2, &vdpu2_jpeg_pp_fix, &av1d, &avspd},
|
||||||
{ &vepu58x, &vepu2, &vepu2_jpeg, NULL, },
|
{ &vepu58x, &vepu2, &vepu2_jpeg, NULL, },
|
||||||
},
|
},
|
||||||
{ /*
|
{ /*
|
||||||
|
Reference in New Issue
Block a user