AudioUnitRender on RIO input within IAA generator corrupted

Originator:michael
Number:rdar://25306204 Date Originated:23-Mar-2016 12:38 PM
Status:Open Resolved:
Product:iOS Product Version:9.x
Classification:Serious Bug Reproducible:Always
 
Summary:
Audio received from the system input (by calling AudioUnitRender on a Remote IO unit's bus 1) from within an IAA node app is corrupted when the client-facing scopes of the RIO node are operating at a different sample rate than the session.

Specifically, the first few frames of each buffer appear to contain audio samples from the past (see attached image).

Steps to Reproduce:
1. Create a Remote IO audio unit, with input enabled and client formats on bus 0 input scope, and bus 1 output scope at 44.1kHz.
2. Publish the RIO unit, and host from an IAA host app with session sample rate at a different sample rate (e.g. 48kHz)
3. When rendering, draw input from the RIO unit using AudioUnitRender

Expected Results:
System audio received as normal

Actual Results:
First part of every buffer contains old junk data

Version:
Tested on iOS 9.2 and 9.3

Notes:
See attached sample apps: one generator, one host. After starting host, switch to generator and move switch to oscillator mode to verify that audio reaches host app without issue: problem lies on the RIO input side.

If the IAA node's client-facing scopes are running at the session sample rate, or the node uses a separate Remote IO unit for input, the problem goes away.

Configuration:
Tested on an iPhone 6S Plus without headphones plugged in, causing read-only 48kHz samplerate for session

Attachments:
'IAA Test.zip' and 'analysis.jpg' were successfully uploaded.

Comments


Please note: Reports posted here will not necessarily be seen by Apple. All problems should be submitted at bugreport.apple.com before they are posted here. Please only post information for Radars that you have filed yourself, and please do not include Apple confidential information in your posts. Thank you!