celt_fir5函数是一个内部函数,用于计算FIR的

代码如下

/**
* x 是输入信号
* num 是FIR系数,在opus里这里是autocorrelation系数
* y 是输出信号
* N 是x输入信号的长度
* mem是用于计算的数组,它用于依次储存x[i-1],x[i-2],x[i-3],x[i-4]的值
*/
static void celt_fir5(const opus_val16 *x,const opus_val16 *num,opus_val16 *y,int N,opus_val16 *mem)
{int i;opus_val16 num0, num1, num2, num3, num4;opus_val32 mem0, mem1, mem2, mem3, mem4;num0=num[0];num1=num[1];num2=num[2];num3=num[3];num4=num[4];mem0=mem[0];mem1=mem[1];mem2=mem[2];mem3=mem[3];mem4=mem[4];for (i=0;i<N;i++){opus_val32 sum = SHL32(EXTEND32(x[i]), SIG_SHIFT);sum = MAC16_16(sum,num0,mem0);sum = MAC16_16(sum,num1,mem1);sum = MAC16_16(sum,num2,mem2);sum = MAC16_16(sum,num3,mem3);sum = MAC16_16(sum,num4,mem4);mem4 = mem3;mem3 = mem2;mem2 = mem1;mem1 = mem0;mem0 = x[i];y[i] = ROUND16(sum, SIG_SHIFT);}mem[0]=mem0;mem[1]=mem1;mem[2]=mem2;mem[3]=mem3;mem[4]=mem4;
}

这个算法看不懂的可以自己用笔在纸上画一下,这样会清晰一点。
实际上就是在按照FIR的公式在做运算。 源码中的num就是b系数;mem就是x[n-1]到x[n-N],只不过这里的N是5所以函数名称就叫fir5了。

【opus源码分析】celt_fir5函数相关推荐

  1. jQuery源码分析-each函数

    本文部分截取自且行且思 jQuery.each方法用于遍历一个数组或对象,并对当前遍历的元素进行处理,在jQuery使用的频率非常大,下面就这个函数做了详细讲解: 复制代码代码 /*! * jQuer ...

  2. x265源码分析 main函数 x265.cpp

    图片转载于x265源码流程分析_Dillon2015的博客-CSDN博客_x265编码流程 cliopt.prase main ()函数--解析函数参数并进行编码准备工作:x265.cpp (1)Ge ...

  3. GCC源码分析(十) — 函数节点的gimple高端化

    版权声明:本文为CSDN博主「ashimida@」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明. 原文链接:https://blog.csdn.net/lidan1 ...

  4. GCC源码分析(十一) — 函数节点的gimple低端化

    版权声明:本文为CSDN博主「ashimida@」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明. 原文链接:https://blog.csdn.net/lidan1 ...

  5. 【Linux 内核 内存管理】mmap 系统调用源码分析 ④ ( do_mmap 函数执行流程 | do_mmap 函数源码 )

    文章目录 一.do_mmap 函数执行流程 二.do_mmap 函数源码 调用 mmap 系统调用 , 先检查 " 偏移 " 是否是 " 内存页大小 " 的 & ...

  6. c++imread 函数_OpenCV学习笔记与源码分析: imread( )函数

    引言 imread()函数在opencv使用比较. imread()函数 声明: Mat imread(const string& filename, int flags); 这很标准的写法, ...

  7. 【opus源码分析】【互相关函数源码分析】xcorr_kernal_c

    今天只看一个函数xcorr_kernal_c,它的位置位于pitch.h里.这个函数是用于计算两个函数的相关性的,然后输出到长度为4的数组里. 定义如下 void xcorr_kernel_c(con ...

  8. Redis源码分析--lookupKey函数查看value值

    lookupKey函数查看value值 robj *lookupKey(redisDb *db, robj *key) {dictEntry *de = dictFind(db->dict,ke ...

  9. Linux0.11内核源码分析1-main函数运行之前的准备

    在阅读该文章之前,你起码有点操作系统的知识,了解实模式与保护模式的概念,了解分段机制,如果不懂得建议去阅读<操纵系统真象还原>这本书

最新文章

  1. Git使用学习笔记 (一)
  2. 子元素超出了父元素的高度_T恤定制融入中国元素,美出新高度
  3. c++构建工具之shell,configure,make,cmake,scons,xmake简析总结
  4. 模板设计模式,简单Java代码实现
  5. #转载#记录:文献阅读第一利器:文献笔记法(Literature Notes)
  6. 卸载linux下的mysql数据库实例_Linux下卸载MySQL数据库实例教程
  7. 【动态规划BFS】相遇
  8. javascript学习系列(13):数组中的concat方法
  9. C++函数模板5分钟入门
  10. java data文件夹_java-如何在不指定父文件夹/ ref的情况下遍历Datasnapshot
  11. You can format your XML in the 'standard' Android way...
  12. JDK8编译,JDK8运行错误
  13. wps表格错开半行_WPS文字制作左右错行表格(运用插入分节符、分栏等功能)
  14. jupyter notebook 302 get打不开
  15. (四)keycloak 自定义用户(SPI)开发
  16. 剑指Offer——银行考试
  17. 【愚公系列】2021年12月 攻防世界-简单题-CRYPTO-005(Railfence)
  18. Java小游戏练习---超级玛丽代码实现
  19. matlab:曲线拟合
  20. 幸存者偏差(survivorship bias)

热门文章

  1. J. Cheminform. | DrugEx v2:多重药理学中基于pareto的多目标强化学习的药物分子从头设计...
  2. android 4.4 禁止下拉,Android开发中禁止下拉式的实现技巧
  3. 执行公式_法院诉讼费、保全费、执行费速算公式
  4. 看完这部纪录片之后,我想把身上的细菌寄生虫供起来
  5. Nature:给博士研究生的四条箴言Four golden lessons,颜宁推荐
  6. 多元回归树分析Multivariate Regression Trees,MRT
  7. sklearn使用投票器VotingClassifier算法构建多模型融合的软投票器分类器(soft voting)并自定义子分类器的权重(weights)、计算融合模型的混淆矩阵、可视化混淆矩阵
  8. R语言效用分析 ( 效能分析、Power analysis)确定样本量、假设检验与两类错误、pwr包进行效用分析 ( 效能分析、Power analysis)的常用函数列表
  9. R语言ggplot2可视化使用ggplot2::ggsave函数和gridextra::marrangegrob函数将多个可视化结果保存在pdf文件中
  10. pandas重置dataframe的索引(reset_index)、如果索引不匹配dataframe操作时候的问题、重置索引(不设置drop=true)远索引生成新的数据列