工程项目挂网在什么网站上看,wordpress 4.8 rest api,网站展示模板免费下载,网站建设实验分析最近做的网络语音的项目需要用到speex中的一些功能#xff0c;查了一下资料发现移植给mcu的经验大多零零碎碎#xff0c;自己捣鼓了一晚上总算是移植好了#xff0c;写个博客记录一下。1.获取speex源码
官方下载#xff1a; 官方地址
博主移植用的源码以及移植好的工程下… 最近做的网络语音的项目需要用到speex中的一些功能查了一下资料发现移植给mcu的经验大多零零碎碎自己捣鼓了一晚上总算是移植好了写个博客记录一下。1.获取speex源码
官方下载 官方地址
博主移植用的源码以及移植好的工程下载 提取码552i
2.添加源码文件到工程
解压源码包需要保证有以下几个文件和目录即可图中与移植无关的选项已经删掉可以参考步骤1中博主移植用的源码 打开需要移植的工程添加新的分组speex把源码目录libspeexdsp下的.c文件全部添加进来 其中test开头的几个文件可以暂时不包含或者直接移除 添加头文件路径指定源码目录下的include目录
添加配置文件和相关宏
把源码根目录下的config.h.in文件复制到源码的include目录下并改名为config.h 修改后的源码/include目录如下图
把源码/include/speex目录下的speexdsp_config_types.h.in文件改名为speexdsp_config_types.h 修改后的源码/include/speex目录如下图
在工程选项中添加宏HAVE_CONFIG_H这个宏表示使用config.h文件对库进行配置 打开刚刚复制的config.h文件随便打开一个.c文件一般是第一个包含的文件右键open即可修改以下三个宏相关功能参考文件中的注释
#undef EXPORT -- #define EXPORT extern #undef FLOATING_POINT– #define FLOATING_POINT #undef USE_SMALLFT– #define USE_SMALLFT
打开speexdsp_config_types.h补全以下几行
typedef short spx_int16_t; typedef unsigned short spx_uint16_t; typedef int spx_int32_t; typedef unsigned int spx_uint32_t;
编译
编译时一定要在工程选项中选上c99mode取消勾选use microlib 最后点击组建即可正常的话会是0错误和若干个警告也就是移植成功了库的使用手册位于源码/doc目录下参考它使用库中的API
追加
后来调试发现不勾选use microlib的话程序一直不运行无奈只能选上但是会报exit函数未定义的错误博主的解决办法是在config.h的最后添加这个函数的宏定义
#define exit(a) ; 还有speex_alloc函数也是个麻烦经常申请失败博主后来改用了正点原子的外部RAM申请函数才勉强把回声消除给跑起来了之前回声消除连输出都没有但是串口一直提示“started acting funny and got slapped (reset). It swears it will behave now.”而且消除的效果和没消基本没差我试着把尾部大小调大些但是调大以后又没有输出了可能内存又吃紧了可是能够运行的范围以内效果也并不好啊。