您尚未登录。

楼主 # 2024-11-14 15:05:49

树莓学LINUX
会员
注册时间: 2021-10-28
已发帖子: 103
积分: 113
个人网站

ESP32S3平台解码jpg速度问题

最近公司想测试一下ESP32S3的屏幕刷gif图片,将这个预研项目分派给我,我再论坛里面学习到很多,也来总结一下经验

硬件平台:ESP32S3
LCD:ILI9341
SPI:60Mbps
图片总数:400张
像素240*240

最简单的方式当然是不解码直接刷屏,速度肯定很快,动画速率就是刷屏速率,但是需要将所有的图片保存在flash中,有点离谱,总大小为40MB左右,显然不现实

然后又测试了gif解码器,单独移植了lvgl自带的gif三方库,这个gif解码器拉跨得很,特别占用RAM与时间,解码时间的长度和图像复杂度相关,最慢一帧可以来到350ms,简直没法使用,RAM占用情况:仅仅是缓存内外部就需要7*(像素点数量),240的放图大约占用400KB,esp32S3直接跑不起来,降低了分辨率才能跑起来

gif解码器我感觉再优化也不会有什么好的结果了,直接放弃

然后又想到jpg解码器,将所有的图片导出为jpg格式,总大小才3MB,比gif占用内存还小

第一次尝试了idf自带的ipg解码,名字叫做 tiny jpegdec,速度一张图大约消耗48ms,感觉不太好优化了

然后又移植了另一个解码器 JPEGDEC,同样的图片实测只要22ms,并且这个库对ESP32S3平台进行了SIMD优化,也就是运行一个指令支持修改多个数据,需要启动DSP,时间消耗来到了13ms,我对这个时间长度已经很满意了

开启双核心,用双缓存技术,一个核心解码 另一个核心刷屏,jpg的刷图速度就是刷屏速率

大佬们还有什么更有效的优化方式
不妨一起讨论讨论

离线

#1 2024-11-14 16:14:22

晕哥
管理员
注册时间: 2017-09-06
已发帖子: 9,348
积分: 9202

Re: ESP32S3平台解码jpg速度问题





离线

#2 2024-11-14 20:30:58

health
会员
注册时间: 2021-02-23
已发帖子: 28
积分: 52.5

Re: ESP32S3平台解码jpg速度问题

TJpgDec是针对内存最小化设计的,只需3.5KB RAM,在速度方面有所折衷。
JPEGDEC优化速度,但内存占用稍大,约20KB。

ESP自家的jpg编解码器是这个,
https://github.com/espressif/esp-adf-libs/tree/master/esp_new_jpeg
不开源,只有lib,实现细节不详。
内存占用10KB。
性能
ESP32S3
Decoder
The consume memory(10 kByte DRAM) is constant.

Rotate JPEG_ROTATE_0D cases:

Resolution    Source Subsampling    Source Quality    Output Pixel Format    Frames Per Second(fps)
1920 * 1080    JPEG_SUBSAMPLE_422    60    JPEG_PIXEL_FORMAT_RGB565_LE    3.27
1920 * 1080    JPEG_SUBSAMPLE_420    60    JPEG_PIXEL_FORMAT_RGB565_LE    3.78
1280 * 720    JPEG_SUBSAMPLE_422    60    JPEG_PIXEL_FORMAT_RGB565_LE    6.77
1280 * 720    JPEG_SUBSAMPLE_420    60    JPEG_PIXEL_FORMAT_RGB565_LE    7.82
800 * 480    JPEG_SUBSAMPLE_422    60    JPEG_PIXEL_FORMAT_RGB565_LE    14.73
800 * 480    JPEG_SUBSAMPLE_420    60    JPEG_PIXEL_FORMAT_RGB565_LE    16.87
640 * 480    JPEG_SUBSAMPLE_422    60    JPEG_PIXEL_FORMAT_RGB565_LE    17.90
640 * 480    JPEG_SUBSAMPLE_420    60    JPEG_PIXEL_FORMAT_RGB565_LE    20.46
480 * 320    JPEG_SUBSAMPLE_422    60    JPEG_PIXEL_FORMAT_RGB565_LE    32.27
480 * 320    JPEG_SUBSAMPLE_420    60    JPEG_PIXEL_FORMAT_RGB565_LE    36.29
320 * 240    JPEG_SUBSAMPLE_422    60    JPEG_PIXEL_FORMAT_RGB565_LE    58.95
320 * 240    JPEG_SUBSAMPLE_420    60    JPEG_PIXEL_FORMAT_RGB565_LE    66.28

离线

楼主 #3 2024-11-15 11:15:14

树莓学LINUX
会员
注册时间: 2021-10-28
已发帖子: 103
积分: 113
个人网站

Re: ESP32S3平台解码jpg速度问题

@health
实际测试,解码240*240 一帧只需要 7~9毫秒

离线

楼主 #4 2024-11-18 09:30:42

树莓学LINUX
会员
注册时间: 2021-10-28
已发帖子: 103
积分: 113
个人网站

Re: ESP32S3平台解码jpg速度问题

@health
经过查询资料,只有ESP32S3能满足这么快的速度,是因为ESP32-S3 引入了向量扩展(Vector Extensions),这是一种 SIMD(Single Instruction, Multiple Data)技术,可以在一次指令中处理多个数据。这对于图像处理任务非常有用,因为图像处理通常涉及大量的重复计算。向量扩展可以显著加速这些计算,从而提高 JPEG 解码的性能。

其他的芯片在在这个库可能会产生较大的差距

离线

#5 2024-12-15 09:03:47

modi
会员
注册时间: 2023-04-26
已发帖子: 6
积分: 36

Re: ESP32S3平台解码jpg速度问题

【ESP32S3_3.5寸QSPI屏_播放avi视频-哔哩哔哩】 https://b23.tv/P34oCJm

这个视频就是用的带SIMD的jpeg解码

离线

楼主 #6 2024-12-18 15:06:55

树莓学LINUX
会员
注册时间: 2021-10-28
已发帖子: 103
积分: 113
个人网站

Re: ESP32S3平台解码jpg速度问题

modi 说:

【ESP32S3_3.5寸QSPI屏_播放avi视频-哔哩哔哩】 https://b23.tv/P34oCJm

这个视频就是用的带SIMD的jpeg解码

莫工,我还在你的视频留言了,那个‘树莓好倒霉’就是我

你也可以尝试一下 esp_new_jpeg这个库,是乐鑫他们官方优化的,效果也很好

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn