newlc上关于PCM脉冲编码的音频信号的混音实现:
If both A and B are negative Y = A + B - (A * B / -(pow(2,n-1) -1)))
Else Y = A + B - (A * B / (pow(2,n-1) -1))
对于16bit的PCM
if( data1 < 0 && data2 < 0)
date_mix = data1+data2 - (data1 * data2 / -(pow(2,16-1)-1));
else
date_mix = data1+data2 - (data1 * data2 / (pow(2,16-1)-1));
举个例子:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
int main(int argc,char *argv[]) {