Repository navigation
IllegalStateException while accessing DefaultDrmSessionManager builder. #350
Description
Media3 Version
ExoPlayer 2.18.6
Devices that reproduce the issue
Xiaomi Redmi Note 7 running on 11
Devices that do not reproduce the issue
No response
Reproducible in the demo app?
Not tested
Reproduction steps
Play any Widevine DRM protected content. Haven't tested other DRM schemes yet.
Expected result
The content should play without any exception thrown since we have not changed anything in our implementation since the last update.
Actual result
Playback does not crash but instead continues with the following stack trace. This actually seems to be intended but we have yet to come up with a reason behind this behavior.
DefaultDrmSessionManager accessed before setPlayer(), possibly on the wrong thread. java.lang.IllegalStateException at com.google.android.exoplayer2.drm.DefaultDrmSessionManager.verifyPlaybackThread(DefaultDrmSessionManager.java:824) at com.google.android.exoplayer2.drm.DefaultDrmSessionManager.prepare(DefaultDrmSessionManager.java:471) at com.google.android.exoplayer2.source.dash.DashMediaSource.prepareSourceInternal(DashMediaSource.java:450) at com.google.android.exoplayer2.source.BaseMediaSource.prepareSource(BaseMediaSource.java:221) at com.google.android.exoplayer2.source.CompositeMediaSource.prepareChildSource(CompositeMediaSource.java:120) at com.google.android.exoplayer2.source.MergingMediaSource.prepareSourceInternal(MergingMediaSource.java:171) at com.google.android.exoplayer2.source.BaseMediaSource.prepareSource(BaseMediaSource.java:221) at com.google.android.exoplayer2.source.CompositeMediaSource.prepareChildSource(CompositeMediaSource.java:120) at com.google.android.exoplayer2.source.WrappingMediaSource.prepareChildSource(WrappingMediaSource.java:212) at com.google.android.exoplayer2.source.MaskingMediaSource.createPeriod(MaskingMediaSource.java:108) at com.google.android.exoplayer2.MediaSourceList.createPeriod(MediaSourceList.java:315) at com.google.android.exoplayer2.MediaPeriodHolder.createMediaPeriod(MediaPeriodHolder.java:433) at com.google.android.exoplayer2.MediaPeriodHolder.<init>(MediaPeriodHolder.java:108) at com.google.android.exoplayer2.MediaPeriodQueue.enqueueNextMediaPeriodHolder(MediaPeriodQueue.java:190) at com.google.android.exoplayer2.ExoPlayerImplInternal.maybeUpdateLoadingPeriod(ExoPlayerImplInternal.java:1999) at com.google.android.exoplayer2.ExoPlayerImplInternal.updatePeriods(ExoPlayerImplInternal.java:1986) at com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:974) at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:502) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:223) at android.os.HandlerThread.run(HandlerThread.java:67)
Media
Sent via email.
Bug Report
- You will email the zip file produced by
adb bugreportto dev.exoplayer@gmail.com after filing this issue.
Activity
[-]IllegalStateException while acquiring FrameworkMediaDrm instance.[/-][+]IllegalStateException while accessing DefaultDrmSessionManager builder.[/+]icbaker commentedon Apr 24, 2023
Thanks for reporting, we spotted this internally last week and I have a fix in internal review - when it gets published it will be linked here. It will be included in the next release.
This instance of this warning is a false alarm, it can be safely ignored until the next release is available.
Ensure `DrmSessionManager.setPlayer()` is called before `prepare()`
Ensure `DrmSessionManager.setPlayer()` is called before `prepare()`
Ensure `DrmSessionManager.setPlayer()` is called before `prepare()`
Ensure `DrmSessionManager.setPlayer()` is called before `prepare()`