RewardedAd keeps MediaCodec resources ( through ExoPlayer) which causes normal Exoplayer not to run

569 views
Skip to first unread message

Dave AndroVid

unread,
Apr 13, 2020, 7:04:55 AM4/13/20
to Google Mobile Ads SDK Developers
Hi, we have a video editor app and we use ExoPlayer as the video player. For some videos, we started getting black screen in ExoPlayer. After a long debugging, we found that loading RewardedAds on application start causes the problem. Because it looks like each RewardedAd instance reserves MediaCodec resources even though you do not display them. ( probably through ExoPlayer because we see Exoplayer logs)

On application start we were loading 3 RewardedAd instances and we get ExoPlayer black screen ( due to mediacodec decoder initialization error). When we load only 1 RewardedAd instance at the start instead of 3, the problem is gone.

Device: samsung | SM-J710FQ
Android: 8.1.0
ExoPlayer Version: 2.11.4
Firebase Core Version = 17.2.2
Firebase Ads Version = 18.3.0

THESE LOGS ARE FROM APPLICATION INITIALIZATION
Here there is no ExoPlayer etc in the app, just loading the landing screen, initializing the app, MobileAds library etc and loading 3 RewardedAds. As you see there are 3 MediaCodec related lines:
2020-05-25 13:53:22.371 7017-7626/com.xxx.debug I/MediaCodec: [OMX.Exynos.avc.dec] setting surface generation to 7185409
2020-05-25 13:53:22.375 7017-7628/com.xxx.debug I/MediaCodec: [OMX.Exynos.avc.dec] setting surface generation to 7185410
2020-05-25 13:53:22.395 7017-7626/com.xxx.debug I/MediaCodec: setCodecState state : 0
2020-05-25 13:53:22.396 7017-7628/com.xxx.debug I/MediaCodec: setCodecState state : 0
2020-05-25 13:53:22.498 7017-7651/com.xxx.debug I/MediaCodec: [OMX.Exynos.avc.dec] setting surface generation to 7185411
2020-05-25 13:53:22.514 7017-7651/com.xxx.debug I/MediaCodec: setCodecState state : 0
2020-05-25 13:53:23.396 7017-7626/com.xxx.debug I/MediaCodec: setCodecState state : 0
2020-05-25 13:53:23.396 7017-7628/com.xxx.debug I/MediaCodec: setCodecState state : 0
2020-05-25 13:53:23.514 7017-7651/com.xxx.debug I/MediaCodec: setCodecState state : 0


AFTER INITIALIZATION WE START EXOPLAYER IN OUR APP
020-05-25 14:01:55.036 7017-7952/com.xxx.debug I/MediaCodec: failed to configure codec bacause of codec capacity
2020-05-25 14:01:55.036 7017-7952/com.xxx.debug E/MediaCodec: Codec reported err 0xffffec77, actionCode 0, while in state 3
2020-05-25 14:01:55.039 7017-7926/com.xxx.debug E/MediaCodec: configure failed with err 0xffffec77, resetting...
2020-05-25 14:01:55.041 7017-7952/com.xxx.debug I/MediaCodec: Codec shutdown complete
2020-05-25 14:01:55.049 7017-7952/com.xxx.debug I/MediaCodec: Codec shutdown complete
2020-05-25 14:01:55.056 7017-7926/com.xxx.debug W/MediaCodecRenderer: Failed to initialize decoder: OMX.Exynos.avc.dec
      android.media.MediaCodec$CodecException: Error 0xffffec77
        at android.media.MediaCodec.native_configure(Native Method)
        at android.media.MediaCodec.configure(MediaCodec.java:1943)
        at android.media.MediaCodec.configure(MediaCodec.java:1872)
        at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.configureCodec(MediaCodecVideoRenderer.java:689)
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.initCodec(MediaCodecRenderer.java:928)
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.maybeInitCodecWithFallback(MediaCodecRenderer.java:860)
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.maybeInitCodec(MediaCodecRenderer.java:561)
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.onInputFormatChanged(MediaCodecRenderer.java:1254)
        at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.onInputFormatChanged(MediaCodecVideoRenderer.java:756)
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.readToFlagsOnlyBuffer(MediaCodecRenderer.java:814)
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:712)
        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:102)
        at android.os.Looper.loop(Looper.java:164)
        at android.os.HandlerThread.run(HandlerThread.java:65)
