最近公司想测试一下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的刷图速度就是刷屏速率
大佬们还有什么更有效的优化方式
不妨一起讨论讨论
离线
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
离线
【ESP32S3_3.5寸QSPI屏_播放avi视频-哔哩哔哩】 https://b23.tv/P34oCJm
这个视频就是用的带SIMD的jpeg解码
离线
【ESP32S3_3.5寸QSPI屏_播放avi视频-哔哩哔哩】 https://b23.tv/P34oCJm
这个视频就是用的带SIMD的jpeg解码
莫工,我还在你的视频留言了,那个‘树莓好倒霉’就是我
你也可以尝试一下 esp_new_jpeg这个库,是乐鑫他们官方优化的,效果也很好
离线