Is AVAudioPCMFormatFloat32 required for playing a buffer with AVAudioEngine / AVAudioPlayerNode

I have a PCM audio buffer (AVAudioPCMFormatInt16). When I try to play it using AVPlayerNode / AVAudioEngine an exception is thrown:

"[[busArray objectAtIndexedSubscript:(NSUInteger)element] setFormat:format error:&nsErr]: returned false, error Error Domain=NSOSStatusErrorDomain Code=-10868

(related thread https://forums.developer.apple.com/forums/thread/700497?answerId=780530022#780530022)

If I convert the buffer to AVAudioPCMFormatFloat32 playback works.

My questions are:

  1. Does AVAudioEngine / AVPlayerNode require AVAudioPCMBuffer to be in the Float32 format? Is there a way I can configure it to accept another format instead for my application?
  2. If 1 is YES is this documented anywhere?
  3. If 1 is YES is this required format subject to change at any point?

Thanks!

I was looking to watch the "AVAudioEngine in Practice" session video from WWDC 2014 but I can't find it anywhere (https://forums.developer.apple.com/forums/thread/747008).

In my experience, things only consistently work when using Float32 non-interleaved samples. This seems to be the requirement for the audio engine input and output nodes as well asl playing back audio with the player node. I am also recording data to the disk in this format. Any time I tried to use Int16 interleaved data, the API results were negative. I had to perform my own conversions to and from these two formats because the third-party library I was using for remote-conference audio only accepted Int16 interleaved data in both directions.

Is AVAudioPCMFormatFloat32 required for playing a buffer with AVAudioEngine / AVAudioPlayerNode
 
 
Q