audio_waveforms icon indicating copy to clipboard operation
audio_waveforms copied to clipboard

Android Crash : `WaveformExtractor$startDecode$1$1.onOutputBufferAvailable - codec is released already`

Open Tom3652 opened this issue 7 months ago • 6 comments

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 !

Tom3652 avatar May 20 '25 09:05 Tom3652

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.

ujas-m-simformsolutions avatar May 26 '25 10:05 ujas-m-simformsolutions

@Tom3652 I have created a PR which returns early if codec is null. Do let us know if this fixes your issue.

ujas-m-simformsolutions avatar May 26 '25 10:05 ujas-m-simformsolutions

Yes sure i will use it in my app, thank you !

Tom3652 avatar May 26 '25 10:05 Tom3652

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"

bisherbh124 avatar May 26 '25 16:05 bisherbh124

so far so good @ujas-m-simformsolutions with your PR 🙏

Tom3652 avatar Jun 01 '25 09:06 Tom3652

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 ?

Tom3652 avatar Jun 14 '25 08:06 Tom3652