I am currently setting up my fInputBufferList by hand, based on trial
and error. That's not particularly robust given the various
fInputUnits I might be dealing with. The AudioDevice API has this,
which appears to deal with the problem:
<code>
AudioDeviceGetPropertyInfo(fInputDeviceID, 0, YES,
kAudioDevicePropertyStreamConfiguration, &theSize, NULL);
fInputBufferList = (AudioBufferList *)malloc(theSize);
AudioDeviceGetProperty(fInputDeviceID, 0, YES,
kAudioDevicePropertyStreamConfiguration, &theSize, fInputBufferList);
</code>
But my fInputDeviceID properties are different to the output format
of the fAudioUnit (specifically the data is deinterleaved inside the
unit), so the fInputBufferList that comes back is fairly useless. I
couldn't see anything in AudioUnit that might do what I want.