音频算法库(1.1.0版)发布
这是本人用VS2005和汇编开发的常用音频算法库,其中有几个非常实用的音频处理接口,有了它们你就可以轻易的写出专业级的音频播放、处理、分析软件! 最新版本为1.10,更新了频谱分析的算法,使得频谱数据更加精准! 接口信息如下: int CMath_MD5(char* pBuf, int nLength, unsigned char *MD5_Buf); 计算一个字符串的MD5值, pBuf为输入数据, nLength为数据长度, MD5_Buf为一个由16个元素组成的数组(例如:MD5[16]), 用于输出字符串(pBuf)的MD5值! int CMath_CRC16(unsigned int crc, unsigned char* Buff, const int Size); 计算字符串的CRC校验, crc为查询CRC表索引值, Buff为输入字符串, Size为输入字符串大小, 函数返回字符串的CRC16! int CMath_FFT_512_Vis(short int *In, unsigned char *Out, int nCH, int SmpNum); 计算一段音频数据的频谱数据, In为输入16位整数音频数据(至少1024个样本), Out为输出频谱数据(512个元素), nCH为输入音频的声道数, SmpNum为输入音频的样本数量(此处不是样本大小而是数量, 计算方法:SmpNum = sizeof(Buffer)/nCH/sizeof(short), Buffer为形参In对应的实参) , 此函数会将Out中的数据Scale, 调用后可以直接使用! 大家应该都知道有名的BASS.DLL中做的最出色的就是频谱数据的准确性, 这个函数计算的频谱数据其准确性绝对可以和BASS相媲美! int CMath_Real_DCT(double *target, double *source, long length); 计算双精度样本的快速离散余弦变换, target为输出缓冲, source为输入缓冲, length为输入缓冲区内样本数量! int CMath_Real_iDCT(double *target, double *source, long length); 计算反向离散余弦变换, 即上个函数的逆过程, 参数同上! int CMath_Real_FFT(int FFT_Size, float *x); 快速傅立叶变换(时域->频域), 可用于EQ处理, 数据分析等, FFT_Size为傅立叶大小, x为输入输出缓冲! int CMath_Real_iFFT(int FFT_Size, float *x); 上个函数的逆过程(频域->时域), 参数同上! int CMath_Dlb_Besi0(double in, double *out); 计算一个双精度数值的贝塞尔函数值, 可用于重采样等插值算法, in为输入, out为输出! void CMath_GetVersion(unsigned char *Buffer, int bufSize); 获取此函数库的版本版权字符串, Buffer为输出缓冲, bufSize为缓冲区大小(大于64)!
有了这些函数,您的音频播放、处理、分析器将可以省去大量的代码! 在"下载区"可以下载! vipercn.com
|
