最近产品中要用到opus,圣上一声令下,把opus移植到我们平台上,什么?opus?opus是什么?在一脸

茫然中,我这特种兵码农就赤手空拳上战场了。

  废话少说,赶紧在网站:https://opus-codec.org/downloads/ 把最新的稳定的opus源码opus-1.2.1.tar.gz下载

到本地linux:解压缩之后,在根目录下执行:

   .configure

   make

  make install

  在一路顺利的情况下,已经可以在linux看opus怎么用了,这里面,有很多例子,以个人经验,首先要看最重要的

demo,在src目录下,查看opus_demo.c 这个文件,你会发现opus的基本使用都在这里:

    编码初始: enc = opus_encoder_create(sampling_rate, channels, application, &err);

    模式配置:   opus_encoder_ctl(enc, OPUS_SET_BITRATE(bitrate_bps));

    启动编码:  len[toggle] = opus_encode(enc, in, frame_size, data[toggle], max_payload_bytes);

    编码结束: opus_encoder_destroy(enc);

 这么简单?不,这个是简洁,我这里只把重要的抽出来,细节要自己琢磨的。要看怎么配置帧长,怎么配置采样率

main函数上面的结构体:celt_test silk16_test 写的很明白,自己研究喔。

  这里面,其实还有很多例子可以研究,在test目录下有每个函数的详细测试,可以查看函数怎么使用,以及每种模式

的性能怎么样,都可以测出来。

  有人问了,怎么没见你把系统移植到arm平台上?

  这和我的做事方法论有关系,在移植算法时,我一般是先在linux上仿真,尽量把大致算法摸个底,占内存多少?消耗多少

MIPS?能否进行测试?这些没有搞清楚的情况下,贸然的移植,经验告诉我,会欲速则不达哦。

  上面的都搞清楚了,接下来才能启动arm平台上的移植,其实,剩下的就是调试了,把代码加入makefile编译,在适当的地方

调用上面的编解码函数,然后实际调试和测试。移植到arm平台的部分涉及到项目保密,就不多晒了。

opus在arm的嵌入式平台上的移植和开发的更多相关文章

  1. 嵌入式设备上的 Linux 系统开发

    转载:http://www.ibm.com/developerworks/cn/linux/embed/embdev/index.html   如果您刚接触嵌入式开发,那么大量可用的引导装载程序(bo ...

  2. Linux系统在嵌入式硬件上的移植

    =========================        基本常识       ========================= 一. Linux系统的基本构成: 1. loader 2.  ...

  3. 嵌入式平台组件白盒测试gcov、lcov和genhtml 使用指导

    在嵌入式平台上使用了gtest白盒测试工具,覆盖了被测函数,但是不知道自己测试的效果如何,测试行覆盖率.函数覆盖率,分支覆盖率的数据. 便开始研究gcov这个代码覆盖率工具能否使用,来检查白盒测试的效 ...

  4. 使用Vitamio开发iOS平台上的万能播放器

    迅速了解 Vitamio是干什么的?看官方怎么说: "Vitamio SDK for iOS是Yixia Ltd官方推出的 iOS 平台上使用的软件开发工具包(SDK),为iOS开发人员提供 ...

  5. 热烈庆祝华清远见2014嵌入式系统(Linux&Android)开发就业培训课程全面升级

    近日,华清远见公开宣布:2014嵌入式系统 (Linux&Android)开发就业培训课程再次升级!据悉,华清远见如今已经持续10年,一直保持课程每年2次的更新的频率.华清远见的每 次课程更新 ...

  6. u-boot-2014_04在TQ2440上的移植

    本文详细介绍了新版本的u-boot-2014_04在tq2440平台上的移植过程,期间参考了网上的其他移植文档,还有韦东山的移植uboot视频,讲的很好.下面是共享链接,欢迎下载,一同学习.其中有移植 ...

  7. Qt在各平台上的搭建qt-everywhere(Qt for windows7-64bit, Ubuntu 12.04-32bit, 嵌入式x86平台, 嵌入式arm平台)

    下载地址:http://download.qt.io/ 当进入解压好的源码包后,使用./configure –help命令,可以获得相应帮助,前面是*号的表示默认参数. +号表示该功能要求被评估,评估 ...

  8. ARM Cortex-M嵌入式C基础编程(上)

    ARM Cortex-M嵌入式C基础编程(上) ARM Cortex-M Embedded C Fundamentals/Tutorial -Aviral Mittal 此技术是关于从编写简单的嵌入式 ...

  9. FFMPEG在嵌入式硬件上应用之 —— 基本环境搭建及编译

    前段时间在翻看电脑里面资料时,发现了以前做的在嵌入式硬件上面运行以ffmepg为基础,以嵌入式硬件解码的多媒体播放工作,发现都快忘记完了.今日得闲整理温习了一下ffmpeg在嵌入式上的运用,这里给大家 ...

随机推荐

  1. jq 切换功能toggle

    ---恢复内容开始--- $(document).ready(function () { $(".jianjie").click(function () { $(this).tog ...

  2. spring proxy-target-class

    <tx:annotation-driven transaction-manager="transactionManager"                          ...

  3. Pandas.Series.dt.dayofweek相关命令

  4. Android Studio修改项目中整体包名

    莫名的需求,要把之前的apk分成三个不同的apk,还要在应用市场能够上线,麻麻滴这样一听那还不要各个apk包的包名不同以及apk签名文件也不同嘛(签名文件一般也用不同,为防止上线冲突嘛).所以就亲自尝 ...

  5. stark组件开发之排序

    class StartHandler(object): .......... ordered_list = [] # 排序规则由 用户指定. def get_ordered_list(self): r ...

  6. CSS学习总结4:派生选择器学习总结

    派生选择器:通过依据元素在其位置的上下文关系来定义样式,你可以使标记更加简洁.派生选择器中一共分为三种:后代选择器.子元素选择器.相邻兄弟选择器. 1.初识派生选择器 实例:你希望列表中的 stron ...

  7. 关于sql中如何动态加WHERE条件

    SELECT row_number()OVER(ORDER BY FromLoc) RowIndex,*  FROM @TaskTable   WHERE 1=1 AND CASE WHEN @Loc ...

  8. C# Form Chart X刻度左右多余一格怎么去掉

    如上图所示:形成的chart,1和8时y没有值,我实际给的也是2~7的数,可视1和8的刻度却在,怎么去掉,谢谢. 解决方法:chart1.ChartAreas[0].AxisX.IsMarginVis ...

  9. Ural 1018 Binary Apple Tree

    题目链接:http://acm.timus.ru/problem.aspx?space=1&num=1018 Dynamic Programming. 首先要根据input建立树形结构,然后在 ...

  10. 【Git】 GitLab简单使用

    本例介绍简单实用GitLab,安装请参照[Git] GitLab服务器社区版安装与配置 1.用户和组的管理 a.创建组,在首页点击Create a group b.创建用户,在首页点击Add peop ...