我正在使用 audacity 播放原始立体声 16 位线性 PCM(转储在 Android HAL 中),它是 Android 音频抛掷器的输出。总缓冲区为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)。