ngswfx

ngswfx

1个粉丝

55

问答

1

专栏

40

资料

ngswfx  发布于  2016-04-27 04:09:18
采纳率 0%
55个问答
3283

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






我来回答
回答5个
时间排序
认可量排序

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2016-04-27 08:25:57
认可0
现如今图像尺寸是越来越大, 路数是越来越多, 内存虽然是越来越大但还是越来越紧张

本着能省一点是一点的原则, 坚决向海思要内存:lol

ngswfx

1个粉丝

55

问答

1

专栏

40

资料

ngswfx 2016-04-27 11:53:07
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=29201&ptid=11145]zhuangweiye 发表于 2016-4-27 08:25[/url]
现如今图像尺寸是越来越大, 路数是越来越多, 内存虽然是越来越大但还是越来越紧张

本着能省一点是一点的 ...[/quote]

多谢惠顾:

是呀,其实,最重要的一点就是,必须用的那是没办法,有些临时没用的,一定不开,用的时候才开。

我现在遇到的问题就是,有些内存分配的不明不白,还需要继续研究熟悉呀:sleepy:

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2016-04-27 11:56:58
认可0
海思的内存就像海绵里的水, 挤挤总会有的:lol

goodman

2个粉丝

30

问答

18

专栏

17

资料

goodman 2016-04-27 23:04:38
认可0
海思手册里面的FAQ很一些优化建议的

黄征one

0个粉丝

0

问答

0

专栏

0

资料

黄征one 2016-06-09 15:04:09
认可0
正在使用3520D,学习了 感谢楼主
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
+ 添加网盘链接/附件

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
相关问答
无更多相似问答 去提问
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

易百纳技术社区