以下程序用在16Khz的单声道或者8Khz的双声道的pcm数据的音量计算.
来源自搜索的各种资料加实际测试.
参考源暂未统计出.
注意要求的对数函数是log10,不是log.
int pcm_db_count(const unsigned char* ptr, size_t size)
{
int ndb = 0;
short int value;
int i;
long v = 0;
for(i=0; i2)
{
memcpy((char*)&value, ptr+i, 1);
memcpy((char*)&value+1, ptr+i+1, 1);
v += abs(value);
}
v = v/(size/2);
if(v != 0) {
ndb = (int)(20.0*log10((double)v / 65535.0 ));
}
else {
ndb = -96;
}
return ndb;
}