amzn / exoplayer-amazon-port

Official port of ExoPlayer for Amazon devices
Apache License 2.0
173 stars 80 forks source link

Decoder init failed OMX.amlogic.avc.decoder.awesome - Firetv Gen 3 #31

Closed djinnovations closed 6 years ago

djinnovations commented 6 years ago

Issue description

Video streamed on firetv Gen 3 gives decoder init failed. The same stream works well with Exoplayer v1 on firetv Gen 3. I could have continued to use v1 but the quality given by v2 is great. Some videos play on fire tv Gen 3 with Exoplayer v2 and some dont. I am providing both working and non-working links below. The amazon app store blocks uploading the apk becoz of this issue & most of our apps are held back. Please suggest a workaround, so that app goes live. Thanks

Reproduction steps

Stream the test url given below on firetv Gen 3 using v1 and v2 Exoplayer demo apps.

Link to test content

Non- working 1) https://player.zype.com/manifest/59013485319597147b011536.m3u8?ad_enabled=true&app_key=DIDE-Vm3QcDwgC35DHhZ2BhKBqlzcs3Sqp0zFQ_z9fiF2bc2_reqq7TTtnQQ0TEK&https=true&player_request_id=5a78697f57adf711fc00e662 2) http://replays.robertsstream.com/racereplays/cust/gemshopping/roku.m3u8 Working 1) http://player.vimeo.com/external/253801820.hd.mp4?s=9700c2fc24a54b9a7ab0ef425dcd60105174988d&profile_id=174&oauth2_token_id=949202062

Version of ExoPlayer being used

compile 'com.amazon.android:exoplayer:2.6.1'

Device(s) and version(s) of Android being used

Video streaming with Exoplayer v2 is working well on all of amazon device except for firetv Gen 3. All app streaming works with v2 tested on firetv stick .

A full bug report captured from the device

