pcmボリューム計算
1778 ワード
pcmボリューム計算
以下のプログラムは、16 Khzのモノラルまたは8 Khzのデュアルチャネルのpcmデータの音量で算出する.検索した各種資料に実際のテストを加える.参照元は集計されていない.
注意要求する対数関数はlog 10であり、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;
}