Ticket #1697 (closed task: fixed)

Opened 4 years ago

Last modified 2 years ago

Add support for iOS SDK 7 & iOS 7

Reported by: ming Owned by: bennylp
Priority: normal Milestone: release-2.2
Component: common Version: trunk
Keywords: Cc:
Backport to 1.x milestone: Backported: no

Description (last modified by nanang) (diff)

This ticket will add support with regard to changes in iOS SDK 7 and iOS 7, such as:

  • Deprecated C-interface Audio Session API.
    PJSIP now uses AVAudioSession to set audio session category and activate/deactivate audio session. Application will need to do its own audio session management to handle input/output route and notifications (interruption, media server reset, etc). Please refer to Apple's official doc on Audio Session Programming Guide.
  • Audio volume control with VoiceProcessingIO Audio Unit
    It is reported that when using VoiceProcessingIO audio unit on iOS 7, there are a few issues:
    • Problem with Bluetooth routing after interruption. With a Bluetooth source, Bluetooth can be set while on a call and gets audio correctly. If the call is ended, the next incoming call rings correctly in Bluetooth, but when the call is answered (with no route changes), it gets rerouted to the earpiece and the Bluetooth audio is dropped. One of the solution as mentioned here is to add an audio session property listener to the audio route change property and override allow bluetooth in the listener callback.
    • Unable to mute the volume using the side volume button (the minimum volume is one bar). This didn't happen before iOS 7.
    • Unable to synchronize with the control center volume slide bar. Since control center is a new feature in iOS 7 we cannot compare it with pre-iOS 7.
    • After the teardown of the audio unit, AVAudioPlayer will play at a reduced volume if the category is set to PlayAndRecord with category option DefaultToSpeaker. (Update: According to Apple's reply, this is due to the gain controller feature employed in VPIO, which still applies even after its uninitialization. There is no API or workaround to change the gain controller but it is reported that the issue is being investigated as to whether the gain controller affect the playback volume too drastically.)
    The issue does not happen with RemoteIO (which can be used by disabling the EC). Testing with aurioTouch2 sample app provided by Apple showed the same result, so this is likely Apple's issue.
    Currently there is no resolution other than disabling EC. A reported workaround is by setting audio session category to non-playback mode (such as by setting it to record only, [[AVAudioSession sharedInstance] setCategory:AVAudioSessionRecord error:nil];) before the audio unit is destroyed (i.e. upon call disconnection).

Change History

comment:1 Changed 4 years ago by ming

In 4590:

Re #1697: Add internal compile time option to disable the use of Audio Session API (deprecated)

comment:2 Changed 4 years ago by ming

In 4610:

Re #1697: Add device info in pj_get_sys_info() and set default clock rate for iPhone 5 running iOS7 to 44100Hz

comment:3 Changed 4 years ago by ming

  • Description modified (diff)

comment:4 Changed 4 years ago by ming

In 4617:

Re #1697: Use AVAudioSession to set audio session category and activate/deactivate audio session

comment:5 Changed 4 years ago by ming

  • Description modified (diff)

comment:6 Changed 4 years ago by ming

  • Description modified (diff)
  • Summary changed from Add support for iOS SDK 7 to Add support for iOS SDK 7 & iOS 7

comment:7 Changed 4 years ago by bennylp

In 4635:

Re #1697: fixed build error with the new coreaudio_dev.m introduced by r4617, because build process looks for an ObjC compiler

comment:8 Changed 4 years ago by ming

In 4636:

Re #1697: Removed extra spaces in aconfigure.ac

comment:9 Changed 4 years ago by bennylp

  • Status changed from new to closed
  • Resolution set to fixed

comment:10 Changed 4 years ago by ming

  • Description modified (diff)

comment:11 Changed 4 years ago by ming

  • Description modified (diff)

comment:12 Changed 4 years ago by ming

  • Description modified (diff)

comment:13 Changed 4 years ago by ming

  • Description modified (diff)

comment:14 Changed 3 years ago by ming

  • Description modified (diff)

comment:15 Changed 3 years ago by bennylp

  • Description modified (diff)

comment:16 Changed 2 years ago by nanang

  • Description modified (diff)
Note: See TracTickets for help on using tickets.