NVIDIA SHIELD Decoder init failed: OMX.Nvidia.h264.decode after moving a player to another view
See original GitHub issueIssue description
After moving a player to a different view using playerView.setPlayer(player);
and stopping the app (pressing home)
After resume when trying to reuse the original playerView
get a error Decoder init failed: OMX.Nvidia.h264.decode
Reproduction steps
- Load a player to a
playerView_1
, move the playerplayerView_2
(that before this had no player on it) usingplayerView_2.setPlayer(player);
then callplayerView_1.setPlayer(null);
- Press home key to stop the app, open the app again to resume
playerView_2
resumes the video that was playing - Try to load a player on the
playerView_1
get the error - One more try to load a player to that
playerView_1
all fine, so after one error things get cleanup some how
If after I do step 1. I do the bellow I don’t get the error all works fine
playerView_1_Holder.removeView(playerView_1);
playerView_1_Holder.addView(playerView_1);
Oddly on the Android Studio emulator running Android 10 TV, If I do the steps I don’t get the error, but I can’t see the SurfaceView
of playerView_1
after resume on step 3, the video loads but the surface is invisible, unless I do the removeView/addView
.
Seems that something is be held to the view somehow after the change…
Link to test content
https://github.com/fgl27/SmartTwitchTV/raw/master/release/githubio/temp/shield_test_clip.mp4
A full bug report captured from the device
bugreport-darcy-PPR1.180610.011-2020-10-05-04-52-37.zip
On the above we have the bellow error when the issue happens
10-05 04:52:17.249 7240 7549 I OMXClient: IOmx service obtained
10-05 04:52:17.250 3456 3456 I OMXMaster: makeComponentInstance(OMX.Nvidia.h264.decode) in omx@1.0-service process
10-05 04:52:17.266 7240 7548 D SurfaceUtils: connecting to surface 0x308f3df010, reason connectToSurface
10-05 04:52:17.266 3368 3788 E BufferQueueProducer: [SurfaceView - com.fgl27.twitch.debug/com.fgl27.twitch.PlayerActivity#1] connect: BufferQueue has been abandoned
10-05 04:52:17.266 7240 7548 E SurfaceUtils: Failed to connect to surface 0x308f3df010, err -19
10-05 04:52:17.266 7240 7548 E MediaCodec: nativeWindowConnect returned an error: No such device (-19)
10-05 04:52:17.267 7240 7540 E MediaCodec: configure failed with err 0xffffffed, resetting...
10-05 04:52:17.273 7240 7549 I OMXClient: IOmx service obtained
10-05 04:52:17.274 3456 3950 I OMXMaster: makeComponentInstance(OMX.Nvidia.h264.decode) in omx@1.0-service process
10-05 04:52:17.282 7240 7540 W MediaCodecRenderer: Failed to initialize decoder: OMX.Nvidia.h264.decode
10-05 04:52:17.282 7240 7540 W MediaCodecRenderer: android.media.MediaCodec$CodecException: Error 0xffffffed
10-05 04:52:17.282 7240 7540 W MediaCodecRenderer: at android.media.MediaCodec.native_configure(Native Method)
10-05 04:52:17.282 7240 7540 W MediaCodecRenderer: at android.media.MediaCodec.configure(MediaCodec.java:2199)
10-05 04:52:17.282 7240 7540 W MediaCodecRenderer: at android.media.MediaCodec.configure(MediaCodec.java:2089)
10-05 04:52:17.282 7240 7540 W MediaCodecRenderer: at com.google.android.exoplayer2.mediacodec.SynchronousMediaCodecAdapter.configure(SynchronousMediaCodecAdapter.java:43)
10-05 04:52:17.282 7240 7540 W MediaCodecRenderer: at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.configureCodec(MediaCodecVideoRenderer.java:580)
10-05 04:52:17.282 7240 7540 W MediaCodecRenderer: at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.initCodec(MediaCodecRenderer.java:1082)
10-05 04:52:17.282 7240 7540 W MediaCodecRenderer: at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.maybeInitCodecWithFallback(MediaCodecRenderer.java:987)
10-05 04:52:17.282 7240 7540 W MediaCodecRenderer: at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.maybeInitCodecOrBypass(MediaCodecRenderer.java:551)
10-05 04:52:17.282 7240 7540 W MediaCodecRenderer: at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.onInputFormatChanged(MediaCodecRenderer.java:1409)
10-05 04:52:17.282 7240 7540 W MediaCodecRenderer: at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.onInputFormatChanged(MediaCodecVideoRenderer.java:640)
10-05 04:52:17.282 7240 7540 W MediaCodecRenderer: at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.readToFlagsOnlyBuffer(MediaCodecRenderer.java:941)
10-05 04:52:17.282 7240 7540 W MediaCodecRenderer: at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:791)
10-05 04:52:17.282 7240 7540 W MediaCodecRenderer: at com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:923)
10-05 04:52:17.282 7240 7540 W MediaCodecRenderer: at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:469)
10-05 04:52:17.282 7240 7540 W MediaCodecRenderer: at android.os.Handler.dispatchMessage(Handler.java:102)
10-05 04:52:17.282 7240 7540 W MediaCodecRenderer: at android.os.Looper.loop(Looper.java:193)
10-05 04:52:17.282 7240 7540 W MediaCodecRenderer: at android.os.HandlerThread.run(HandlerThread.java:65)
10-05 04:52:17.289 7240 7540 E ExoPlayerImplInternal: Playback error
10-05 04:52:17.289 7240 7540 E ExoPlayerImplInternal: com.google.android.exoplayer2.ExoPlaybackException: MediaCodecVideoRenderer error, index=0, format=Format(0, null, null, video/avc, avc1.64002A, 6697561, null, [1920, 1080, 60.0], [-1, -1]), format_supported=YES
10-05 04:52:17.289 7240 7540 E ExoPlayerImplInternal: at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:547)
10-05 04:52:17.289 7240 7540 E ExoPlayerImplInternal: at android.os.Handler.dispatchMessage(Handler.java:102)
10-05 04:52:17.289 7240 7540 E ExoPlayerImplInternal: at android.os.Looper.loop(Looper.java:193)
10-05 04:52:17.289 7240 7540 E ExoPlayerImplInternal: at android.os.HandlerThread.run(HandlerThread.java:65)
10-05 04:52:17.289 7240 7540 E ExoPlayerImplInternal: Caused by: com.google.android.exoplayer2.mediacodec.MediaCodecRenderer$DecoderInitializationException: Decoder init failed: OMX.Nvidia.h264.decode, Format(0, null, null, video/avc, avc1.64002A, 6697561, null, [1920, 1080, 60.0], [-1, -1])
10-05 04:52:17.289 7240 7540 E ExoPlayerImplInternal: at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.maybeInitCodecWithFallback(MediaCodecRenderer.java:994)
10-05 04:52:17.289 7240 7540 E ExoPlayerImplInternal: at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.maybeInitCodecOrBypass(MediaCodecRenderer.java:551)
10-05 04:52:17.289 7240 7540 E ExoPlayerImplInternal: at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.onInputFormatChanged(MediaCodecRenderer.java:1409)
10-05 04:52:17.289 7240 7540 E ExoPlayerImplInternal: at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.onInputFormatChanged(MediaCodecVideoRenderer.java:640)
10-05 04:52:17.289 7240 7540 E ExoPlayerImplInternal: at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.readToFlagsOnlyBuffer(MediaCodecRenderer.java:941)
10-05 04:52:17.289 7240 7540 E ExoPlayerImplInternal: at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:791)
10-05 04:52:17.289 7240 7540 E ExoPlayerImplInternal: at com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:923)
10-05 04:52:17.289 7240 7540 E ExoPlayerImplInternal: at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:469)
10-05 04:52:17.289 7240 7540 E ExoPlayerImplInternal: ... 3 more
10-05 04:52:17.289 7240 7540 E ExoPlayerImplInternal: Caused by: android.media.MediaCodec$CodecException: Error 0xffffffed
10-05 04:52:17.289 7240 7540 E ExoPlayerImplInternal: at android.media.MediaCodec.native_configure(Native Method)
10-05 04:52:17.289 7240 7540 E ExoPlayerImplInternal: at android.media.MediaCodec.configure(MediaCodec.java:2199)
10-05 04:52:17.289 7240 7540 E ExoPlayerImplInternal: at android.media.MediaCodec.configure(MediaCodec.java:2089)
10-05 04:52:17.289 7240 7540 E ExoPlayerImplInternal: at com.google.android.exoplayer2.mediacodec.SynchronousMediaCodecAdapter.configure(SynchronousMediaCodecAdapter.java:43)
10-05 04:52:17.289 7240 7540 E ExoPlayerImplInternal: at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.configureCodec(MediaCodecVideoRenderer.java:580)
10-05 04:52:17.289 7240 7540 E ExoPlayerImplInternal: at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.initCodec(MediaCodecRenderer.java:1082)
10-05 04:52:17.289 7240 7540 E ExoPlayerImplInternal: at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.maybeInitCodecWithFallback(MediaCodecRenderer.java:987)
10-05 04:52:17.289 7240 7540 E ExoPlayerImplInternal: ... 10 more
10-05 04:52:17.295 7240 7240 W STTV_PlayerActivity: onPlayerError pos 4 isBehindLiveWindow false e
10-05 04:52:17.295 7240 7240 W STTV_PlayerActivity: com.google.android.exoplayer2.ExoPlaybackException: MediaCodecVideoRenderer error, index=0, format=Format(0, null, null, video/avc, avc1.64002A, 6697561, null, [1920, 1080, 60.0], [-1, -1]), format_supported=YES
10-05 04:52:17.295 7240 7240 W STTV_PlayerActivity: at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:547)
10-05 04:52:17.295 7240 7240 W STTV_PlayerActivity: at android.os.Handler.dispatchMessage(Handler.java:102)
10-05 04:52:17.295 7240 7240 W STTV_PlayerActivity: at android.os.Looper.loop(Looper.java:193)
10-05 04:52:17.295 7240 7240 W STTV_PlayerActivity: at android.os.HandlerThread.run(HandlerThread.java:65)
10-05 04:52:17.295 7240 7240 W STTV_PlayerActivity: Caused by: com.google.android.exoplayer2.mediacodec.MediaCodecRenderer$DecoderInitializationException: Decoder init failed: OMX.Nvidia.h264.decode, Format(0, null, null, video/avc, avc1.64002A, 6697561, null, [1920, 1080, 60.0], [-1, -1])
10-05 04:52:17.295 7240 7240 W STTV_PlayerActivity: at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.maybeInitCodecWithFallback(MediaCodecRenderer.java:994)
10-05 04:52:17.295 7240 7240 W STTV_PlayerActivity: at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.maybeInitCodecOrBypass(MediaCodecRenderer.java:551)
10-05 04:52:17.295 7240 7240 W STTV_PlayerActivity: at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.onInputFormatChanged(MediaCodecRenderer.java:1409)
10-05 04:52:17.295 7240 7240 W STTV_PlayerActivity: at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.onInputFormatChanged(MediaCodecVideoRenderer.java:640)
10-05 04:52:17.295 7240 7240 W STTV_PlayerActivity: at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.readToFlagsOnlyBuffer(MediaCodecRenderer.java:941)
10-05 04:52:17.295 7240 7240 W STTV_PlayerActivity: at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:791)
10-05 04:52:17.295 7240 7240 W STTV_PlayerActivity: at com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:923)
10-05 04:52:17.295 7240 7240 W STTV_PlayerActivity: at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:469)
10-05 04:52:17.295 7240 7240 W STTV_PlayerActivity: ... 3 more
10-05 04:52:17.295 7240 7240 W STTV_PlayerActivity: Caused by: android.media.MediaCodec$CodecException: Error 0xffffffed
10-05 04:52:17.295 7240 7240 W STTV_PlayerActivity: at android.media.MediaCodec.native_configure(Native Method)
10-05 04:52:17.295 7240 7240 W STTV_PlayerActivity: at android.media.MediaCodec.configure(MediaCodec.java:2199)
10-05 04:52:17.295 7240 7240 W STTV_PlayerActivity: at android.media.MediaCodec.configure(MediaCodec.java:2089)
10-05 04:52:17.295 7240 7240 W STTV_PlayerActivity: at com.google.android.exoplayer2.mediacodec.SynchronousMediaCodecAdapter.configure(SynchronousMediaCodecAdapter.java:43)
10-05 04:52:17.295 7240 7240 W STTV_PlayerActivity: at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.configureCodec(MediaCodecVideoRenderer.java:580)
10-05 04:52:17.295 7240 7240 W STTV_PlayerActivity: at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.initCodec(MediaCodecRenderer.java:1082)
10-05 04:52:17.295 7240 7240 W STTV_PlayerActivity: at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.maybeInitCodecWithFallback(MediaCodecRenderer.java:987)
10-05 04:52:17.295 7240 7240 W STTV_PlayerActivity: ... 10 more
Version of ExoPlayer being used
dev-v2
Device(s) and version(s) of Android being used
NVIDIA SHIELD 2017, darcy Android 9
Issue Analytics
- State:
- Created 3 years ago
- Comments:9 (4 by maintainers)
Had a look at the green flickering issue too. I can repro that and just need to file a bug with Nvidia, then I will update #7998.
I wasn’t able to reproduce this issue on
NVIDIA/darcy/darcy:9/PPR1.180610.011/4079199_2513.0256:userdebug/release-keys
. I did the following:StyledPlayerView
alongside the first one, and added a button that triggers a call toswitchTargetView
toggling between the two views.Please try the same and see if it’s reproducible for you still. It seems likely that the problem is related to the lifecycle of different surfaces. I think that
BufferQueue has been abandoned
means the decoder is outputting to aSurface
belonging to aSurfaceView
that has been destroyed. To debug on your side you could adding some logging for when theMediaCodecVideoRenderer
’s surface changes and when theSurfaceHolder
callbacks inSimpleExoPlayer
are called.