Enumerating and recording from all inputs on iOS


#1

Hi,

I’m using lowlevel API directly for enumerating all available inputs, and for recording from a chosen one
(using getRecordNumDrivers/getRecordDriverInfo and recordStart)
[ EDIT: both num drivers and num connected drivers is reported as 1 ]

On iOS the detected input devices seem to differ from what e.g. AVFoundation’s AVAudioSessionCategory playAndRecord can see, however:

(the screenshot is from a testing app which just sets any selected parameters for session activation, and records sample from selected input; sources are here: AVAudioSessionPodTest)

On the same device, with the same headset attached, FMOD sees just one Core Audio device with name ‘Core Audio input’ (supposedly the default microphone):

[I’m using FMOD Unity Integrations]

Is there anything what could currently help to convince FMOD to be fully compatible with AVAudioSession (i.e. see all current category inputs and optionally set preferredInput for recording) ?

Note: I can augment FMOD capabilities for BT device to a degree by using AVAudioSessionCategoryOptionAllowBluetooth/AVAudioSessionCategoryOptionAllowBluetoothA2DP options for setCategory and activating the session prior to FMOD init - it will record from connected BT device then - although the detected input driver would still be only single one and the same as above
This would be but worthless in this case anyway since user has wire connected headset as per first screenshot.

Thank you!


#2

On iOS, we are hard coded to just reporting one audio input device and we always choose the first available audio input device when starting recording.

Unfortunately with the current implementation there is no way to choose another input.

I can raise a task to change the way we handle this, and give the user more control over which device to use. Although I cannot speculate on a timeframe at this point.


#3

… suspected something like that
hope one day it will be done, at least it’s clear it’s worth to look for alternative paths meanwhile
Thanks for reply !