这是在斯坦福大学的Greg Sell 和 Scott Cannon 在2005年冬天做的一个简单的音频编码器。
性能经分析和MPEG1 层1层2差不多。码率基本控制在256~384kbps
给出源代码和文章链接
本地链接
测试流本地连接
但是这个工程有些问题
注意:
1.decoder 在decoder.c加一行代码
n = fread(&long_block , 1, sizeof(short), enc_fp);
n = fread(&output_fp.info.srate , 1, sizeof(short), enc_fp);
n = fread(&output_fp.info.channels , 1, sizeof(char), enc_fp);
n = fread(&output_fp.info.bits_per_sample , 1, sizeof(char), enc_fp);
n = fread(&output_fp.info.frames , 1, sizeof(long), enc_fp);
n = fread(&output_fp.info.sfformat , 1, sizeof(long), enc_fp);
BLOCKSIZE = long_block;//添加的代码
2.编码和解码的的fopen要从r/w改为rb+/wb+
这是一个平台问题,在linux系统中r/w没问题
在windows系统中会造成读取中断。
下面简单分析部分问题分析
他有4个心里声学位分配方法
#define BA_TYPE
BA_TYPE 为1或是2的时候,问题比较多,频带泄漏很严重
Type1 的光谱图
Type2 : 30秒 , 260.24kbps
Type 3: 302.16kbps
Type 4:261.31kbps
总结:其中type1,2,4是计算出来的。
3是强制分配出固定BA系数的
可见,他的BA分配模块还是有问题,有大量的交叠噪声和频带泄漏。
频带泄漏是因为该帧和频带的BA分配了0bit
交叠噪声是相邻频带的地方BA分配过多bit。