本文打算用iOS上的Audio Unit来播放PCM文件。
文章当中用的Remote I/O Unit类型,下面是官方的一张示意图:
从图中可以看到,两个element都包含输入输出两个端。element0的输出端(output scope)对应的是扬声器,输入端用于输入数据,可以从element1的输出端获取,也可以从其他Unit或文件获取。
element1的输入端表示麦克风,element的输出端表示从麦克风采集到的声音数据。
下面是代码流程:
本文输入的pcm数据,声道数2,格式是浮点数存储,小端,采样率48000,交错存储(也就是LRLR....)。
首先打开pcm文件,用于提供数据:
//打开文件
const char *in_filename = [[[NSBundle mainBundle] pathForResource:@"sintel_f32le_2_48000.pcm" ofType:nil] UTF8String];
_inFile = fopen(in_filename, "rb");
if (!_inFile) {