3460
- 收藏
- 点赞
- 分享
- 举报
3520D解码-内存及FLASH节省经验
本帖最后由 ngswfx 于 2016-5-24 21:24 编辑
这些天再搞解码
发现内存不足,到处找处理方法,解决方法。首先要明确,所有地方都可以最终影响到DDR内存节约,执行程序本身的大小,会影响到Flash占用,FLASH固有程序的大小,又会影响到实际系统内存占用。
内存占用小了,效率自然高。
我的代码是在HS例子基础上修改的,我估计大多数同志开始都是这么干的。
例子中有些东西,并不适合我们自己的应用场景,这个是肯定的,所以需要针对自己的应用环境做调整。
原来我使用流解码,没注意图像延迟,后来发现超大,不说一分钟这个夸张吧,人都离开了,解码的图像,人还刚来。呵呵。:lol
为此调整为帧解码,好多了。以后再处理相关帧解码送入机制,使送入合理平滑。为了兼容多家设备,图像来源复杂,想要平滑流畅,可能需要单独处理。
以下是我实际代码编写中,暂遇到的,后续可能有调整。
//////////////说正题 第一部分:调整VPSS,节约内存 A 2016-4_29
以前没有细细看文档中的FAQ,其实都是重中之重。
分享出来,初入门者,也好有个参考。
HiMPP 媒体处理FAQ 文档中:
VPSS
−
详细描述:解码回放中,如果解码图像为帧图像,与解码通道绑定的 VPSS 组
可关闭非必须的图像处理开关以节省内存。创建 VPSS GROUP 时,将属性项
设置为 bNrEn=HI_FALSE、enDieMode= VPSS_DIE_MODE_NODIE、
bHistEn=HI_FALSE。每 vpss 组可节省内存计算公式为:图像 w x h x 1.5(或
2) x 2
//////////////////////////////////没有设置修改前,稀里糊涂被用掉了1个通道4-6M内存,如果16个通道,几十兆内存用掉了。
所以果断在sample_comm_vpss.c中,修改SAMPLE_COMM_VPSS_Start函数
if(NULL == pstVpssGrpAttr)
{
stGrpAttr.u32MaxW = pstSize->u32Width;
stGrpAttr.u32MaxH = pstSize->u32Height;
stGrpAttr.bDrEn = HI_FALSE;
stGrpAttr.bDbEn = HI_FALSE;
// stGrpAttr.bIeEn = HI_TRUE;
// stGrpAttr.bNrEn = HI_TRUE;
stGrpAttr.bNrEn = HI_FALSE;
stGrpAttr.bIeEn = HI_FALSE;
stGrpAttr.bHistEn = HI_FALSE;
//stGrpAttr.enDieMode = VPSS_DIE_MODE_AUTO; //VPSS_DIE_MODE_NODIE
stGrpAttr.enDieMode = VPSS_DIE_MODE_NODIE;
stGrpAttr.enPixFmt = SAMPLE_PIXEL_FORMAT;
}
都关掉
这下VPSS几乎不用内存了,一个通道约100K,呵呵,超级管用。我是16路D1解码,看着剩余内存突然增加了60M,高兴呀。:lol
////////////////////////// 第二部分,设置编译选项,减少执行程序大小
HiMPP IPC V2.0 媒体处理 FAQ 文档中:提到
1.4.1 静态库使用
【现象】应用程序只使用 libmpi.a 一小部分函数,但需要链接 mpi 库外 vqev2 等库文
件,导致应用程序文件过大。
【分析】链接时默认需要链接库中所有定义函数表,从而需要引用 mpi 库中关联的其他
库。
【解决】MPP 版本生成库时,Makefile.param 加入 -ffunction-sections 编译选项;客户在
链接生成应用程序时加入 -Wl,-gc-sections,能有效减小应用程序大小,剔除掉没有使
用到的函数。
我自己加入后,执行程序,减小约50K,可喜可贺。:lol
这些天再搞解码
发现内存不足,到处找处理方法,解决方法。首先要明确,所有地方都可以最终影响到DDR内存节约,执行程序本身的大小,会影响到Flash占用,FLASH固有程序的大小,又会影响到实际系统内存占用。
内存占用小了,效率自然高。
我的代码是在HS例子基础上修改的,我估计大多数同志开始都是这么干的。
例子中有些东西,并不适合我们自己的应用场景,这个是肯定的,所以需要针对自己的应用环境做调整。
原来我使用流解码,没注意图像延迟,后来发现超大,不说一分钟这个夸张吧,人都离开了,解码的图像,人还刚来。呵呵。:lol
为此调整为帧解码,好多了。以后再处理相关帧解码送入机制,使送入合理平滑。为了兼容多家设备,图像来源复杂,想要平滑流畅,可能需要单独处理。
以下是我实际代码编写中,暂遇到的,后续可能有调整。
//////////////说正题 第一部分:调整VPSS,节约内存 A 2016-4_29
以前没有细细看文档中的FAQ,其实都是重中之重。
分享出来,初入门者,也好有个参考。
HiMPP 媒体处理FAQ 文档中:
VPSS
−
详细描述:解码回放中,如果解码图像为帧图像,与解码通道绑定的 VPSS 组
可关闭非必须的图像处理开关以节省内存。创建 VPSS GROUP 时,将属性项
设置为 bNrEn=HI_FALSE、enDieMode= VPSS_DIE_MODE_NODIE、
bHistEn=HI_FALSE。每 vpss 组可节省内存计算公式为:图像 w x h x 1.5(或
2) x 2
//////////////////////////////////没有设置修改前,稀里糊涂被用掉了1个通道4-6M内存,如果16个通道,几十兆内存用掉了。
所以果断在sample_comm_vpss.c中,修改SAMPLE_COMM_VPSS_Start函数
if(NULL == pstVpssGrpAttr)
{
stGrpAttr.u32MaxW = pstSize->u32Width;
stGrpAttr.u32MaxH = pstSize->u32Height;
stGrpAttr.bDrEn = HI_FALSE;
stGrpAttr.bDbEn = HI_FALSE;
// stGrpAttr.bIeEn = HI_TRUE;
// stGrpAttr.bNrEn = HI_TRUE;
stGrpAttr.bNrEn = HI_FALSE;
stGrpAttr.bIeEn = HI_FALSE;
stGrpAttr.bHistEn = HI_FALSE;
//stGrpAttr.enDieMode = VPSS_DIE_MODE_AUTO; //VPSS_DIE_MODE_NODIE
stGrpAttr.enDieMode = VPSS_DIE_MODE_NODIE;
stGrpAttr.enPixFmt = SAMPLE_PIXEL_FORMAT;
}
都关掉
这下VPSS几乎不用内存了,一个通道约100K,呵呵,超级管用。我是16路D1解码,看着剩余内存突然增加了60M,高兴呀。:lol
////////////////////////// 第二部分,设置编译选项,减少执行程序大小
HiMPP IPC V2.0 媒体处理 FAQ 文档中:提到
1.4.1 静态库使用
【现象】应用程序只使用 libmpi.a 一小部分函数,但需要链接 mpi 库外 vqev2 等库文
件,导致应用程序文件过大。
【分析】链接时默认需要链接库中所有定义函数表,从而需要引用 mpi 库中关联的其他
库。
【解决】MPP 版本生成库时,Makefile.param 加入 -ffunction-sections 编译选项;客户在
链接生成应用程序时加入 -Wl,-gc-sections,能有效减小应用程序大小,剔除掉没有使
用到的函数。
我自己加入后,执行程序,减小约50K,可喜可贺。:lol
我来回答
回答5个
时间排序
认可量排序
认可0
认可0
认可0
认可0
认可0
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币
Markdown 语法
- 加粗**内容**
- 斜体*内容*
- 删除线~~内容~~
- 引用> 引用内容
- 代码`代码`
- 代码块```编程语言↵代码```
- 链接[链接标题](url)
- 无序列表- 内容
- 有序列表1. 内容
- 缩进内容
- 图片![alt](url)
相关问答
-
2015-06-24 14:32:58
-
2016-10-12 11:07:43
-
2015-05-06 12:57:57
-
2016-03-10 03:00:21
-
02016-05-03 13:49:00
-
2020-11-14 10:53:50
-
2015-11-30 20:06:15
-
2014-07-08 13:48:44
-
2014-12-02 17:06:03
-
2016-05-05 12:45:21
-
2015-04-15 12:54:13
-
2015-04-22 11:24:57
-
242015-05-08 15:51:22
-
2017-12-12 16:18:43
-
102015-06-02 09:32:52
-
2015-09-05 16:13:48
-
2018-07-18 14:38:34
-
2019-05-31 17:02:57
-
1182015-05-23 20:02:15
无更多相似问答 去提问
点击登录
-- 积分
-- E币
提问
—
收益
—
被采纳
—
我要提问
切换马甲
上一页
下一页
悬赏问答
-
5RK3588的DPHY0接lt6911uxe转HDMI抓帧分辨率不对
-
20求rv1106板子的sdk包或者开发板资料
-
10ss928烧录uboot失败
-
10求助,3588调试imx586和ov50c40时,按照瑞芯微的单摄8k配置好设备树后,驱动配置的8k分辨率的,但是只能抓到4k的图,且颜色偏粉
-
50帮忙解决个交叉编译的问题
-
20帮忙交叉编译个源码
-
5Hi3516CV610 如何使用SD卡升级固件
-
5cat /dev/logmpp 报错 <3>[ vi] [func]:vi_send_frame_node [line]:99 [info]:vi pic queue is full!
-
50如何获取vpss chn的图像修改后发送至vo
-
5FPGA通过Bt1120传YUV422数据过来,vi接收不到数据——3516dv500
举报反馈
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明
提醒
你的问题还没有最佳答案,是否结题,结题后将扣除20%的悬赏金
取消
确认
提醒
你的问题还没有最佳答案,是否结题,结题后将根据回答情况扣除相应悬赏金(1回答=1E币)
取消
确认