在网上有很多关于g726算法的编解码,我做的是pcm和g726之间互相转码。
自己对音频的编解码了解的不多,做一下记录吧。
我在网上下载的很多pcm文件,经过测试,采样都是8000HZ,这个和自己所想的倒是不同的,这歌参数要是设置不对,是不能播放pcm出来的。
自己进行编译的时候,pcm进行过编解码后,生成的pcm文件质量是很好的,可是中间生成的g726文件的质量不是很好,有杂音,不过能听清楚的。
因为这是一种压缩算法,进行编解码的时候,文件的读写的缓存大小,这点需要注意,自己在这里吃过亏。
编码的时候,缓存大小为之前的一半;
iRead = fread(ucInBuff, 1, 160, pInFile);
iRet = g726_encode(g_state726_24, ucOutBuff, (short*)ucInBuff, iRead/2);
fwrite(ucOutBuff, 1, iRet, pOutFile);
解码的时候,缓存的大小不变,但是写入到文件的时候,为sizeof(short);
iRead = fread(ucInBuff, 1, 30, pInFile);
iRet = g726_decode(g_state726_24, (short*)ucOutBuff, ucInBuff, iRead);
fwrite(ucOutBuff, sizeof(short), iRet, pOutFile);
具体的原因自己不是很清楚,还得自己研究呀!