NewPipe/app/src/main/java/org/schabi/newpipe/player/playback
evermind f78d2a5ed8 Prevent error msg: 'Unrecoverable player error occurred' while playing video during rotation (#6502)
Playing a video in VideoDetailFragment and rotating the screen to landscape (back and forth more often)
can trigger this error message. Especially if rotation for whatever reason takes long or
playing a high resolution (1080p) video.

The underlying logcat error messages:
05-12 16:38:38.251 24920 26037 E Surface : getSlotFromBufferLocked: unknown buffer: 0x923fc810
05-12 16:38:38.251 24920 26037 W ACodec  : [OMX.qcom.video.decoder.avc] can not return buffer 35 to native window

The problem is that that Exoplayer is trying to write to our -- during rotation -- no longer existant
(VideoDetailFragment) SurfaceView.

Solution:
Implementing SurfaceHolder.Callback and using DummySurface we can now handle the lifecycle of the Surface.

How?: In case we are no longer able to write to the Surface eg. through rotation/putting in
background we can set a DummySurface. Although it only works on API >= 23.
Result: we get a little video interruption (audio is still fine) but we won't get the
'Unrecoverable player error occurred' error message.

This implementation is based on and more background information:
 'ExoPlayer stuck in buffering after re-adding the surface view a few time 2703'

 -> exoplayer fix suggestion link
  https://github.com/google/ExoPlayer/issues/2703#issuecomment-300599981
2021-07-06 12:49:56 +02:00
..
CustomTrackSelector.java TEST: Downgrade ExoPlayer to 2.12 2021-05-14 14:47:53 +02:00
MediaSourceManager.java Update most dependencies 2020-11-22 14:03:10 +01:00
PlaybackListener.java Update notification when play queue is edited 2020-09-10 13:36:34 +02:00
PlayerMediaSession.java Merge player classes into a single one 2021-01-14 10:25:44 +01:00
SurfaceHolderCallback.java Prevent error msg: 'Unrecoverable player error occurred' while playing video during rotation (#6502) 2021-07-06 12:49:56 +02:00