Toybrick

标题: MPP解码MJPEG,CPU占用率很高,附代码求解答 [打印本页]

作者: zhangkt    时间: 2021-2-2 14:44
标题: MPP解码MJPEG,CPU占用率很高,附代码求解答
硬件:TB-RK3399ProD
环境:debian10
问题:
根据以下测试,mpp解码MJPEG,单核CPU占用率在70%以上,感觉不像是硬件解码该有的情况,可否帮忙看下是什么问题?


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

测试:
1.单核CPU占用率一直在80%以上
[attach]1647[/attach]

2.尝试不写入文件,对CPU占用率影响不大
[attach]1648[/attach]

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


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

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

代码附件:
[attach]1646[/attach]







作者: jefferyzhang    时间: 2021-2-2 14:49
CPU占用率请除以6.
Top显示的cpu占用率总数是600%(6核),你说的70%也就 70/600 = 11%左右,根本不算高。
关于为什么jpeg解码会用到cpu,置顶帖常见问题列表里有人问过,这个是因为jpeg格式有些数据不标准会造成硬解码崩溃,所以cpu会先遍历这个格式找到无法解码的jpeg字段修复他
作者: zhangkt    时间: 2021-2-2 15:32
本帖最后由 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    时间: 2021-11-17 15:59
USB摄像头,如果取yuv的话帧率很低,只有取MJPG数据才能达到30帧的帧率,但是使用MJPG不能直接使用硬编码,必须要先解码成YUV再编码才能成为H264/265?支不支持直接从MJPG编码为H264呢?
作者: jiangcy    时间: 2024-3-14 14:56
jefferyzhang 发表于 2021-2-2 14:49
CPU占用率请除以6.
Top显示的cpu占用率总数是600%(6核),你说的70%也就 70/600 = 11%左右,根本不算高。
关 ...

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




欢迎光临 Toybrick (https://t.rock-chips.com/) Powered by Discuz! X3.3