diff options
Diffstat (limited to 'pjmedia')
-rw-r--r-- | pjmedia/src/pjmedia-audiodev/coreaudio_dev.m | 34 |
1 files changed, 27 insertions, 7 deletions
diff --git a/pjmedia/src/pjmedia-audiodev/coreaudio_dev.m b/pjmedia/src/pjmedia-audiodev/coreaudio_dev.m index bddd125c..c5c9e947 100644 --- a/pjmedia/src/pjmedia-audiodev/coreaudio_dev.m +++ b/pjmedia/src/pjmedia-audiodev/coreaudio_dev.m @@ -335,6 +335,32 @@ static pj_status_t ca_factory_init(pjmedia_aud_dev_factory *f) } #endif + /* Initialize audio session category and mode */ + { + AVAudioSession *sess = [AVAudioSession sharedInstance]; + pj_bool_t err; + + if ([sess respondsToSelector:@selector(setCategory:withOptions:error:)]) + { + err = [sess setCategory:AVAudioSessionCategoryPlayAndRecord + withOptions:AVAudioSessionCategoryOptionAllowBluetooth + error:nil] != YES; + } else { + err = [sess setCategory:AVAudioSessionCategoryPlayAndRecord + error:nil] != YES; + } + if (err) { + PJ_LOG(3, (THIS_FILE, + "Warning: failed settting audio session category")); + } + + if ([sess respondsToSelector:@selector(setMode:error:)] && + [sess setMode:AVAudioSessionModeVoiceChat error:nil] != YES) + { + PJ_LOG(3, (THIS_FILE, "Warning: failed settting audio mode")); + } + } + cf_instance = cf; #endif @@ -1236,15 +1262,9 @@ static pj_status_t create_audio_unit(AudioComponent io_comp, AudioUnit *io_unit) { OSStatus ostatus; + #if !COREAUDIO_MAC - /* We want to be able to open playback and recording streams */ strm->sess = [AVAudioSession sharedInstance]; - if ([strm->sess setCategory:AVAudioSessionCategoryPlayAndRecord - error:nil] != YES) - { - PJ_LOG(4, (THIS_FILE, - "Warning: cannot set the audio session category")); - } #endif /* Create an audio unit to interface with the device */ |