smartdevicelink / sdl_ios

Get your app connected to the 🚙, make your users feel like a 🌟
www.smartdevicelink.com
BSD 3-Clause "New" or "Revised" License
170 stars 105 forks source link

iOS 12+ Video Streaming Performance Issue #1151

Closed GauravPandey321 closed 5 years ago

GauravPandey321 commented 5 years ago

[Summary] We tested navigation app e.g. Waze for performance, responsiveness and video quality over different iPhone models with different version of iOS 12.

[Test Steps performed]

  1. Connect the iPhone with the head unit via Bluetooth and/or USB.
  2. Ensure Waze connects with SDL Core
  3. Launch the navigation app i.e. Waze

[Expected Behavior] Navigation app performance should be at an acceptable level across all supported devices (performance may slightly differ based on handset capabilities).

[Observed Behavior] We observed Waze behaving more sluggishly and performing poorly when we tested on iPhone 8 running iOS 12.0. The app was slow, less responsive and video lagging on touch input. The performance was much improved with better user experience when tested on iOS 12.1 and 11.0.3 as well as older (iPhone 6S) and newer (iPhone XS) devices. See attached video.

 i0S ver Handset iPhone Waze User Experience Remark
12.1 6S Good Video runs smoothly  
12.0 8+ Poor Video sluggish & lagging  
12.0 XS Poor Video sluggish & lagging  
12.0 6S+ Passable Low framerate but useable  
11.0.3 8+ Good Video sluggish & lagging  

[Analysis] From our internal testing applications, it seems that the “drawViewHeirarchyInRect” function is causing the degradation of performance on some devices on iOS 12.0. The issue seems to be improved in iOS 12.1. Utilizing the “renderInContext” function as an alternative to “drawViewHeirarchyInRect” seems to improve the performance issue but may have some limitations with OpenGL and other methodologies used by navigation partners for video streaming. Additionally, the following proposal in review may also resolve the issue: (https://github.com/smartdevicelink/sdl_evolution/issues/661)

[Notes] This issue may be related to the follow issue: (https://github.com/smartdevicelink/sdl_evolution/issues/2766)

[Video] (Navigation app on iPhone))

joeljfischer commented 5 years ago

Note, I updated your table to an actual table for readability :) https://help.github.com/articles/organizing-information-with-tables/

I think this is most likely, as you say, an Apple iOS issue. The fact that device speed doesn't change the performance, and in fact, faster devices are poorer than slower devices, means that this was a bug in iOS 12.0.

Based on that, I don't think there's anything we can do to fix this issue from the library or core side. If user's on iOS 12.0 are reporting poor performance, the best thing to do for now is to recommend that they update to iOS 12.1+. Regarding the ReplayKit proposal, there are significant issues that would need to be worked through before it could be added, and I don't think it would be able to be added until near iOS 13 anyway.

jordynmackool commented 5 years ago

In the Steering Committee meeting on 2019-03-05 the PM referenced this comment noting that the problem is most likely an Apple iOS issue and recommended that if user's on iOS 12.0 are reporting poor performance, the best thing to do for now is to recommend that they update to iOS 12.1+.