Renderer error. 12-09 10:01:08.612: E/ExoPlayerImplInternal(5817): com.google.android.exoplayer2.ExoPlaybackException 12-09 10:01:08.612: E/ExoPlayerImplInternal(5817): at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.throwDecoderInitError(MediaCodecRenderer.java:395) 12-09 10:01:08.612: E/ExoPlayerImplInternal(5817): at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.maybeInitCodec(MediaCodecRenderer.java:382) 12-09 10:01:08.612: E/ExoPlayerImplInternal(5817): at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.onInputFormatChanged(MediaCodecRenderer.java:814) 12-09 10:01:08.612: E/ExoPlayerImplInternal(5817): at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.onInputFormatChanged(MediaCodecVideoRenderer.java:432) 12-09 10:01:08.612: E/ExoPlayerImplInternal(5817): at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:513) 12-09 10:01:08.612: E/ExoPlayerImplInternal(5817): at com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:564) 12-09 10:01:08.612: E/ExoPlayerImplInternal(5817): at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:340) 12-09 10:01:08.612: E/ExoPlayerImplInternal(5817): at android.os.Handler.dispatchMessage(Handler.java:98) 12-09 10:01:08.612: E/ExoPlayerImplInternal(5817): at android.os.Looper.loop(Looper.java:154) 12-09 10:01:08.612: E/ExoPlayerImplInternal(5817): at android.os.HandlerThread.run(HandlerThread.java:61) 12-09 10:01:08.612: E/ExoPlayerImplInternal(5817): Caused by: com.google.android.exoplayer2.mediacodec.MediaCodecRenderer$DecoderInitializationException: Decoder init failed: OMX.amlogic.avc.decoder.awesome, Format(1/27, null, video/avc, -1, null, [1920, 1080, -1.0], [-1, -1]) 12-09 10:01:08.612: E/ExoPlayerImplInternal(5817): ... 9 more 12-09 10:01:08.612: E/ExoPlayerImplInternal(5817): Caused by: java.lang.IllegalArgumentException 12-09 10:01:08.612: E/ExoPlayerImplInternal(5817): at android.media.MediaCodec.native_configure(Native Method) 12-09 10:01:08.612: E/ExoPlayerImplInternal(5817): at android.media.MediaCodec.configure(MediaCodec.java:1898) 12-09 10:01:08.612: E/ExoPlayerImplInternal(5817): at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.configureCodec(MediaCodecVideoRenderer.java:403) 12-09 10:01:08.612: E/ExoPlayerImplInternal(5817): at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.maybeInitCodec(MediaCodecRenderer.java:371) 12-09 10:01:08.612: E/ExoPlayerImplInternal(5817): ... 8 more 12-09 10:01:08.613: E/EventLogger(5817): playerFailed [4.45] 12-09 10:01:08.613: E/EventLogger(5817): com.google.android.exoplayer2.ExoPlaybackException 12-09 10:01:08.613: E/EventLogger(5817): at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.throwDecoderInitError(MediaCodecRenderer.java:395) 12-09 10:01:08.613: E/EventLogger(5817): at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.maybeInitCodec(MediaCodecRenderer.java:382) 12-09 10:01:08.613: E/EventLogger(5817): at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.onInputFormatChanged(MediaCodecRenderer.java:814) 12-09 10:01:08.613: E/EventLogger(5817): at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.onInputFormatChanged(MediaCodecVideoRenderer.java:432) 12-09 10:01:08.613: E/EventLogger(5817): at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:513) 12-09 10:01:08.613: E/EventLogger(5817): at com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:564) 12-09 10:01:08.613: E/EventLogger(5817): at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:340) 12-09 10:01:08.613: E/EventLogger(5817): at android.os.Handler.dispatchMessage(Handler.java:98) 12-09 10:01:08.613: E/EventLogger(5817): at android.os.Looper.loop(Looper.java:154) 12-09 10:01:08.613: E/EventLogger(5817): at android.os.HandlerThread.run(HandlerThread.java:61) 12-09 10:01:08.613: E/EventLogger(5817): Caused by: com.google.android.exoplayer2.mediacodec.MediaCodecRenderer$DecoderInitializationException: Decoder init failed: OMX.amlogic.avc.decoder.awesome, Format(1/27, null, video/avc, -1, null, [1920, 1080, -1.0], [-1, -1]) 12-09 10:01:08.613: E/EventLogger(5817): ... 9 more 12-09 10:01:08.613: E/EventLogger(5817): Caused by: java.lang.IllegalArgumentException 12-09 10:01:08.613: E/EventLogger(5817): at android.media.MediaCodec.native_configure(Native Method) 12-09 10:01:08.613: E/EventLogger(5817): at android.media.MediaCodec.configure(MediaCodec.java:1898) 12-09 10:01:08.613: E/EventLogger(5817): at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.configureCodec(MediaCodecVideoRenderer.java:403) 12-09 10:01:08.613: E/EventLogger(5817): at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.maybeInitCodec(MediaCodecRenderer.java:371) 12-09 10:01:08.613: E/EventLogger(5817): ... 8 more 12-09 10:01:08.615: D/OmxComponentManagerImpl(3099): DecreaseEntryNumByName pEntry->mNum=2, pEntry->mMaxNum:4,componentName:OMX.amlogic.avc.decoder.awesome 12-09 10:01:08.615: I/omx_core(3099): OMX_freeHandlenum= 1 12-09 10:01:08.615: D/AmlogicVideoDecoderAwesome(3099): ~AmlogicVideoDecoderAwesome 12-09 10:01:08.640: E/PlayerActivity(5817): playerFailed: 12-09 10:01:08.640: E/PlayerActivity(5817): com.google.android.exoplayer2.ExoPlaybackException 12-09 10:01:08.640: E/PlayerActivity(5817): at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.throwDecoderInitError(MediaCodecRenderer.java:395) 12-09 10:01:08.640: E/PlayerActivity(5817): at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.maybeInitCodec(MediaCodecRenderer.java:382) 12-09 10:01:08.640: E/PlayerActivity(5817): at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.onInputFormatChanged(MediaCodecRenderer.java:814) 12-09 10:01:08.640: E/PlayerActivity(5817): at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.onInputFormatChanged(MediaCodecVideoRenderer.java:432) 12-09 10:01:08.640: E/PlayerActivity(5817): at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:513) 12-09 10:01:08.640: E/PlayerActivity(5817): at com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:564) 12-09 10:01:08.640: E/PlayerActivity(5817): at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:340) 12-09 10:01:08.640: E/PlayerActivity(5817): at android.os.Handler.dispatchMessage(Handler.java:98) 12-09 10:01:08.640: E/PlayerActivity(5817): at android.os.Looper.loop(Looper.java:154) 12-09 10:01:08.640: E/PlayerActivity(5817): at android.os.HandlerThread.run(HandlerThread.java:61) 12-09 10:01:08.640: E/PlayerActivity(5817): Caused by: com.google.android.exoplayer2.mediacodec.MediaCodecRenderer$DecoderInitializationException: Decoder init failed: OMX.amlogic.avc.decoder.awesome, Format(1/27, null, video/avc, -1, null, [1920, 1080, -1.0], [-1, -1]) 12-09 10:01:08.640: E/PlayerActivity(5817): ... 9 more 12-09 10:01:08.640: E/PlayerActivity(5817): Caused by: java.lang.IllegalArgumentException 12-09 10:01:08.640: E/PlayerActivity(5817): at android.media.MediaCodec.native_configure(Native Method) 12-09 10:01:08.640: E/PlayerActivity(5817): at android.media.MediaCodec.configure(MediaCodec.java:1898) 12-09 10:01:08.640: E/PlayerActivity(5817): at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.configureCodec(MediaCodecVideoRenderer.java:403) 12-09 10:01:08.640: E/PlayerActivity(5817): at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.maybeInitCodec(MediaCodecRenderer.java:371) 12-09 10:01:08.640: E/PlayerActivity(5817): ... 8 more 12-09 10:01:08.642: I/ExoPlayerImpl(5817): Release 39e5c5e [ExoPlayerLib/2.5.1] [needle, AFTN, Amazon, 25] [goog.exo.core, goog.exo.hls] 12-09 10:01:08.644: D/EventLogger(5817): videoDisabled [4.48] 12-09 10:01:08.644: D/EventLogger(5817): audioDisabled [4.48]

peddisri commented 6 years ago

Tested on latest OS build using Exo 2.6.1 - unable to repro it. I'll get someone in my team to test on the OS version that is in the field and update this issue.

djinnovations commented 6 years ago

Thank you so much for the update, let me know any data needed from my end.

peddisri commented 6 years ago

We are unable to repro this issue on the OS version in field. One thing I noticed is that the width/height of the format being used to configure codec is 1080p as per your logs, but when I test the non-working contents, the width / height is 426X240 and max width/max height is 1080p.

I then tried to force width/height as 1080p and am still able to configure it.

Is this 100% reproduced? Fire TV Gen3 has a limitation that we need to release the previous codec instance before we can create a new one. Can you make sure that a previous playback instance is not holding on to media codec before the new session tries to create the decoder.

djinnovations commented 6 years ago

hey hi, we found out that the reason why v1 worked. We had mixpanel tracking added in onResume where v2 init happens, when we added the same mixpanel tracking for v1, we got the same exoplayer init error we had been facing with v2. Currently we are trying on with some trial and error on both v1 and v2. Thanks for patience and please dont close this issue tracking. I will try to update ASAP

peddisri commented 6 years ago

Thank you for the update.

consp1racy commented 5 years ago

@peddisri

please dont close this issue tracking