I use VoiceProcessingIO audio unit with AVAudioSessionModeVoiceChat in my VoIP app, and set the output route default to the built-in speaker.
As far as I know, we can set kAUVoiceIOProperty_BypassVoiceProcessing to turn on/off the voice processing, which includes echo cancellation plus some other stuff, of VoiceProcessingIO audio unit.
Okay, I tested my app in iPhone 5S with iOS 8.4.1, and found the recording sound sometimes would be silent if I set kAUVoiceIOProperty_BypassVoiceProcessing before calling AudioUnitInitialize function, and the audio data returned by AudioUnitRender were completely ZERO. Moreover, this happened again if I set kAUVoiceIOProperty_BypassVoiceProcessing after calling AudioUnitInitialize function and before calling AudioOutputUnitStart function. Finally, I set kAUVoiceIOProperty_BypassVoiceProcessing after calling AudioOutputUnitStart function, and it came again.
Has anyone else encountered that?