ExoPlayer: MediaDrmStateException occurs during download and streaming playback.

This exception occurs on Pixel devices, but only on certain devices, not all devices.

Searched documentation and issues

・ExoPlayer Javadoc. ・ExoPlayer Issues

Question

An exception occurs during streaming and download playback. This exception occurs on Pixel devices, but only on certain devices, not all devices. The source code is the same as # 8175. When I checked the error log, I asked a question because it was different from the error log that occurred in the past.

  • Is this exception the same cause as past problems (#8175, #8655)?

Error log during streaming playback

ExoPlayerImplInternal: Renderer error: index=0, type=video, format=Format(3, null, null, video/avc, avc1.4d4028, 1000000, null, [800, 450, 29.97003], [-1, -1]), rendererSupport=NO_UNSUPPORTED_DRM
ExoPlayerImplInternal: com.google.android.exoplayer2.ExoPlaybackException: android.media.MediaCodec$CodecException: Error 0xffffffe0
ExoPlayerImplInternal:  at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.a(MediaCodecRenderer.java:48)
ExoPlayerImplInternal:  at m.c.b.b.z.a(BaseRenderer.java:14)
ExoPlayerImplInternal:  at m.c.b.b.j0.handleMessage(ExoPlayerImplInternal.java:24)
ExoPlayerImplInternal:  at m.c.b.b.j0.b(ExoPlayerImplInternal.java:161)
ExoPlayerImplInternal:  at android.os.Handler.dispatchMessage(Handler.java:102)
ExoPlayerImplInternal:  at android.os.Looper.loop(Looper.java:223)
ExoPlayerImplInternal:  at android.os.HandlerThread.run(HandlerThread.java:67)
ExoPlayerImplInternal:  at android.media.MediaCodec.native_queueSecureInputBuffer(Native Method)
ExoPlayerImplInternal: Caused by: android.media.MediaCodec$CodecException: Error 0xffffffe0
ExoPlayerImplInternal:  at android.media.MediaCodec.queueSecureInputBuffer(MediaCodec.java:2821)
ExoPlayerImplInternal:  at m.c.b.b.o1.r.a(SynchronousMediaCodecAdapter.java:6)
ExoPlayerImplInternal:  at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.q(MediaCodecRenderer.java:81)
ExoPlayerImplInternal:  at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.a(MediaCodecRenderer.java:37)

Error log during download playback

ExoPlayerImplInternal: Source error.
ExoPlayerImplInternal: com.google.android.exoplayer2.drm.DrmSession$DrmSessionException: java.lang.IllegalArgumentException: Failed to restore keys
ExoPlayerImplInternal:         at com.google.android.exoplayer2.drm.DefaultDrmSession.a(DefaultDrmSession.java:44)
ExoPlayerImplInternal:         at com.google.android.exoplayer2.drm.DefaultDrmSession.h(DefaultDrmSession.java:3)
ExoPlayerImplInternal:         at com.google.android.exoplayer2.drm.DefaultDrmSession.a(DefaultDrmSession.java:30)
ExoPlayerImplInternal:         at com.google.android.exoplayer2.drm.DefaultDrmSession.b(DefaultDrmSession.java:9)
ExoPlayerImplInternal:         at com.google.android.exoplayer2.drm.DefaultDrmSessionManager.a(DefaultDrmSessionManager.java:58)
ExoPlayerImplInternal:         at m.c.b.b.s1.k0.a(SampleQueue.java:152)
ExoPlayerImplInternal:         at m.c.b.b.s1.k0.a(SampleQueue.java:64)
ExoPlayerImplInternal:         at m.c.b.b.s1.q0.g.a(ChunkSampleStream.java:68)
ExoPlayerImplInternal:         at m.c.b.b.s1.k0.a(SampleQueue.java:8)
ExoPlayerImplInternal:         at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.a(MediaCodecRenderer.java:30)
ExoPlayerImplInternal:         at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.b(MediaCodecRenderer.java:3)
ExoPlayerImplInternal:         at m.c.b.b.z.a(BaseRenderer.java:15)
ExoPlayerImplInternal:         at m.c.b.b.j0.handleMessage(ExoPlayerImplInternal.java:24)
ExoPlayerImplInternal:         at m.c.b.b.j0.b(ExoPlayerImplInternal.java:161)
ExoPlayerImplInternal:         at android.os.Handler.dispatchMessage(Handler.java:102)
ExoPlayerImplInternal:         at android.os.HandlerThread.run(HandlerThread.java:67)
ExoPlayerImplInternal:         at android.os.Looper.loop(Looper.java:223)
ExoPlayerImplInternal: Caused by: java.lang.IllegalArgumentException: Failed to restore keys
ExoPlayerImplInternal:         at android.media.MediaDrm.restoreKeys(Native Method)
ExoPlayerImplInternal:         at m.c.b.b.m1.t.a(FrameworkMediaDrm.java:83)
ExoPlayerImplInternal:         at com.google.android.exoplayer2.drm.DefaultDrmSession.h(DefaultDrmSession.java:1)

Version of ExoPlayer being used: 2.12.1

A full bug report captured from the device

I sent it to dev.exoplayer@gmail.com.

About this issue

Most upvoted comments

Thanks @nbennink, we were able to reproduce with the apk you shared. We are investigating with Qualcomm.