硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1918|回复: 2
收起左侧

[ThreadX全家桶] guix学习笔记2:如何实现较为高效的jpg解码

[复制链接]

24

主题

131

回帖

203

积分

高级会员

积分
203
发表于 2022-1-7 08:55:52 | 显示全部楼层 |阅读模式
硬件平台:rt1052评估板,无硬件jpg。lcd分辨率800*480

lvgl环境下:
lvgl支持文件操作且提供jpg文件实时解码解码功能,但速度很慢,不开缓冲或是播放连续视频帧是(此时缓冲用不上),帧率只有5-10帧左右.
后来移植了libjpeg并做了一定的优化,播放帧率达到了20帧/s。其原理是当lvgl需要读取一帧jpg图像时,先通过libjpeg把flash里面的jpg文件实时解压到缓冲区数组。
之后再调用lvgl的读数组函数。此方法很实用,因为把图片资源和gui设计分离开来,开发时代码可以轻装上阵,编译下载一次也就是不到10s的事。

刚开始接触guix,看了一些官方demo。很不错的gui开发工具,其流程对于经历过windows软件开发,组态软件开发的工程师来讲是很熟悉的。

gui studio里面测试过guix的jpg图片显示。如果选择压缩方式,gui studio会自动把该副jpg图片转换为bmp数组,生成的数组尺寸会比实际的尺寸略小一些。比如一副图片:
jpg原始文件:50K;
BMP文件:1000K;
guix studio压缩后:500K

但这个尺寸跟原始jpg文件比还是很大的。guix studio也支持原始jpg文件,系统运行后会进行实时解码。但解码速度很慢,无法播放视频片段,咋整。最好是能有个接口函数,guix如果需要这副jpg图片,后台一次性解完放在缓冲区,此过程大概需要40ms-50ms,等解码完毕,
guix再继续执行其后的代码。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115896
QQ
发表于 2022-1-7 10:56:00 | 显示全部楼层
GUIX也是同样的思路,整体加载,绘制到存储设备里面,然后显示。

ThreadX GUIX加载JPEG图片,并将其绘制到内存设备方法
https://www.armbbs.cn/forum.php?mod=viewthread

GUIX的JPEG底层接口可以重定向的,瑞萨的很多单片机都带硬件JPEG,早期瑞萨的GUIX的工程都做了个重定向,你要重定向其它jpeg解码器也是可以的。

H7也支持硬件JPEG,最近还没有顾上研究重定向实现。

回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2024-6-3 10:38:25 | 显示全部楼层
eric2013 发表于 2022-1-7 10:56
GUIX也是同样的思路,整体加载,绘制到存储设备里面,然后显示。

ThreadX GUIX加载JPEG图片,并将其绘制 ...

Hi Eric

你回复的链接我打不开了,你能打开这个链接吗?https://www.armbbs.cn/forum.php?mod=viewthread 谢谢。
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-5-25 14:40 , Processed in 0.466180 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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