音频算法库(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

 

Copyright 2008 ViPER520 Powered By 5uCMS
苏ICP备08007398号