打印
[STM32L4]

STM32L4在IAR下移植Opus语音压缩算法

[复制链接]
6354|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
最近在用L4采集声音数据,需要压缩才能发送出去,选择了Opus作为音频压缩工具,据说比speex好用;
但好像很难移植到IAR上去,里面用了宏定义分配内存函数;
#  define ALLOC(var, size, type) var = ((type*)alloca(sizeof(type)*(size)))

貌似可以在linux或者GCC编译器才能使用,IAR下没办法使用;

解决办法:
1、滚回老的Speex算法做压缩算法,放弃Opus;
2、改用GCC编译代码(根本没用过);
3、在keil下用GCC编译器,编译代码(貌似可以,但是还是没有用过,不知是否有大侠用过);
4、在IAR下用GCC编译器,编译代码(貌似听都没有听说过,要是有大侠实现过,求教一二);

不知道大侠们是否有解决方案,在STM32下移植成功过Opus?

小弟不胜感激;



沙发
Simon21ic| | 2016-10-14 17:20 | 只看该作者
内存分配函数很难移植?

使用特权

评论回复
板凳
七颗咖啡豆| | 2016-10-14 17:56 | 只看该作者
直接移植内存分配解决问题。随便网上找个

使用特权

评论回复
地板
xiaofei558008|  楼主 | 2016-10-17 14:15 | 只看该作者
七颗咖啡豆 发表于 2016-10-14 17:56
直接移植内存分配解决问题。随便网上找个

ALLOC 这个很难编译过;

使用特权

评论回复
5
xiaofei558008|  楼主 | 2016-10-17 14:16 | 只看该作者
七颗咖啡豆 发表于 2016-10-14 17:56
直接移植内存分配解决问题。随便网上找个

#define ALLOC(var, size, type) type var[size]
这个编译过不了啊

使用特权

评论回复
6
xiaofei558008|  楼主 | 2016-10-18 11:47 | 只看该作者


找到问题了,勾上Allow VLA

使用特权

评论回复
7
mypczhou| | 2017-2-12 11:01 | 只看该作者

使用特权

评论回复
8
heimareed| | 2017-10-20 14:22 | 只看该作者
大侠,能否共享下你编译过的工程,最近也在弄着玩,无奈一直没做好啊。

使用特权

评论回复
9
njchenmin| | 2017-10-21 07:07 | 只看该作者
有没有移植方法可以参考一下的

使用特权

评论回复
10
xiaofei558008|  楼主 | 2017-10-27 13:25 | 只看该作者
njchenmin 发表于 2017-10-21 07:07
有没有移植方法可以参考一下的

移植很容易的,就去下Opus源码即可,初始化,在就是使用了;源码好大;传不动;压缩算法要计算好DMA搬的长度,刚好有个half中断,一半在搬,一半在压缩,I2S和麦克风接口等等;需要注意的是F446才可以跑的起来,貌似;其他平台没有仔细测试过;占用RAM很大,而且不能用2个小RAM拼接在一起;

使用特权

评论回复
11
cy013| | 2017-10-31 11:48 | 只看该作者
xiaofei558008 发表于 2017-10-27 13:25
移植很容易的,就去下Opus源码即可,初始化,在就是使用了;源码好大;传不动;压缩算法要计算好DMA搬的 ...

F446跑起来怎么样?CPU使用率大概多少?
想在F437上使用OPUS,正在看资料,不知搞得定不~~

使用特权

评论回复
12
yiyigirl2014| | 2019-7-16 16:34 | 只看该作者
有成功吗

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

134

主题

943

帖子

13

粉丝