This PR is intended to prevent memory crashes when the free memory runs out
Jira: VEX-6030
https://jira.tenkasu.net/browse/VEX-6030
Velocity PR: crunchyroll/velocity#2043
By forcefully calling the garbage collector the memory crashes, specially on lower resolutions (<720p) are gone on devices with 2GB of ram or less and Android 6, also testing 3GB Android 7 with this patch, so far is working as intended
Reviews
Major reviewer (domain expert): @nickfujita
Minor reviewer: @jctorresM
This PR changes the behavior on old devices that have poor memory management.
Jira: VEX-6030
https://jira.tenkasu.net/browse/VEX-6030
The solution implied customizing the method shouldContinueLoading from RNVLoadControl to use only the available heap, performing tests on an old Nexus 5 it was determined the ideal bytes allocation to half the reported heap, that provided some buffering during ads but smooth playback during the video with no crashes (23:39 of 23:39 at the moment of writing this, video kept playing as expected after 3 ad breaks)
The fix is only targeting Marshmallow as the reduction of buffer is substantial and other versions that work properly should not get affected.
Depending on the test result of VEX-5758, this same fix can be applied to Nougat
Reviews
Major reviewer (domain expert): @armadilio3
Minor reviewer: @nickfujita
Adds offline decryption key and uses it to decrypt content during offline playback
Jira: VEX-5938
https://jira.tenkasu.net/browse/VEX-5938
- Update to accept scheme for key required to play offline playback
- Uses provided scheme to intercept call from player and return the key
- Fixes player item observer removal pattern
### Reviews
- Major reviewer (domain expert): @armadilio3
- Allow player to be init before source is provided, and later update once a source is provided.
- Adds handling for providing a empty source in order to stop playback and clear out any existing content
Fix AudioFocus bug that could cause the player to stop responding to play/pause in some instances.
Fixes issue #1945
This was caused by the player requesting audio focus on each play (un-pause) and that resulted in a small window of Audio focus loss and then gain. The focus loss results in the player being paused while the player was supposed to play at the time. The solution is to keep track of Audio focus and not request new focus if we already have it.