Open
Description
Version
Media3 pre-release (alpha, beta or RC not in this list)
More version details
1.8.0-alpha1
Devices that reproduce the issue
Samsung 24 Ultra
Devices that do not reproduce the issue
Reproducible in the demo app?
Not tested
Reproduction steps
When using CompositionPlayer with a composition that interleaves an audio sequence and a video/image sequence, the player sometimes crashes with an IllegalStateException in InputVideoSink.initialize. This appears to be caused by a race condition in MediaCodecVideoRenderer.maybeInitializeProcessingPipeline, where the code checks videoSink.isInitialized and immediately calls videoSink.initialize(format), but by the time initialize runs, the sink is already initialized, triggering an assertion failure.
Reproduction Steps
- Configure a CompositionPlayer with two sequences in the same composition:
- Sequence A: Audio samples
- Sequence B: Video (and image) samples
- Start playback of the composition via AndroidView with the CompositionPlayer.
- Observe occasional crashes immediately after the video view is attached or when playback jumps between sequences. (this happens only in some cases not every time)
Expected result
no crash
Actual result
androidx.media3.common.PlaybackException: error from player 0
at androidx.media3.transformer.CompositionPlayer.maybeUpdatePlaybackError(CompositionPlayer.java:1098)
at androidx.media3.transformer.CompositionPlayer.access$1700(CompositionPlayer.java:109)
at androidx.media3.transformer.CompositionPlayer$PlayerListener.onPlayerError(CompositionPlayer.java:1281)
at androidx.media3.exoplayer.ExoPlayerImpl.lambda$updatePlaybackInfo$18(ExoPlayerImpl.java:2172)
at androidx.media3.exoplayer.ExoPlayerImpl$$ExternalSyntheticLambda31.invoke(D8$$SyntheticClass:0)
at androidx.media3.common.util.ListenerSet$ListenerHolder.invoke(ListenerSet.java:342)
at androidx.media3.common.util.ListenerSet.lambda$queueEvent$0(ListenerSet.java:226)
at androidx.media3.common.util.ListenerSet$$ExternalSyntheticLambda1.run(D8$$SyntheticClass:0)
at androidx.media3.common.util.ListenerSet.flushEvents(ListenerSet.java:248)
at androidx.media3.exoplayer.ExoPlayerImpl.updatePlaybackInfo(ExoPlayerImpl.java:2235)
at androidx.media3.exoplayer.ExoPlayerImpl.handlePlaybackInfo(ExoPlayerImpl.java:2069)
at androidx.media3.exoplayer.ExoPlayerImpl.lambda$new$1$androidx-media3-exoplayer-ExoPlayerImpl(ExoPlayerImpl.java:353)
at androidx.media3.exoplayer.ExoPlayerImpl$$ExternalSyntheticLambda12.run(D8$$SyntheticClass:0)
at android.os.Handler.handleCallback(Handler.java:958)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:230)
at android.os.Looper.loop(Looper.java:319)
at android.app.ActivityThread.main(ActivityThread.java:8919)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:578)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1103)
Caused by: androidx.media3.exoplayer.ExoPlaybackException: Unexpected runtime error
at androidx.media3.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:910)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loopOnce(Looper.java:230)
at android.os.Looper.loop(Looper.java:319)
at android.os.HandlerThread.run(HandlerThread.java:67)
Caused by: java.lang.IllegalStateException
at androidx.media3.common.util.Assertions.checkState(Assertions.java:85)
at androidx.media3.exoplayer.video.PlaybackVideoGraphWrapper$InputVideoSink.initialize(PlaybackVideoGraphWrapper.java:717)
at androidx.media3.transformer.BufferingVideoSink.initialize(BufferingVideoSink.java:109)
at androidx.media3.exoplayer.video.MediaCodecVideoRenderer.maybeInitializeProcessingPipeline(MediaCodecVideoRenderer.java:1453)
at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.maybeInitCodecWithFallback(MediaCodecRenderer.java:1138)
at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.maybeInitCodecOrBypass(MediaCodecRenderer.java:590)
at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.onInputFormatChanged(MediaCodecRenderer.java:1593)
at androidx.media3.exoplayer.video.MediaCodecVideoRenderer.onInputFormatChanged(MediaCodecVideoRenderer.java:1506)
at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.readSourceOmittingSampleData(MediaCodecRenderer.java:1047)
at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:865)
at androidx.media3.exoplayer.video.MediaCodecVideoRenderer.render(MediaCodecVideoRenderer.java:1321)
at androidx.media3.exoplayer.RendererHolder.render(RendererHolder.java:391)
at androidx.media3.exoplayer.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:1360)
at androidx.media3.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:696)
Media
Bug Report
- You will email the zip file produced by
adb bugreport
to [email protected] after filing this issue.