编程
文章平均质量分 86
audiocool
专注于音频数字信号处理领域,掌握语音降噪,回声消除,啸叫抑制,均衡器,自动增益,限幅器等音频前级处理算法。熟悉数字麦克风阵列波束处理,数字音频水印等。欢迎志同道合的朋友一起探讨!
展开
-
Windows APO
原文时间是:2017/04/20, 适用对象是Windows 10APO最初是在Windows Vista中引入的,您可能会看到对早期系统APO-sAPO的引用。 有关详细信息,请参阅Windows Vista中的自定义音频效果(Custom Audio Effects in Windows Vista)。 本白皮书可能会参考较旧的COM 和 UI开发主题。目录1. APO架构1.1 APO概览1.1.1 软件APOs vs. 硬件 DSP1.1.2 硬件DSP的代理APO(Proxy APO)1.1.3转载 2022-07-10 21:42:23 · 2107 阅读 · 0 评论 -
DSP线性汇编优化
转自:https://blog.51cto.com/junzhuivs/1398316从dct简单了解一种线性汇编优化方法一直在看这方面的东西,自己也写过代码,但是始终都没有掌握其中的真谛。其实现在也是半懂不懂,然而还是感觉有些灵感了,写起代码也不那么慢了。今天下午就调试了四个代码,前提是这四个函数前几天是看过的:dct4x4dc,idct4x4dc,quant4x4dc和iquant4x4dc。效果dct变换还是很好的,基本提高了一半的效率,而iquant就没甚么改进,而且quant还不如以前了转载 2022-05-20 18:28:23 · 879 阅读 · 0 评论 -
嵌入式移植代码优化
转自:算法的嵌入式移植(一)C代码优化 – Deep Studio一般C/C++的算法代码不适合直接移植到嵌入式设备,需要做一些优化和处理。一方面是出于速度考虑,另一方面是针对嵌入式设备支持的语言特性差异进行修改,还有就是硬件上的考虑,比如就定点DSP而言,就需要将原来的浮点运算进行转化。近期博主在整理以往笔记,就将算法嵌入式移植这部分差分成两个章节,一是C代码优化部分,二是DSP代码移植部分,第一章节是语言层面的一般而言是适合所有嵌入式设备的,第二章节是和DSP开发环境相关方面的。特此整理,谨..转载 2022-05-20 10:07:29 · 1071 阅读 · 0 评论 -
Android AudioEffect音效移植
原文链接:https://blog.csdn.net/wkw1125/article/details/65632960AudioEffect构造流程跟踪为了编写新的音效实现,需要了解Android底层在AudioEffect的底层实现:在Java层new Equalizer();后,通过JNI进入底层C/C++的实现过程。在底层,通过层层调用,由音控中枢AudioFlinger.cpp负责音效的管理,在线程中使用音效工厂EffectFactory.c读取.conf配置文件完成音效实例的创建。A.转载 2022-05-16 21:13:53 · 3043 阅读 · 0 评论 -
Android智能手机上的音频浅析
手机可以说是现在人日常生活中最离不开的电子设备了。它自诞生以来,从模拟的发展到数字的,从1G发展到目前的4G以及不久将来的5G,从最初的只有唯一的功能(打电话)发展到目前的全功能,从功能机(feature phone)发展到智能机(smart phone),可谓变化巨大。对于手机上的音频来说,刚开始只有语音通信功能,现在不仅语音通信,还可以听音乐、录音、智能语音(语音输入/语音交互)等。智能手机中的音频场景众多,可以说是手机多媒体系统中最复杂的子系统了。今天我们就谈谈Android智能手机上的音频。转载 2021-12-29 21:46:14 · 885 阅读 · 0 评论 -
Gerrit工作流程
Update at 2019-08-04今天偶然看了下图片的流量,发现这篇讲Gerrit的流量好高,果然一看这篇blog的阅读量已经好几万了。为了不误导大家,我还是做下更新:本人已经很久不使用Gerrit了,现在用GitLab,界面非常美观,使用方法也很简单,而且也能满足之前的代码审核的要求。所以大家也都转去GitLab吧。关于GitLab的搭建和使用网上应该有很多介绍,这里就不做过多的介绍,我这里有一篇GitBook和GitLab搭建使用的文章,如果要使用GitLab的CI功能,可以参考一下【.转载 2021-10-29 09:58:16 · 407 阅读 · 0 评论 -
Android系统架构与源码目录
Android系统的整个源码目录结构分析本文介绍的Android系统源码并不是像某一个类(比如:Handler)的源码,而是支持整个Android系统能够运行的源码。这里只对Android系统源码目录进行分析,具体的源码一般都是根据需求来看。一.Android源码的基本知识Android源码包含比较多的文件,比如Android系统的所有页面,里面的所有app程序,还包含了sdk,各种镜...转载 2020-04-23 14:35:15 · 313 阅读 · 0 评论 -
ARM的NEON指令优化
本文参考整理了以下文章:http://blog.csdn.net/may0324/article/details/72847800http://blog.csdn.net/chshplp_liaoping/article/details/12752749http://blog.csdn.net/charleslei/article/details/52698220在移动平台上...转载 2019-08-24 11:56:07 · 1378 阅读 · 0 评论 -
常用的数值计算工具
1、gsl(GNU Scientific Library)是专门为应用数学和科学技术领域的数值计算提供支持的软件库。gsl使用C语言编写,同时也为其他语言做了相应的封装。gsl在GNU通用公共许可下是免费的。该函数库提供了广泛的数学算法的实现函数,包括随机数生成器,特殊函数和最小二乘拟合等等。目前该函数库提供有超过1000个函数,这些函数包含的范围有:复数计算、多项式求根、特殊函数、向量和矩阵运算...原创 2019-03-06 16:36:11 · 2417 阅读 · 0 评论 -
ALSA录音、回放数据
一、数据回放 /*This example reads standard from input and writesto the default PCM device for 5 seconds of data.*/ /* Use the newer ALSA API */#define ALSA_PCM_NEW_HW_PARAMS_API #include <...转载 2018-12-11 16:08:34 · 3243 阅读 · 0 评论 -
core dump
一.core文件的生成开关和大小限制---------------------------------1)使用ulimit -c命令可查看core文件的生成开关。若结果为0,则表示关闭了此功能,不会生成core文件。2)使用ulimit -c filesize命令,可以限制core文件的大小(filesize的单位为kbyte)。若ulimit -c unlimited,则表示core文件的...原创 2018-12-11 14:41:24 · 542 阅读 · 0 评论 -
python导入不同路径下的模块
python 包含子目录中的模块方法比较简单,关键是能够在sys.path里面找到通向模块文件的路径。 下面将具体介绍几种常用情况: (1)主程序与模块程序在同一目录下: 如下面程序结构: `-- src |-- mod1.py `-- test1.py 若在程序test1.py中导入模块mod1, 则直接使用 import mod1或from mod1 i...转载 2018-12-05 11:45:39 · 436 阅读 · 0 评论 -
Kaldi安装编译
一、下载Kaldi下载直接利用git版本控制系统就可以了,打开终端,直接在你的实验目录下输入命令:git clone https://github.com/kaldi-asr/kaldi.git kaldi-trunk --origin golden不一会就从github上下载下来了。当然,首先得确保你安装了git。要是没安装的话,就先输入:sudo apt-get insta...原创 2018-08-01 19:51:34 · 788 阅读 · 0 评论 -
JNI学习
本文讲述如何使用JNI技术实现HelloWorld,目的是让读者熟悉JNI的机制并编写第一个HelloWorld程序。 Java Native Interface(JNI)是Java语言的本地编程接口,是J2SDK的一部分。在java程序中,我们可以通过JNI实现一些用java语言不便实现的功能。通常有以下几种情况我们需要使用JNI来实现。标准的java类库没有提供你的应转载 2018-03-27 17:25:14 · 173 阅读 · 0 评论 -
coredump技术以找到崩溃原因
最近项目中出现了一个问题,服务器端程序会突然崩溃退出,我们采取了coredump技术以找到崩溃原因,即确定进程退出时正在执行的函数是哪个,其状态如何。 如果系统开启了coredump,准确的说如果当前的shell环境开启了coredump,当前shell环境下的程序崩溃退出时,会把当时进程的栈的内存状态写入core文件。使用gdb可以查看这个core文件中保存的栈的状态,gdb转载 2018-01-13 15:24:41 · 1766 阅读 · 0 评论 -
Valgrind 定位内存泄露
动态内存分配看起来似乎非常简单:您可以根据需要分配内存 ——使用 malloc()或其变种 —— 并在不需要时释放这些内存。实际上,内存管理的问题是软件中最为常见的 bug,因为通常在程序启动时这些问题并不明显。例如,程序中的内存泄漏可能开始并不为人注意,直到经过多天甚至几个月的运行才会被发现。接下来的几节将简要介绍如何使用流行的调试器 Valgrind来发现并调试这些最常见的内存转载 2018-01-13 15:28:31 · 1408 阅读 · 0 评论 -
快排原理与实现
上一节的冒泡排序可以说是我们学习第一个真正的排序算法,并且解决了桶排序浪费空间的问题,但在算法的执行效率上却牺牲了很多,它的时间复杂度达到了O(N2)。假如我们的计算机每秒钟可以运行10亿次,那么对1亿个数进行排序,桶排序则只需要0.1秒,而冒泡排序则需要1千万秒,达到115天之久,是不是很吓人。那有没有既不浪费空间又可以快一点的排序算法呢?那就是“快速排序”啦!光听这个名字是不是就觉得很高端呢。转载 2018-01-04 15:44:11 · 11468 阅读 · 3 评论 -
冒泡排序与优化
冒泡排序算法及其两种优化1、排序方法 将被排序的记录数组R[1..n]垂直排列,每个记录R[i]看作是重量为R[i].key的气泡。根据轻气泡不能在重气泡之下的原则,从下往上扫描数组R:凡扫描到违反本原则的轻气泡,就使其向上"飘浮"。如此反复进行,直到最后任何两个气泡都是轻者在上,重者在下为止。(1)初始 R[1..n]为无序区。转载 2018-01-04 15:49:25 · 234 阅读 · 0 评论 -
三分查找求最值及其应用
一. 概念原文:http://blog.csdn.net/beiyouyu/article/details/7875480 在二分查找的基础上,在右区间(或左区间)再进行一次二分,这样的查找算法称为三分查找,也就是三分法。三分查找通常用来迅速确定最值。二分查找所面向的搜索序列的要求是:具有单调性(不一定严格单调);没有单调性的序列不是使用二分查找转载 2018-01-04 16:01:45 · 1363 阅读 · 0 评论 -
二分查找
二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好,占用系统内存较少;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查转载 2018-01-04 16:14:41 · 361 阅读 · 0 评论 -
哈希查找
哈希表和哈希函数在记录的存储位置和它的关键字之间是建立一个确定的对应关系(映射函数),使每个关键字和一个存储位置能唯一对应。这个映射函数称为哈希函数,根据这个原则建立的表称为哈希表(Hash Table),也叫散列表。以上描述,如果通过数学形式来描述就是:若查找关键字为 key,则其值存放在 f(key) 的存储位置上。由此,不需比较便可直接取得所查记录。注:哈希查转载 2018-01-04 16:38:09 · 1302 阅读 · 2 评论 -
拉链法实现哈希表
#include string.h>#include #include typedef struct node{ char *name;//字段名 char *desc;//描述 struct node *next;}node;#define HASHSIZE 100 //hash表长度static node* hashtable[HASHSIZE];//定转载 2018-01-04 17:01:00 · 1115 阅读 · 0 评论 -
socket通信
什么是Socket?Socket是一个通信的端点。一对进程在网络直接通过一对socket通信,每个进程一个。一个socket由一个IP地址和端口号确定。Socket封装了一些操作,使得网络里两个进程的数据通信比较方便。基于TCP协议和UDP协议的socket用得很多。下图展示了两种方式的通信过程②建立socket进行通信使用的转载 2018-01-23 16:40:28 · 1008 阅读 · 0 评论 -
二种快排稳定实现
三路快排voidquickSort(int[] a,int left, int right) { if (right return; /* * 工作指针 * p指向序列左边等于pivot元素的位置 * q指向序列右边等于Pivot元素的位置 * i指向从左向右扫面时的元素 * j指向从右转载 2018-01-10 11:41:13 · 4045 阅读 · 0 评论 -
extern const 的用法
问题 一1.cppextern const int i; //const int i = 1;const int i = 1; //extern const int i;int main(){return 0;}2.cppextern const int i = 2;为什么这样不能通过链接,而如果按注释里的顺序就能通过链接,这个怎么解释呢?问题二在C++中,定义一个全局的符号常量。在a.cpp中定...原创 2018-03-02 10:17:18 · 14637 阅读 · 3 评论 -
知识点整理
目录 计算机网络相关... 4 1、TCP 和 UDP 的区别?... 4 2、TCP三次握手、四次挥手... 4 3、 TCP滑动窗口机制... 5 4、 TCP拥塞控制机制... 6 5、 TIME_WAIT状态的产生、危害、如何避免?... 7 6、 为什么 TCP 叫数据流模式? UDP 叫数据报模式?... 7 7、TCP建立连接为什么需要三次...原创 2018-03-13 11:29:27 · 836 阅读 · 0 评论 -
C++ STL学习
STL官网地址(具有很好的参考意义,可当使用手册):http://www.cplusplus.com/reference/stl/一、STL简介STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称。它是由Alexander Stepanov、Meng Lee和David R Musser在惠普实验室工作时所开发出来的转载 2017-12-25 14:58:22 · 721 阅读 · 0 评论