google / google/ExoPlayer

ExoPlayerImplInternal: Renderer error

Open
#8,991 5 comments 0 reactions 1 assignee Claimed by @marcbaechinger View on GitHub
bug needs triage
Dominant language
Java
Stars
21.9k
Forks
6k
PR merge metrics
No merged PRs in 30d

Description

This issue seems to be specific to Android Samsung A10 mobile phones. This occurs on an app that has ExoPlayer integrated but I have found the same crash to occur in the ExoPlayer Demo App whenever I try to play UHD content. Originally found in version 2.11.7 but reproduced in 2.14.0. Whenever the player is supposed to be instantiated it will crash with this message in the logs:

```
E/ExoPlayerImplInternal: Renderer error: index=0, type=video, format=Format(720p-30fps-3500k, null, null, video/avc, avc1.64001f, 3605193, null, [1280, 720, 29.97], [-1, -1]), rendererSupport=NO_UNSUPPORTED_DRM
com.google.android.exoplayer2.ExoPlaybackException: java.lang.IllegalStateException
at com.google.android.exoplayer2.BaseRenderer.createRendererException(BaseRenderer.java:359)
at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:723)
at com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:599)
at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:329)
at android.os.Handler.dispatchMessage(Handler.java:103)
at android.os.Looper.loop(Looper.java:237)
at android.os.HandlerThread.run(HandlerThread.java:67)
Caused by: java.lang.IllegalStateException
at android.media.MediaCodec.native_dequeueOutputBuffer(Native Method)
at android.media.MediaCodec.dequeueOutputBuffer(MediaCodec.java:2789)
at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.drainOutputBuffer(MediaCodecRenderer.java:1504)
at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:709)
at com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:599)
at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:329)
at android.os.Handler.dispatchMessage(Handler.java:103)
at android.os.Looper.loop(Looper.java:237)
at android.os.HandlerThread.run(HandlerThread.java:67)
```

I know that the resolution of UHD content is likely outside the capabilities of this device to render, but I've also seen this issue for 720p content which should be fine. Another noteworthy part is that `E/ACodec: dequeueBuffer failed: NO_MEMORY(-12)`
is printed to the logs just a bit before this. I wonder if the underlying hardware decoder used by ExoPlayer by default has run out of memory. In which case I would believe this to be a limitation on the Android platform level.

Another issue which I believe to be related but haven't been able to reproduce on the ExoPlayer Demo App is that sometimes video content will only play audio and no video will render. Only a black screen appears. There is nothing noteworthy in the logs regarding this occurrence other than: `E/ACodec: dequeueBuffer failed: NO_MEMORY(-12)`
Which is spammed throughout the logs during the beginning of the stream.

- ExoPlayer Version 2.11.7, 2.14.0
- Android Version: 10
- Android Device: Android Samsung A10

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.