#2 Reload player in case of "Renderer error"

Abierta
kilowatt36 desea fusionar 1 commits de kilowatt36/bugfix/renderer_ex en exttex/master

Sometimes renderer errors appears in ExoPlayer, and after that sound completely disappears until app restart. It happens because player thread is stopped, therefore I've added player reinitialization - now next song is played with sound.

Stacktrace:

2020-10-25 19:25:42.647 18293-23353/f.f.freezer E/ACodec: [OMX.google.flac.decoder] ERROR(0x8000100b)
2020-10-25 19:25:42.647 18293-23353/f.f.freezer E/ACodec: signalError(omxError 0x8000100b, internalError -2147483648)
2020-10-25 19:25:42.647 18293-23353/f.f.freezer E/MediaCodec: Codec reported err 0x8000100b, actionCode 0, while in state 6
2020-10-25 19:25:42.742 18293-18772/f.f.freezer E/ExoPlayerImplInternal: Renderer error: index=1, type=audio, format=Format(null, null, null, audio/flac, null, 1411200, null, [-1, -1, -1.0], [2, 44100]), rendererSupport=YES
      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:735)
        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:193)
        at android.os.HandlerThread.run(HandlerThread.java:65)
     Caused by: java.lang.IllegalStateException
        at android.media.MediaCodec.releaseOutputBuffer(Native Method)
        at android.media.MediaCodec.releaseOutputBuffer(MediaCodec.java:2743)
        at com.google.android.exoplayer2.audio.MediaCodecAudioRenderer.processOutputBuffer(MediaCodecAudioRenderer.java:825)
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.drainOutputBuffer(MediaCodecRenderer.java:1590)
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:721)
        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:193) 
        at android.os.HandlerThread.run(HandlerThread.java:65) 
2020-10-25 19:25:42.787 18293-18772/f.f.freezer E/ExoPlayerImplInternal: Disable failed.
      java.lang.IllegalStateException
        at android.media.MediaCodec.native_stop(Native Method)
        at android.media.MediaCodec.stop(MediaCodec.java:2084)
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.releaseCodec(MediaCodecRenderer.java:671)
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.flushOrReleaseCodec(MediaCodecRenderer.java:773)
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.onDisabled(MediaCodecRenderer.java:636)
        at com.google.android.exoplayer2.audio.MediaCodecAudioRenderer.onDisabled(MediaCodecAudioRenderer.java:717)
        at com.google.android.exoplayer2.BaseRenderer.disable(BaseRenderer.java:168)
        at com.google.android.exoplayer2.ExoPlayerImplInternal.disableRenderer(ExoPlayerImplInternal.java:1142)
        at com.google.android.exoplayer2.ExoPlayerImplInternal.resetInternal(ExoPlayerImplInternal.java:891)
        at com.google.android.exoplayer2.ExoPlayerImplInternal.stopInternal(ExoPlayerImplInternal.java:850)
        at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:382)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:193)
        at android.os.HandlerThread.run(HandlerThread.java:65)
2020-10-25 19:25:42.795 18293-18293/f.f.freezer E/AudioPlayer: TYPE_RENDERER: null
Sometimes renderer errors appears in ExoPlayer, and after that sound completely disappears until app restart. It happens because player thread is stopped, therefore I've added player reinitialization - now next song is played with sound. Stacktrace: ``` 2020-10-25 19:25:42.647 18293-23353/f.f.freezer E/ACodec: [OMX.google.flac.decoder] ERROR(0x8000100b) 2020-10-25 19:25:42.647 18293-23353/f.f.freezer E/ACodec: signalError(omxError 0x8000100b, internalError -2147483648) 2020-10-25 19:25:42.647 18293-23353/f.f.freezer E/MediaCodec: Codec reported err 0x8000100b, actionCode 0, while in state 6 2020-10-25 19:25:42.742 18293-18772/f.f.freezer E/ExoPlayerImplInternal: Renderer error: index=1, type=audio, format=Format(null, null, null, audio/flac, null, 1411200, null, [-1, -1, -1.0], [2, 44100]), rendererSupport=YES 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:735) 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:193) at android.os.HandlerThread.run(HandlerThread.java:65) Caused by: java.lang.IllegalStateException at android.media.MediaCodec.releaseOutputBuffer(Native Method) at android.media.MediaCodec.releaseOutputBuffer(MediaCodec.java:2743) at com.google.android.exoplayer2.audio.MediaCodecAudioRenderer.processOutputBuffer(MediaCodecAudioRenderer.java:825) at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.drainOutputBuffer(MediaCodecRenderer.java:1590) at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:721) 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:193)  at android.os.HandlerThread.run(HandlerThread.java:65)  2020-10-25 19:25:42.787 18293-18772/f.f.freezer E/ExoPlayerImplInternal: Disable failed. java.lang.IllegalStateException at android.media.MediaCodec.native_stop(Native Method) at android.media.MediaCodec.stop(MediaCodec.java:2084) at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.releaseCodec(MediaCodecRenderer.java:671) at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.flushOrReleaseCodec(MediaCodecRenderer.java:773) at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.onDisabled(MediaCodecRenderer.java:636) at com.google.android.exoplayer2.audio.MediaCodecAudioRenderer.onDisabled(MediaCodecAudioRenderer.java:717) at com.google.android.exoplayer2.BaseRenderer.disable(BaseRenderer.java:168) at com.google.android.exoplayer2.ExoPlayerImplInternal.disableRenderer(ExoPlayerImplInternal.java:1142) at com.google.android.exoplayer2.ExoPlayerImplInternal.resetInternal(ExoPlayerImplInternal.java:891) at com.google.android.exoplayer2.ExoPlayerImplInternal.stopInternal(ExoPlayerImplInternal.java:850) at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:382) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:193) at android.os.HandlerThread.run(HandlerThread.java:65) 2020-10-25 19:25:42.795 18293-18293/f.f.freezer E/AudioPlayer: TYPE_RENDERER: null ```
Este Pull Request puede ser fusionado automáticamente.
Inicie sesión para unirse a esta conversación.
Sin etiquetas
Sin Milestone
Sin asignado
1 participantes
Cargando...
Cancelar
Guardar
Aún no existe contenido.