Toybrick

MPP解码MJPEG,CPU占用率很高,附代码求解答

zhangkt

注册会员

积分
131
发表于 2021-2-2 14:44:50    查看: 13137|回复: 4 | [复制链接]    打印 | 显示全部楼层
硬件:TB-RK3399ProD
环境:debian10
问题:
根据以下测试,mpp解码MJPEG,单核CPU占用率在70%以上,感觉不像是硬件解码该有的情况,可否帮忙看下是什么问题?


流程:
使用V4L2从USB摄像头读取图像帧数据(MJPEG 1920*1080), 将图像帧送入MPP解码(解码后格式NV12), 解码后保存到文件,成功解码

测试:
1.单核CPU占用率一直在80%以上


2.尝试不写入文件,对CPU占用率影响不大


3.中途有拷贝,仅拷贝不解码,查看结果(注:由于不解码,因此也不写入文件),单核CPU占用率14.5%



代码:
1.参考mpp例程mpi_dec_test.c 编写的
2.直接在debian10上编译
3.进入代码目录
mkdir build
cd build
make
sudo ./mjpegDecTest
(注:默认使用/dev/video0  分辨率1920*1080,可在主函数中修改)

问题:
根据以上测试,mpp解码MJPEG,单核CPU占用率在70%以上,感觉不像是硬件解码该有的情况,可否帮忙看下?
附上代码,若是代码编写的问题请告知下

代码附件:







本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

jefferyzhang

版主

积分
13012
发表于 2021-2-2 14:49:41 | 显示全部楼层
CPU占用率请除以6.
Top显示的cpu占用率总数是600%(6核),你说的70%也就 70/600 = 11%左右,根本不算高。
关于为什么jpeg解码会用到cpu,置顶帖常见问题列表里有人问过,这个是因为jpeg格式有些数据不标准会造成硬解码崩溃,所以cpu会先遍历这个格式找到无法解码的jpeg字段修复他
回复

使用道具 举报

zhangkt

注册会员

积分
131
 楼主| 发表于 2021-2-2 15:32:01 | 显示全部楼层
本帖最后由 zhangkt 于 2021-2-2 15:58 编辑
jefferyzhang 发表于 2021-2-2 14:49
CPU占用率请除以6.
Top显示的cpu占用率总数是600%(6核),你说的70%也就 70/600 = 11%左右,根本不算高。
关 ...

使用opencv解码MJPEG也是和这个占用率差不多,而H264的硬解码只要10%+,相较硬MJPEG解码差得有点多
回复

使用道具 举报

crystal

注册会员

积分
72
发表于 2021-11-17 15:59:00 | 显示全部楼层
USB摄像头,如果取yuv的话帧率很低,只有取MJPG数据才能达到30帧的帧率,但是使用MJPG不能直接使用硬编码,必须要先解码成YUV再编码才能成为H264/265?支不支持直接从MJPG编码为H264呢?
回复

使用道具 举报

jiangcy

新手上路

积分
8
发表于 2024-3-14 14:56:24 | 显示全部楼层
jefferyzhang 发表于 2021-2-2 14:49
CPU占用率请除以6.
Top显示的cpu占用率总数是600%(6核),你说的70%也就 70/600 = 11%左右,根本不算高。
关 ...

你好,目前我也看了他这个代码,确实和mpi_dec_test这个demo没什么差别,但是用官方demo跑下来,可能40-50ms就可以完成,但是使用这个能跑通,但是耗时达到了167ms太高了,这是什么原因呢,是设置问题,还是没用上硬件加速?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

产品中心 购买渠道 开源社区 Wiki教程 资料下载 关于Toybrick


快速回复 返回顶部 返回列表