【opus源码分析】celt_fir5函数
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函数相关推荐
- jQuery源码分析-each函数
本文部分截取自且行且思 jQuery.each方法用于遍历一个数组或对象,并对当前遍历的元素进行处理,在jQuery使用的频率非常大,下面就这个函数做了详细讲解: 复制代码代码 /*! * jQuer ...
- x265源码分析 main函数 x265.cpp
图片转载于x265源码流程分析_Dillon2015的博客-CSDN博客_x265编码流程 cliopt.prase main ()函数--解析函数参数并进行编码准备工作:x265.cpp (1)Ge ...
- GCC源码分析(十) — 函数节点的gimple高端化
版权声明:本文为CSDN博主「ashimida@」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明. 原文链接:https://blog.csdn.net/lidan1 ...
- GCC源码分析(十一) — 函数节点的gimple低端化
版权声明:本文为CSDN博主「ashimida@」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明. 原文链接:https://blog.csdn.net/lidan1 ...
- 【Linux 内核 内存管理】mmap 系统调用源码分析 ④ ( do_mmap 函数执行流程 | do_mmap 函数源码 )
文章目录 一.do_mmap 函数执行流程 二.do_mmap 函数源码 调用 mmap 系统调用 , 先检查 " 偏移 " 是否是 " 内存页大小 " 的 & ...
- c++imread 函数_OpenCV学习笔记与源码分析: imread( )函数
引言 imread()函数在opencv使用比较. imread()函数 声明: Mat imread(const string& filename, int flags); 这很标准的写法, ...
- 【opus源码分析】【互相关函数源码分析】xcorr_kernal_c
今天只看一个函数xcorr_kernal_c,它的位置位于pitch.h里.这个函数是用于计算两个函数的相关性的,然后输出到长度为4的数组里. 定义如下 void xcorr_kernel_c(con ...
- Redis源码分析--lookupKey函数查看value值
lookupKey函数查看value值 robj *lookupKey(redisDb *db, robj *key) {dictEntry *de = dictFind(db->dict,ke ...
- Linux0.11内核源码分析1-main函数运行之前的准备
在阅读该文章之前,你起码有点操作系统的知识,了解实模式与保护模式的概念,了解分段机制,如果不懂得建议去阅读<操纵系统真象还原>这本书
最新文章
- Git使用学习笔记 (一)
- 子元素超出了父元素的高度_T恤定制融入中国元素,美出新高度
- c++构建工具之shell,configure,make,cmake,scons,xmake简析总结
- 模板设计模式,简单Java代码实现
- #转载#记录:文献阅读第一利器:文献笔记法(Literature Notes)
- 卸载linux下的mysql数据库实例_Linux下卸载MySQL数据库实例教程
- 【动态规划BFS】相遇
- javascript学习系列(13):数组中的concat方法
- C++函数模板5分钟入门
- java data文件夹_java-如何在不指定父文件夹/ ref的情况下遍历Datasnapshot
- You can format your XML in the 'standard' Android way...
- JDK8编译,JDK8运行错误
- wps表格错开半行_WPS文字制作左右错行表格(运用插入分节符、分栏等功能)
- jupyter notebook 302 get打不开
- (四)keycloak 自定义用户(SPI)开发
- 剑指Offer——银行考试
- 【愚公系列】2021年12月 攻防世界-简单题-CRYPTO-005(Railfence)
- Java小游戏练习---超级玛丽代码实现
- matlab:曲线拟合
- 幸存者偏差(survivorship bias)
热门文章
- J. Cheminform. | DrugEx v2:多重药理学中基于pareto的多目标强化学习的药物分子从头设计...
- android 4.4 禁止下拉,Android开发中禁止下拉式的实现技巧
- 执行公式_法院诉讼费、保全费、执行费速算公式
- 看完这部纪录片之后,我想把身上的细菌寄生虫供起来
- Nature:给博士研究生的四条箴言Four golden lessons,颜宁推荐
- 多元回归树分析Multivariate Regression Trees,MRT
- sklearn使用投票器VotingClassifier算法构建多模型融合的软投票器分类器(soft voting)并自定义子分类器的权重(weights)、计算融合模型的混淆矩阵、可视化混淆矩阵
- R语言效用分析 ( 效能分析、Power analysis)确定样本量、假设检验与两类错误、pwr包进行效用分析 ( 效能分析、Power analysis)的常用函数列表
- R语言ggplot2可视化使用ggplot2::ggsave函数和gridextra::marrangegrob函数将多个可视化结果保存在pdf文件中
- pandas重置dataframe的索引(reset_index)、如果索引不匹配dataframe操作时候的问题、重置索引(不设置drop=true)远索引生成新的数据列