我正在使用audacity播放原始立体声16位线性PCM(在Android HAL中转储),这是Android音频flinger的输出。总缓冲区 960 字节。 从audio_flinger_buf(由audioflinger给出)将立体声转换为单个单声道通道(单个缓冲区中的左右声道)的正确方法是什么? 我的图书馆需要将左右频道分开作为输入。
我有以下代码,我认为会这样做:
channels = 2
for (i=0;i<channels;i++) {
int j;
for (j=0;j<240;j++) {
seperate_buf[240*i+j] = ((int16_t *)audio_flinger_buf)[j*DSM_CHANNELS+i];
}
}
所以seperate_buf [0..239]会留下样本,seperate_buf [240 ... 479]会有正确的样本。
seperate_buf [0 ... 239]如下所示: seperate_buf [240 .... 479]如下所示: 为什么我在这两个缓冲区中看到立体声输出?
我的代码是否正确用于从立体声缓冲区中分离出左右?我看到大胆也做了类似的事情(https://goo.gl/GZh7fg)。