Open aitazhixin opened 2 years ago
@HermanChen 可以帮忙解答一下问题吗?我这里的使用方法是否有问题?
mpp_packet_set_eos 这个不需要 jpeg 解码目前还不好用 put_packet / get_frame 接口来处理…… 需要用到 poll / enqueue / dequeue 接口,有点麻烦,需要参考旧版本的 mpi_dec_test 代码
mpp_packet_set_eos 这个不需要 jpeg 解码目前还不好用 put_packet / get_frame 接口来处理…… 需要用到 poll / enqueue / dequeue 接口,有点麻烦,需要参考旧版本的 mpi_dec_test 代码
如果不设置mpp_packet_set_eos会导致put_packet()中的判断if (mPackets->list_size() < 4 || eos) 为false;
旧版本的mpi_dec_test怎么可以找到?有对应分支或tag吗?
mpp_packet_set_eos 这个不需要 jpeg 解码目前还不好用 put_packet / get_frame 接口来处理…… 需要用到 poll / enqueue / dequeue 接口,有点麻烦,需要参考旧版本的 mpi_dec_test 代码
旧版本是static int decode_advanced(MpiDecCtx *data)这个函数吗?
对,用那个advanced的流程
对,用那个advanced的流程
对,用那个advanced的流程
在使用这个的时候遇到了崩溃 `
((type *)((char *)(ptr)-(unsigned long)(&((type *)0)->member)))
` 这里((type *)0)->member空指针取member会崩溃
具体给下出错 log
具体给下出错 log
出错是在map_buffer_get_unused函数里面
具体给下出错 log
这个崩溃已经找到问题了。现在遇到的一个问题是mpp_init后,再调用control函数设置输出图像格式为RGB888,会导致mpp_dev_deinit调用,然后重新调用ret = mpp_dev_init(&JpegHalCtx->dev, VPU_CLIENT_VDPU2_PP);可是RK3399好像是不支持此类型的: static const MppVpuType mpp_vpu_version[] = { { "rk3036", ROCKCHIP_SOC_RK3036, HAVE_VDPU1 | HAVE_VEPU1 | HAVE_HEVC_DEC, }, { "rk3066", ROCKCHIP_SOC_RK3066, HAVE_VDPU1 | HAVE_VEPU1, }, { "rk3188", ROCKCHIP_SOC_RK3188, HAVE_VDPU1 | HAVE_VEPU1, }, { "rk3288", ROCKCHIP_SOC_RK3288, HAVE_VDPU1 | HAVE_VEPU1 | HAVE_HEVC_DEC, }, { "rk3126", ROCKCHIP_SOC_RK312X, HAVE_VDPU1 | HAVE_VEPU1 | HAVE_HEVC_DEC, }, { "rk3128h", ROCKCHIP_SOC_RK3128H, HAVE_VDPU2 | HAVE_VEPU2 | HAVE_RKVDEC, }, { "rk3128", ROCKCHIP_SOC_RK312X, HAVE_VDPU1 | HAVE_VEPU1 | HAVE_HEVC_DEC, }, { "rk3368", ROCKCHIP_SOC_RK3368, HAVE_VDPU1 | HAVE_VEPU1 | HAVE_HEVC_DEC, }, { "rk3399", ROCKCHIP_SOC_RK3399, HAVE_VDPU2 | HAVE_VEPU2 | HAVE_RKVDEC, }, ……
这种情况,是不是就不能设置输出图片的格式?还是可以把上面的mpp_dev_init输入的type改为HAVE_VEPU2?
@HermanChen 请问一下,现在的develop版本的支持put_packet / get_frame 接口,是否支持解码v4l2驱动读取相机的输出为JPEG格式的buf流吗?
初始化: `
if (mpp_packet_init(&(capture->mPkt), buf, length) != 0) { LOGW(TAG) << "mpp packet init failed"; return -1; } if (mpp_create(&(capture->mCtx), &(capture->mApi)) != MPP_OK) { LOGW(TAG) << "mpp create failed"; return -1; }
`
输出: ` mpp_packet_write(capture->mPkt, 0, src, length); mpp_packet_set_pos(capture->mPkt, src); mpp_packet_set_length(capture->mPkt, length); mpp_packet_set_eos(capture->mPkt); int ret = 0; MppFrame srcFrm = NULL; ret = capture->mApi->decode_put_packet(capture->mCtx, capture->mPkt); if (ret != MPP_OK) { LOGW(TAG) << "decode failed " << ret; return false; }
`