You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Potential for Multiple Non-Internal Discontinuity Events #1483
Implement a playback scenario with multiple periods or ads, ensuring the playback queue has distinct playing and reading periods.
Induce a renderer error during playback, specifically when the playing period differs from the reading period.
Observe the handling of discontinuity events following the renderer error, particularly the reporting of non-internal discontinuity reasons (Player.DISCONTINUITY_REASON_AUTO_TRANSITION) in quick succession or across different parts of the playback queue.
It's also manually reproducible in unit tests by instantiating PlaybackInfoUpdate and invoking setPositionDiscontinuity multiple times with non-internal events, i.e.
// rapidly set position discontinuityplaybackInfoUpdate.setPositionDiscontinuity(Player.DISCONTINUITY_REASON_SEEK);
playbackInfoUpdate.setPositionDiscontinuity(Player.DISCONTINUITY_REASON_INTERNAL);
playbackInfoUpdate.setPositionDiscontinuity(Player.DISCONTINUITY_REASON_SEEK);
In production we've seen app crashes with the following stack-trace:
java.lang.IllegalArgumentException: null
at com.google.android.exoplayer2.util.Assertions.checkArgument
at com.google.android.exoplayer2.ExoPlayerImplInternal$PlaybackInfoUpdate.setPositionDiscontinuity(SourceFile:121)
at com.google.android.exoplayer2.ExoPlayerImplInternal.handlePositionDiscontinuity(SourceFile:2489)
at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(SourceFile:626)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loopOnce(Looper.java:210)
at android.os.Looper.loop(Looper.java:299)
at android.os.HandlerThread.run(HandlerThread.java:67)
We began seeing this exception after upgrading from Exoplayer 2.13.3 to 2.19.1. This stack-trace follows a path introduced in commit 79b688e. It occurs across a broad range of Android OS (mostly 11-14) and Android device class.
Media
Not applicable
Bug Report
You will email the zip file produced by adb bugreport to [email protected] after filing this issue.
Thanks for reporting! Reporting multiple non-internal discontinuities is not expected to happen within the same iteration generally, but the logic added in 79b688e is special in that it can run after nearly every other piece of code in this class and needs to handle the potential for other pending events.
Activity
tonihei commentedon Jun 25, 2024
Thanks for reporting! Reporting multiple non-internal discontinuities is not expected to happen within the same iteration generally, but the logic added in 79b688e is special in that it can run after nearly every other piece of code in this class and needs to handle the potential for other pending events.
Send pending updates before adding discontinuity for error
Send pending updates before adding discontinuity for error