mirror of
https://github.com/nyanmisaka/mpp.git
synced 2025-10-05 17:16:50 +08:00
[mpp_platform]: Add rk3566/rk3568 SOC definition
Change-Id: Ia1972cb95d5497cf95daab46504cfea9522b79e7 Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
This commit is contained in:
@@ -41,6 +41,7 @@ typedef enum MppClientType_e {
|
|||||||
VPU_CLIENT_HEVC_DEC = 8, /* 0x00000100 */
|
VPU_CLIENT_HEVC_DEC = 8, /* 0x00000100 */
|
||||||
VPU_CLIENT_RKVDEC = 9, /* 0x00000200 */
|
VPU_CLIENT_RKVDEC = 9, /* 0x00000200 */
|
||||||
VPU_CLIENT_AVSPLUS_DEC = 12, /* 0x00001000 */
|
VPU_CLIENT_AVSPLUS_DEC = 12, /* 0x00001000 */
|
||||||
|
VPU_CLIENT_JPEG_DEC = 13, /* 0x00002000 */
|
||||||
|
|
||||||
VPU_CLIENT_RKVENC = 16, /* 0x00010000 */
|
VPU_CLIENT_RKVENC = 16, /* 0x00010000 */
|
||||||
VPU_CLIENT_VEPU1 = 17, /* 0x00020000 */
|
VPU_CLIENT_VEPU1 = 17, /* 0x00020000 */
|
||||||
@@ -62,6 +63,7 @@ typedef enum MppClientType_e {
|
|||||||
#define HAVE_HEVC_DEC (1 << VPU_CLIENT_HEVC_DEC) /* 0x00000100 */
|
#define HAVE_HEVC_DEC (1 << VPU_CLIENT_HEVC_DEC) /* 0x00000100 */
|
||||||
#define HAVE_RKVDEC (1 << VPU_CLIENT_RKVDEC) /* 0x00000200 */
|
#define HAVE_RKVDEC (1 << VPU_CLIENT_RKVDEC) /* 0x00000200 */
|
||||||
#define HAVE_AVSDEC (1 << VPU_CLIENT_AVSPLUS_DEC) /* 0x00001000 */
|
#define HAVE_AVSDEC (1 << VPU_CLIENT_AVSPLUS_DEC) /* 0x00001000 */
|
||||||
|
#define HAVE_JPEG_DEC (1 << VPU_CLIENT_JPEG_DEC) /* 0x00002000 */
|
||||||
/* RK standalone encoder */
|
/* RK standalone encoder */
|
||||||
#define HAVE_RKVENC (1 << VPU_CLIENT_RKVENC) /* 0x00010000 */
|
#define HAVE_RKVENC (1 << VPU_CLIENT_RKVENC) /* 0x00010000 */
|
||||||
#define HAVE_VEPU1 (1 << VPU_CLIENT_VEPU1) /* 0x00020000 */
|
#define HAVE_VEPU1 (1 << VPU_CLIENT_VEPU1) /* 0x00020000 */
|
||||||
|
@@ -50,6 +50,8 @@ typedef enum RockchipSocType_e {
|
|||||||
ROCKCHIP_SOC_RK3128H,
|
ROCKCHIP_SOC_RK3128H,
|
||||||
ROCKCHIP_SOC_PX30,
|
ROCKCHIP_SOC_PX30,
|
||||||
ROCKCHIP_SOC_RK1808,
|
ROCKCHIP_SOC_RK1808,
|
||||||
|
ROCKCHIP_SOC_RK3566,
|
||||||
|
ROCKCHIP_SOC_RK3568,
|
||||||
ROCKCHIP_SOC_BUTT,
|
ROCKCHIP_SOC_BUTT,
|
||||||
} RockchipSocType;
|
} RockchipSocType;
|
||||||
|
|
||||||
@@ -80,6 +82,8 @@ static const MppVpuType mpp_vpu_version[] = {
|
|||||||
{ "rk3326", ROCKCHIP_SOC_RK3326, HAVE_VDPU2 | HAVE_VEPU2 | HAVE_HEVC_DEC, },
|
{ "rk3326", ROCKCHIP_SOC_RK3326, HAVE_VDPU2 | HAVE_VEPU2 | HAVE_HEVC_DEC, },
|
||||||
{ "px30", ROCKCHIP_SOC_RK3326, HAVE_VDPU2 | HAVE_VEPU2 | HAVE_HEVC_DEC, },
|
{ "px30", ROCKCHIP_SOC_RK3326, HAVE_VDPU2 | HAVE_VEPU2 | HAVE_HEVC_DEC, },
|
||||||
{ "rk1808", ROCKCHIP_SOC_RK1808, HAVE_VDPU2 | HAVE_VEPU2, },
|
{ "rk1808", ROCKCHIP_SOC_RK1808, HAVE_VDPU2 | HAVE_VEPU2, },
|
||||||
|
{ "rk3566", ROCKCHIP_SOC_RK3566, HAVE_VDPU2 | HAVE_VEPU2 | HAVE_RKVDEC | HAVE_RKVENC | HAVE_JPEG_DEC, },
|
||||||
|
{ "rk3568", ROCKCHIP_SOC_RK3568, HAVE_VDPU2 | HAVE_VEPU2 | HAVE_RKVDEC | HAVE_RKVENC | HAVE_JPEG_DEC, },
|
||||||
};
|
};
|
||||||
|
|
||||||
/* For vpu1 / vpu2 */
|
/* For vpu1 / vpu2 */
|
||||||
@@ -126,6 +130,11 @@ static const char *mpp_h265e_dev[] = {
|
|||||||
"/dev/mpp_service",
|
"/dev/mpp_service",
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* For jpeg decoder */
|
||||||
|
static const char *mpp_jpegd_dev[] = {
|
||||||
|
"/dev/mpp_service",
|
||||||
|
};
|
||||||
|
|
||||||
static const char *mpp_service_dev[] = {
|
static const char *mpp_service_dev[] = {
|
||||||
"/dev/mpp_service",
|
"/dev/mpp_service",
|
||||||
};
|
};
|
||||||
@@ -294,6 +303,7 @@ MppPlatformService::MppPlatformService()
|
|||||||
vcodec_type &= ~HAVE_VEPU22;
|
vcodec_type &= ~HAVE_VEPU22;
|
||||||
else
|
else
|
||||||
vcodec_type |= HAVE_VEPU22;
|
vcodec_type |= HAVE_VEPU22;
|
||||||
|
|
||||||
/* for all chip vpu decoder */
|
/* for all chip vpu decoder */
|
||||||
if (!mpp_find_device(mpp_vpu_dev))
|
if (!mpp_find_device(mpp_vpu_dev))
|
||||||
vcodec_type &= ~(HAVE_VDPU1 | HAVE_VEPU1 | HAVE_VDPU2 | HAVE_VEPU2);
|
vcodec_type &= ~(HAVE_VDPU1 | HAVE_VEPU1 | HAVE_VDPU2 | HAVE_VEPU2);
|
||||||
@@ -546,6 +556,35 @@ const char *mpp_get_vcodec_dev_name(MppCtxType type, MppCodingType coding)
|
|||||||
} else if (coding == MPP_VIDEO_CodingMJPEG)
|
} else if (coding == MPP_VIDEO_CodingMJPEG)
|
||||||
dev = mpp_find_device(mpp_vpu_dev);
|
dev = mpp_find_device(mpp_vpu_dev);
|
||||||
} break;
|
} break;
|
||||||
|
case ROCKCHIP_SOC_RK3566 :
|
||||||
|
case ROCKCHIP_SOC_RK3568 : {
|
||||||
|
/*
|
||||||
|
* rk3566/rk3568 has codec:
|
||||||
|
* 1 - vpu2 for jpeg/vp8 encoder and decoder
|
||||||
|
* 2 - RK H.264/H.265/VP9 4K decoder
|
||||||
|
* 3 - RK H.264/H.265 4K encoder
|
||||||
|
* 3 - RK jpeg decoder
|
||||||
|
*/
|
||||||
|
if (type == MPP_CTX_DEC) {
|
||||||
|
if (coding == MPP_VIDEO_CodingAVC ||
|
||||||
|
coding == MPP_VIDEO_CodingHEVC ||
|
||||||
|
coding == MPP_VIDEO_CodingVP9)
|
||||||
|
dev = mpp_find_device(mpp_rkvdec_dev);
|
||||||
|
else if (coding == MPP_VIDEO_CodingMJPEG)
|
||||||
|
dev = mpp_find_device(mpp_jpegd_dev);
|
||||||
|
else
|
||||||
|
dev = mpp_find_device(mpp_vpu_dev);
|
||||||
|
} else if (type == MPP_CTX_ENC) {
|
||||||
|
if (coding == MPP_VIDEO_CodingAVC ||
|
||||||
|
coding == MPP_VIDEO_CodingHEVC)
|
||||||
|
dev = mpp_find_device(mpp_rkvenc_dev);
|
||||||
|
else if (coding == MPP_VIDEO_CodingMJPEG ||
|
||||||
|
coding == MPP_VIDEO_CodingVP8)
|
||||||
|
dev = mpp_find_device(mpp_vpu_dev);
|
||||||
|
else
|
||||||
|
dev = NULL;
|
||||||
|
}
|
||||||
|
} break;
|
||||||
default : {
|
default : {
|
||||||
/* default case for unknown compatible */
|
/* default case for unknown compatible */
|
||||||
RK_U32 vcodec_type = mpp_get_vcodec_type();
|
RK_U32 vcodec_type = mpp_get_vcodec_type();
|
||||||
|
@@ -35,7 +35,7 @@ int main()
|
|||||||
mpp_log("found vpu2 codec\n");
|
mpp_log("found vpu2 codec\n");
|
||||||
|
|
||||||
if (vcodec_type & HAVE_HEVC_DEC)
|
if (vcodec_type & HAVE_HEVC_DEC)
|
||||||
mpp_log("found RK hevc decoder\n");
|
mpp_log("found rk hevc decoder\n");
|
||||||
|
|
||||||
if (vcodec_type & HAVE_RKVDEC)
|
if (vcodec_type & HAVE_RKVDEC)
|
||||||
mpp_log("found rkvdec decoder\n");
|
mpp_log("found rkvdec decoder\n");
|
||||||
@@ -43,6 +43,9 @@ int main()
|
|||||||
if (vcodec_type & HAVE_AVSDEC)
|
if (vcodec_type & HAVE_AVSDEC)
|
||||||
mpp_log("found avs+ decoder\n");
|
mpp_log("found avs+ decoder\n");
|
||||||
|
|
||||||
|
if (vcodec_type & HAVE_JPEG_DEC)
|
||||||
|
mpp_log("found rk jpeg decoder\n");
|
||||||
|
|
||||||
if (vcodec_type & HAVE_RKVENC)
|
if (vcodec_type & HAVE_RKVENC)
|
||||||
mpp_log("found rkvenc encoder\n");
|
mpp_log("found rkvenc encoder\n");
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user