Chromecast with Google TV update to Android 12, play 4k 60fps get format_supported=NO_EXCEEDS_CAPABILITIES
See original GitHub issueExoPlayer Version
2.18.1
Devices that reproduce the issue
Device: Chromecast with Google TV (4k ver) Android version: 12
probably relevant system info:
Devices that do not reproduce the issue
NVIDIA SHIELD Chromecast with Google TV on Android 10
Reproducible in the demo app?
Yes
Reproduction steps
- build demo app to the Android 12 CCwGTV(Chromecast with Google TV)
- just play video in demo app
- 60fps DASH
- 4K (MP4, H264, Clear)
- 60fps DASH
Expected result
The media play successfully.
Actual result
Got this kind result
11:12:03.330 E Playback error
com.google.android.exoplayer2.ExoPlaybackException: MediaCodecVideoRenderer error, index=0, format=Format(1, null, null, video/avc, avc1.640033, 19375046, null, [3840, 2160, 60.0], [-1, -1]), format_supported=NO_EXCEEDS_CAPABILITIES
at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:566)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loopOnce(Looper.java:201)
at android.os.Looper.loop(Looper.java:288)
at android.os.HandlerThread.run(HandlerThread.java:67)
Caused by: com.google.android.exoplayer2.video.MediaCodecVideoDecoderException: Decoder failed: OMX.amlogic.avc.decoder.awesome2
at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.createDecoderException(MediaCodecVideoRenderer.java:1590)
at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:813)
at com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:989)
at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:490)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loopOnce(Looper.java:201)
at android.os.Looper.loop(Looper.java:288)
at android.os.HandlerThread.run(HandlerThread.java:67)
Caused by: android.media.MediaCodec$CodecException: Error 0x80001000
11:12:03.335 E Disable failed.
java.lang.IllegalStateException
at android.media.MediaCodec.native_flush(Native Method)
at android.media.MediaCodec.flush(MediaCodec.java:2350)
at com.google.android.exoplayer2.mediacodec.AsynchronousMediaCodecAdapter.flush(AsynchronousMediaCodecAdapter.java:228)
at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.flushCodec(MediaCodecRenderer.java:877)
at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.flushOrReleaseCodec(MediaCodecRenderer.java:870)
at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.onDisabled(MediaCodecRenderer.java:710)
at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.onDisabled(MediaCodecVideoRenderer.java:561)
at com.google.android.exoplayer2.BaseRenderer.disable(BaseRenderer.java:186)
at com.google.android.exoplayer2.ExoPlayerImplInternal.disableRenderer(ExoPlayerImplInternal.java:1651)
at com.google.android.exoplayer2.ExoPlayerImplInternal.resetInternal(ExoPlayerImplInternal.java:1392)
at com.google.android.exoplayer2.ExoPlayerImplInternal.stopInternal(ExoPlayerImplInternal.java:1355)
at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:582)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loopOnce(Looper.java:201)
at android.os.Looper.loop(Looper.java:288)
at android.os.HandlerThread.run(HandlerThread.java:67)
11:12:03.346 E playerFailed [eventTime=0.75, mediaPos=0.00, window=0, period=0, errorCode=ERROR_CODE_DECODING_FAILED
com.google.android.exoplayer2.ExoPlaybackException: MediaCodecVideoRenderer error, index=0, format=Format(1, null, null, video/avc, avc1.640033, 19375046, null, [3840, 2160, 60.0], [-1, -1]), format_supported=NO_EXCEEDS_CAPABILITIES
at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:566)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loopOnce(Looper.java:201)
at android.os.Looper.loop(Looper.java:288)
at android.os.HandlerThread.run(HandlerThread.java:67)
Caused by: com.google.android.exoplayer2.video.MediaCodecVideoDecoderException: Decoder failed: OMX.amlogic.avc.decoder.awesome2
at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.createDecoderException(MediaCodecVideoRenderer.java:1590)
at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:813)
at com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:989)
at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:490)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loopOnce(Looper.java:201)
at android.os.Looper.loop(Looper.java:288)
at android.os.HandlerThread.run(HandlerThread.java:67)
Caused by: android.media.MediaCodec$CodecException: Error 0x80001000
]
Media
demo app media
{
"name": "4K (MP4, H264, Clear)",
"uri": "https://storage.googleapis.com/exoplayer-test-media-1/60fps/bbb-clear-2160/manifest.mpd"
}
Bug Report
- You will email the zip file produced by
adb bugreport
to dev.exoplayer@gmail.com after filing this issue.
Other Notes :
I am taking androidx.media3:media3-exoplayer:1.0.0-beta02
, it seem probiliy same as ExoPlayer 2.18.1 got this info from here.
I also tried pure ExoPlayer demo app and leave the error code here. Playing on Android 10 is fine. After update to Android 12, 4k capabilities lose, it quite wired?? 🤔
I guess it might the chromecast’s update issue.
I also facing another bug is on CCwGTV Android 10, when i calling exoPlayer.release()
, it seems that codec not really do the native codec release by OS, witch may cause oom crash.
If is, please let me know that, I can contact them in need.
Issue Analytics
- State:
- Created a year ago
- Comments:6 (4 by maintainers)
There is no update yet, and I will update this issue once we get one from the Chromecast team.
For clarity, even before the upgrade to Android 12, the device did not report it could play 4K@60fps and playback was stuttering. Regardless of a potential fix, I think that your app should avoid playing such streams anyway, it you want to ensure smooth playback (my hypothesis is that even if there is a fix on the device, the fix would not make the device faster but at best bring the old behavior back)
[internal ref 254670010]