杰理之通用能量值计算(取平均值)【篇】
#define ABS(x) (x 0 ? x : (-x))int audio_output_data_db_calc_simple(short *data, unsigned short len,unsigned char channels){//长度转换如果长度是u8 需要/2unsigned short points len / 2;unsigned short user_sample_rate 16000;signed int calc_point user_sample_rate/50;static signed int data_cnt 0;static signed int sum[4] {0,0,0,0};static int average_value;int index 0; for(index 0; index points; indexchannels) { //计算数值总和 switch (channels) { case 4: sum[3] ABS(data[index3]); case 3: sum[2] ABS(data[index2]); case 2: sum[1] ABS(data[index1]); case 1: sum[0] ABS(data[index]); break; default: sum[0] ABS(data[index]); break; } data_cnt; if(data_cntcalc_point) { //计算各通道取平均 average_value (sum[0]sum[1]sum[2]sum[3])/(channels*calc_point); //printf(average_value:%d\n,average_value); sum[0] 0; sum[1] 0; sum[2] 0; sum[3] 0; data_cnt 0; } } return average_value;}