For some reason I am using mediacodec API to decode mp4 audio track in JNI layer, I just reflect MediaCodec/MediaExtractor/AudioTrack into jni layer and try to decode audio and video tracks, but when I am decoding the audio track I can not get the whole audio track, the log info:
05-01 12:28:48.100 10030-10073/com.example.audiodecodernativedemo A/art: art/runtime/indirect_reference_table.cc:115] JNI ERROR (app bug): local reference table overflow (max=512)
05-01 12:28:48.100 10030-10073/com.example.audiodecodernativedemo A/art: art/runtime/indirect_reference_table.cc:115] local reference table dump:
05-01 12:28:48.100 10030-10073/com.example.audiodecodernativedemo A/art: art/runtime/indirect_reference_table.cc:115] Last 10 entries (of 511):
05-01 12:28:48.100 10030-10073/com.example.audiodecodernativedemo A/art: art/runtime/indirect_reference_table.cc:115] 510: 0x12fa6140 java.nio.DirectByteBuffer
05-01 12:28:48.100 10030-10073/com.example.audiodecodernativedemo A/art: art/runtime/indirect_reference_table.cc:115] 509: 0x12fa6100 java.nio.DirectByteBuffer
05-01 12:28:48.100 10030-10073/com.example.audiodecodernativedemo A/art: art/runtime/indirect_reference_table.cc:115] 508: 0x12fa60c0 java.nio.DirectByteBuffer
05-01 12:28:48.100 10030-10073/com.example.audiodecodernativedemo A/art: art/runtime/indirect_reference_table.cc:115] 507: 0x12fa60c0 java.nio.DirectByteBuffer
05-01 12:28:48.100 10030-10073/com.example.audiodecodernativedemo A/art: art/runtime/indirect_reference_table.cc:115] 506: 0x12fa6040 java.nio.DirectByteBuffer
05-01 12:28:48.100 10030-10073/com.example.audiodecodernativedemo A/art: art/runtime/indirect_reference_table.cc:115] 505: 0x12f7bfc0 java.nio.DirectByteBuffer
05-01 12:28:48.100 10030-10073/com.example.audiodecodernativedemo A/art: art/runtime/indirect_reference_table.cc:115] 504: 0x12f7bfc0 java.nio.DirectByteBuffer
05-01 12:28:48.100 10030-10073/com.example.audiodecodernativedemo A/art: art/runtime/indirect_reference_table.cc:115] 503: 0x12f7bf40 java.nio.DirectByteBuffer
05-01 12:28:48.100 10030-10073/com.example.audiodecodernativedemo A/art: art/runtime/indirect_reference_table.cc:115] 502: 0x12f7bf00
I have deleted all local reference I've created in my code. It seems that releaseOutputBuffer
can not free ByteBuffer
deliver to it for rendering. How can I decode audio in jni layer to avoid this problem?