Android Crash : `WaveformExtractor$startDecode$1$1.onOutputBufferAvailable - codec is released already`
I have received a new crash of my android app but it seems different from #376 because it's about onOutputBufferAvailable and the release of the codec.
Maybe you will have more insights :
Fatal Exception: java.lang.IllegalStateException: codec is released already
at android.media.MediaCodec.getBuffer(MediaCodec.java)
at android.media.MediaCodec.getOutputBuffer(MediaCodec.java:4655)
at com.simform.audio_waveforms.WaveformExtractor$startDecode$1$1.onOutputBufferAvailable(WaveformExtractor.kt:123)
at android.media.MediaCodec$EventHandler.handleCallback(MediaCodec.java:1953)
at android.media.MediaCodec$EventHandler.handleMessage(MediaCodec.java:1851)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loopOnce(Looper.java:257)
at android.os.Looper.loop(Looper.java:342)
at android.app.ActivityThread.main(ActivityThread.java:9634)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:619)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:929)
I have no ways to reproduce it unfortunately, it happened to my live users in release mode. Thanks for your help !
This looks like codec was already released but a buffer was queued before release and for some reason now in outputBuffer you're getting this crash.
@Tom3652 I have created a PR which returns early if codec is null. Do let us know if this fixes your issue.
Yes sure i will use it in my app, thank you !
i have this error when load multi voice message " E/AudioTrack-JNI(26233): Error -12 initializing AudioTrack D/AudioTrack(26233): gather(): no metrics gathered, track status=-12 E/android.media.AudioTrack(26233): Error code -20 when initializing AudioTrack. E/MediaCodecAudioRenderer(26233): Audio sink error E/MediaCodecAudioRenderer(26233): com.google.android.exoplayer2.audio.AudioSink$InitializationException: AudioTrack init failed 0 Config(16000, 4, 22080) E/MediaCodecAudioRenderer(26233): at com.google.android.exoplayer2.audio.DefaultAudioSink$Configuration.buildAudioTrack(DefaultAudioSink.java:2204) E/MediaCodecAudioRenderer(26233): at com.google.android.exoplayer2.audio.DefaultAudioSink.buildAudioTrack(DefaultAudioSink.java:1053) E/MediaCodecAudioRenderer(26233): at com.google.android.exoplayer2.audio.DefaultAudioSink.buildAudioTrackWithRetry(DefaultAudioSink.java:1032) E/MediaCodecAudioRenderer(26233): at com.google.android.exoplayer2.audio.DefaultAudioSink.initializeAudioTrack(DefaultAudioSink.java:836) E/MediaCodecAudioRenderer(26233): at com.google.android.exoplayer2.audio.DefaultAudioSink.handleBuffer(DefaultAudioSink.java:915) E/MediaCodecAudioRenderer(26233): at com.google.android.exoplayer2.audio.MediaCodecAudioRenderer.processOutputBuffer(MediaCodecAudioRenderer.java:703) E/MediaCodecAudioRenderer(26233): at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.drainOutputBuffer(MediaCodecRenderer.java:1881) E/MediaCodecAudioRenderer(26233): at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:792) E/MediaCodecAudioRenderer(26233): at com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:998) E/MediaCodecAudioRenderer(26233): at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:499) E/MediaCodecAudioRenderer(26233): at android.os.Handler.dispatchMessage(Handler.java:102) E/MediaCodecAudioRenderer(26233): at android.os.Looper.loopOnce(Looper.java:226) E/MediaCodecAudioRenderer(26233): at android.os.Looper.loop(Looper.java:313) E/MediaCodecAudioRenderer(26233): at android.os.HandlerThread.run(HandlerThread.java:67) E/MediaCodecAudioRenderer(26233): Caused by: java.lang.UnsupportedOperationException: Cannot create AudioTrack E/MediaCodecAudioRenderer(26233): at android.media.AudioTrack$Builder.build(AudioTrack.java:1390) E/MediaCodecAudioRenderer(26233): at com.google.android.exoplayer2.audio.DefaultAudioSink$Configuration.createAudioTrackV29(DefaultAudioSink.java:2253) E/MediaCodecAudioRenderer(26233): at com.google.android.exoplayer2.audio.DefaultAudioSink$Configuration.createAudioTrack(DefaultAudioSink.java:2231) E/MediaCodecAudioRenderer(26233): at com.google.android.exoplayer2.audio.DefaultAudioSink$Configuration.buildAudioTrack(DefaultAudioSink.java:2196) E/MediaCodecAudioRenderer(26233): ... 13 more E/ExoPlayerImplInternal(26233): Playback error E/ExoPlayerImplInternal(26233): com.google.android.exoplayer2.ExoPlaybackException: MediaCodecAudioRenderer error, index=1, format=Format(null, null, null, audio/raw, null, -1, null, [-1, -1, -1.0], [1, 16000]), format_supported=YES E/ExoPlayerImplInternal(26233): at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:575) E/ExoPlayerImplInternal(26233): at android.os.Handler.dispatchMessage(Handler.java:102) E/ExoPlayerImplInternal(26233): at android.os.Looper.loopOnce(Looper.java:226) E/ExoPlayerImplInternal(26233): at android.os.Looper.loop(Looper.java:313) E/ExoPlayerImplInternal(26233): at android.os.HandlerThread.run(HandlerThread.java:67) E/ExoPlayerImplInternal(26233): Caused by: com.google.android.exoplayer2.audio.AudioSink$InitializationException: AudioTrack init failed 0 Config(16000, 4, 22080) E/ExoPlayerImplInternal(26233): at com.google.android.exoplayer2.audio.DefaultAudioSink$Configuration.buildAudioTrack(DefaultAudioSink.java:2204) E/ExoPlayerImplInternal(26233): at com.google.android.exoplayer2.audio.DefaultAudioSink.buildAudioTrack(DefaultAudioSink.java:1053) E/ExoPlayerImplInternal(26233): at com.google.android.exoplayer2.audio.DefaultAudioSink.buildAudioTrackWithRetry(DefaultAudioSink.java:1032) E/ExoPlayerImplInternal(26233): at com.google.android.exoplayer2.audio.DefaultAudioSink.initializeAudioTrack(DefaultAudioSink.java:836) E/ExoPlayerImplInternal(26233): at com.google.android.exoplayer2.audio.DefaultAudioSink.handleBuffer(DefaultAudioSink.java:915) E/ExoPlayerImplInternal(26233): at com.google.android.exoplayer2.audio.MediaCodecAudioRenderer.processOutputBuffer(MediaCodecAudioRenderer.java:703) E/ExoPlayerImplInternal(26233): at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.drainOutputBuffer(MediaCodecRenderer.java:1881) E/ExoPlayerImplInternal(26233): at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:792) E/ExoPlayerImplInternal(26233): at com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:998) E/ExoPlayerImplInternal(26233): at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:499) E/ExoPlayerImplInternal(26233): ... 4 more E/ExoPlayerImplInternal(26233): Suppressed: com.google.android.exoplayer2.audio.AudioSink$InitializationException: AudioTrack init failed 0 Config(16000, 4, 22080) E/ExoPlayerImplInternal(26233): ... 14 more E/ExoPlayerImplInternal(26233): Caused by: java.lang.UnsupportedOperationException: Cannot create AudioTrack E/ExoPlayerImplInternal(26233): at android.media.AudioTrack$Builder.build(AudioTrack.java:1390) E/ExoPlayerImplInternal(26233): at com.google.android.exoplayer2.audio.DefaultAudioSink$Configuration.createAudioTrackV29(DefaultAudioSink.java:2253) E/ExoPlayerImplInternal(26233): at com.google.android.exoplayer2.audio.DefaultAudioSink$Configuration.createAudioTrack(DefaultAudioSink.java:2231) E/ExoPlayerImplInternal(26233): at com.google.android.exoplayer2.audio.DefaultAudioSink$Configuration.buildAudioTrack(DefaultAudioSink.java:2196) E/ExoPlayerImplInternal(26233): ... 13 more E/ExoPlayerImplInternal(26233): Caused by: java.lang.UnsupportedOperationException: Cannot create AudioTrack E/ExoPlayerImplInternal(26233): at android.media.AudioTrack$Builder.build(AudioTrack.java:1390) E/ExoPlayerImplInternal(26233): at com.google.android.exoplayer2.audio.DefaultAudioSink$Configuration.createAudioTrackV29(DefaultAudioSink.java:2253) E/ExoPlayerImplInternal(26233): at com.google.android.exoplayer2.audio.DefaultAudioSink$Configuration.createAudioTrack(DefaultAudioSink.java:2231) E/ExoPlayerImplInternal(26233): at com.google.android.exoplayer2.audio.DefaultAudioSink$Configuration.buildAudioTrack(DefaultAudioSink.java:2196) E/ExoPlayerImplInternal(26233): ... 13 more"
so far so good @ujas-m-simformsolutions with your PR 🙏
Hi @ujas-m-simformsolutions, for the other issues #397 #376 you have closed can you make an official release for these please as long as this one ?