硬汉嵌入式论坛

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

[ThreadX全家桶] GUIX学习笔记3 - 一种视频片段播放方案

[复制链接]

24

主题

122

回帖

194

积分

初级会员

积分
194
发表于 2022-1-9 09:50:10 | 显示全部楼层 |阅读模式
本帖最后由 yxydoctor 于 2022-1-9 09:57 编辑

guix很不错,安全灵活。一直在琢磨如何实现guix播放视频片段。比如开机小动画,工作状态的动画展示。
这种动画跟guix studio内置的动画组件不一样,具体播放哪一帧,或许是由用户根据后台变量值人工指定的。
另外,对于分辨率比较高的jpg图片,guix读取速度并不高,还有一点,大量的图片放入guix工程的资源文件也不利于开发调试。

硬件平台:RT1052开发板;
软件平台:guix;

方案1:guix内部jpg解码函数重定向,因为是逐行解析(兼顾小容量MCU的需要把),加上涉及的函数太多,遂放弃。
方案2:沿用guix的原有流程,小尺寸图片不考虑,只关注视频动画片段或大尺寸图片。人工修改图片数组缓冲内容。

实施方法:
1-在guix studio中加上视频片段的第一帧图片且设置为不压缩格式,资源文件中会自动生成图片数组变量。比如800*480图片:
    static GX_CONST USHORT DISPLAY_1_THEME_1__2_pixelmap_data[384000] ={...};
2-但这个数组属于局部const型变量,我们需要改造一下,改为全局变量,且放在SDRAM里面。这样就可以修改数组内容了。
    USHORT DISPLAY_1_THEME_1__2_pixelmap_data[384000] ={...};
3-guix提供了非常灵活的触发回调机制。比如窗体创建,定时器等。可以根据需要来修改图片数组内容。比如窗体创建后,在回调函数中
   创建定时器,每隔50ms从flash里面读取一幅jpg图片自行解码,刷新这个数组,之后通知guix刷新一下(似乎是需要标定为脏)

这样做的好处:
1-不影响guix运行主流程;
2-有效减小资源文件代码量;
3-不需要把大量图片逐个放在guix studio里面;

原理上是可行的,具体结果还有待测试。就是不知道当用户对图片数组重新赋值时,是否需要跟guix做个握手约定什么的。

回复

使用道具 举报

24

主题

122

回帖

194

积分

初级会员

积分
194
 楼主| 发表于 2022-1-10 16:07:49 来自手机 | 显示全部楼层
今天测试了一下。达到预期效果。
回复

使用道具 举报

24

主题

122

回帖

194

积分

初级会员

积分
194
 楼主| 发表于 2022-1-10 16:11:26 来自手机 | 显示全部楼层
今天测试了一下。达到预期效果。readonly型data大为减少,下载速度很快。下一步要考虑如何对guix studio生成的资源文件改动量最小化资源文件
回复

使用道具 举报

24

主题

122

回帖

194

积分

初级会员

积分
194
 楼主| 发表于 2022-1-11 09:13:24 | 显示全部楼层
C:\\Users\\yxydoctor\\Desktop\\2097bcd78e0fefc744881bafdca6a664.mp4
回复

使用道具 举报

24

主题

122

回帖

194

积分

初级会员

积分
194
 楼主| 发表于 2022-1-11 09:23:35 | 显示全部楼层
2097bcd78e0fefc744881bafdca6a664.mp4 (2.27 MB, 下载次数: 48)
GUIX环境视频片段实测效果。
guix中设置定时器,在回调函数中对jpg图片实时解码,解码后数据写入SDRAM,通知GUIX全屏刷新。

单幅图片解码时间为50ms,guix写画布也需要时间,实测做不到50ms刷新周期,100ms很稳定。

这一点倒是不如lvgl。lvgl可以设置为显示缓存为单幅画布的整数倍,不做局部刷新,这对硬件配置较好的MCU其实是件好事。

过于追求细节,整体刷新反而速度提不上来!
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107643
QQ
发表于 2022-1-11 09:30:38 | 显示全部楼层
yxydoctor 发表于 2022-1-11 09:23
GUIX环境视频片段实测效果。
guix中设置定时器,在回调函数中对jpg图片实时解码,解码后数据写入SDRAM, ...

RT1052没有硬件加速,确实不适合干这些,H7那种带JPEG的,20-30秒一帧JPG图像800*480图像解码含显示时间。

振奋人心的消息,攻克emWin底层使用硬件JPEG,实现更简单,全程使用SDRAM,显示800*480图片30ms
https://www.armbbs.cn/forum.php? ... id=93621&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

5

主题

536

回帖

551

积分

金牌会员

积分
551
发表于 2022-1-11 09:40:27 | 显示全部楼层
楼主,自己做的RT1052开发板吗?还是买的现场的?好不好上手?
回复

使用道具 举报

24

主题

122

回帖

194

积分

初级会员

积分
194
 楼主| 发表于 2022-1-11 19:18:15 来自手机 | 显示全部楼层
hqgboy 发表于 2022-1-11 09:40
楼主,自己做的RT1052开发板吗?还是买的现场的?好不好上手?

暂时用的zlg的评估板。rt1052容易上手。没有hal库,但有大量的官方SDK例程支持开发,也很方便。
这颗芯片XIP算是个亮点,初始化自配flash,sdram也算是亮点。感觉有了cache,tcm和dma似乎都用不上了。
的确是没有硬jpg解码,但有个pxp支持硬件图像旋转,缩放,搬移,混叠操作。虽然速度一般,但因为是硬件实现,所以可以解放cpu。
功耗比较低也算是个亮点,确实是低。
回复

使用道具 举报

18

主题

221

回帖

275

积分

高级会员

积分
275
发表于 2022-6-12 00:07:49 | 显示全部楼层
ERIC2013大佬

我就是想做這樣的效果,這個有辦法在V7上實現嗎???


回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-10 11:02 , Processed in 0.321384 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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