本篇文件介绍 音频PCM数据的单声道、双声道之间的转换
下面介绍函数参数:
一、StereoToMono函数。
双声道转单声道
参数1:资源buffer(双声道数据)
参数2:资源buffer大小(双声道数据大小)
参数3:转换后buffer(单声道数据)
static short g_sSrcAudioBuf[640];static short g_sDstAudioBuf[640];//pdata:char * pdata(原始双声道音频数据)//dlen:pdata数据长度//单字节1280长度的数据pdata 转换为640双字节数据g_sSrcAudioBufmemcpy(g_sSrcAudioBuf,pdata,dlen);StereoToMono(g_sSrcAudioBuf,640,g_sDstAudioBuf)//本地保存测试fwrite(g_sSrcAudioBuf,2,320,fp);void StereoToMono(const int16_t* src_audio,int samples_per_channel,int16_t* dst_audio) {for (int i = 0; i < samples_per_channel; i++) {dst_audio[i] = (static_cast<int32_t>(src_audio[2 * i]) + src_audio[2 * i + 1]) >> 1;}}
二、MonoToStereo函数。
单声道转双声道
参数1:资源buffer(单声道数据)
参数2:资源buffer大小(单声道数据大小)
参数3:转换后buffer(双声道数据)
代码:
static short g_sSrcAudioBuf[640];static short g_sDstAudioBuf[640];//g_sDstAudioBuf:单声道数据//320:单声道数据大小//g_sSrcAudioBuf:转换后buffer(双声道数据)MonoToStereo(g_sDstAudioBuf,320,g_sSrcAudioBuf);//本地保存测试fwrite(g_sSrcAudioBuf,2,640,fp);void MonoToStereo(const int16_t* src_audio,int samples_per_channel,int16_t* dst_audio) {for (int i = 0; i < samples_per_channel; i++) {dst_audio[2 * i] = src_audio[i];dst_audio[2 * i + 1] = src_audio[i];}}