2020-05-25 14:01:55.064 7017-7926/com.xxx.debug E/ExoPlayerImplInternal: Renderer error: index=0, type=video, format=Format(1, null, null, video/avc, null, -1, null, [1920, 1080, 30.007599], [-1, -1]), rendererSupport=YES
      com.google.android.exoplayer2.ExoPlaybackException: com.google.android.exoplayer2.mediacodec.MediaCodecRenderer$DecoderInitializationException: Decoder init failed: OMX.Exynos.avc.dec, Format(1, null, null, video/avc, null, -1, null, [1920, 1080, 30.007599], [-1, -1])
        at com.google.android.exoplayer2.BaseRenderer.createRendererException(BaseRenderer.java:359)
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.maybeInitCodec(MediaCodecRenderer.java:563)
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.onInputFormatChanged(MediaCodecRenderer.java:1254)
        at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.onInputFormatChanged(MediaCodecVideoRenderer.java:756)
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.readToFlagsOnlyBuffer(MediaCodecRenderer.java:814)
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:712)
        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:102)
        at android.os.Looper.loop(Looper.java:164)
        at android.os.HandlerThread.run(HandlerThread.java:65)
     Caused by: com.google.android.exoplayer2.mediacodec.MediaCodecRenderer$DecoderInitializationException: Decoder init failed: OMX.Exynos.avc.dec, Format(1, null, null, video/avc, null, -1, null, [1920, 1080, 30.007599], [-1, -1])
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.maybeInitCodecWithFallback(MediaCodecRenderer.java:867)
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.maybeInitCodec(MediaCodecRenderer.java:561)
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.onInputFormatChanged(MediaCodecRenderer.java:1254) 
        at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.onInputFormatChanged(MediaCodecVideoRenderer.java:756) 
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.readToFlagsOnlyBuffer(MediaCodecRenderer.java:814) 
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:712) 
        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:102) 
        at android.os.Looper.loop(Looper.java:164) 
        at android.os.HandlerThread.run(HandlerThread.java:65) 
     Caused by: android.media.MediaCodec$CodecException: Error 0xffffec77
        at android.media.MediaCodec.native_configure(Native Method)
        at android.media.MediaCodec.configure(MediaCodec.java:1943)
        at android.media.MediaCodec.configure(MediaCodec.java:1872)
        at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.configureCodec(MediaCodecVideoRenderer.java:689)
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.initCodec(MediaCodecRenderer.java:928)
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.maybeInitCodecWithFallback(MediaCodecRenderer.java:860)
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.maybeInitCodec(MediaCodecRenderer.java:561) 
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.onInputFormatChanged(MediaCodecRenderer.java:1254) 
        at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.onInputFormatChanged(MediaCodecVideoRenderer.java:756) 
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.readToFlagsOnlyBuffer(MediaCodecRenderer.java:814) 
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:712) 
        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:102) 
        at android.os.Looper.loop(Looper.java:164) 
        at android.os.HandlerThread.run(HandlerThread.java:65) 

Mobile Ads SDK Forum Advisor Prod

unread,
Apr 13, 2020, 11:59:13 AM4/13/20
to zeox...@gmail.com, google-adm...@googlegroups.com
Hi Dave,

Thank you for bringing this issue to our attention.

I was wondering if you could share via "Reply privately to author" button. With the following information. So that we can look into it more .
  • Pub id and Ad Unit Id.
  • Mediation if any.
  • A sample app that shows the full implementation of the Admob SDK, FireBase and ExoPlayer.
  • Any Charles log or error codes that you might be seeing.
I also see that ExoPlayer appears to have released a R2.3 not sure if that could cause an issue too.

Regards,
William Pescherine
Mobile Ads SDK Team
 

ref:_00D1U1174p._5001UZXlKr:ref
Reply all
Reply to author
Forward
0 new messages