java.lang.IllegalStateException native_dequeueOutputBuffer異常

  最近測試手機的硬件編解碼,經常遇到以下錯誤:

/net.quantum6.codectest W/System.err: java.lang.IllegalStateException
        at android.media.MediaCodec.native_dequeueInputBuffer(Native Method)
        at android.media.MediaCodec.dequeueInputBuffer(MediaCodec.java:2726)
        at net.quantum6.mediacodec.AndroidVideoCodec.process(AndroidVideoCodec.java:116)
        at net.quantum6.codectest.AbstractCodecHelper.processData(AbstractCodecHelper.java:146)
        at net.quantum6.codectest.AbstractCameraHelper.onPreviewFrame(AbstractCameraHelper.java:167)
        at android.hardware.Camera$EventHandler.handleMessage(Camera.java:1288)
        at android.os.Handler.dispatchMessage(Handler.java:107)
        at android.os.Looper.loop(Looper.java:213)
        at android.app.ActivityThread.main(ActivityThread.java:8147)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1101)
net.quantum6.codectest W/System.err: java.lang.IllegalStateException
        at android.media.MediaCodec.native_dequeueOutputBuffer(Native Method)
        at android.media.MediaCodec.dequeueOutputBuffer(MediaCodec.java:2789)
        at net.quantum6.mediacodec.AndroidVideoCodec.process(AndroidVideoCodec.java:142)
        at net.quantum6.codectest.AbstractCodecHelper.processData(AbstractCodecHelper.java:146)
        at net.quantum6.codectest.AbstractCameraHelper.onPreviewFrame(AbstractCameraHelper.java:167)
        at android.hardware.Camera$EventHandler.handleMessage(Camera.java:1288)
        at android.os.Handler.dispatchMessage(Handler.java:107)
        at android.os.Looper.loop(Looper.java:213)
        at android.app.ActivityThread.main(ActivityThread.java:8147)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1101)

  具體代碼可以看:https://github.com/quantum6/Android-CodecTest

  有時有,有時沒有,是解碼器產生的。什麼原因吾亦搞不清楚。於是吾在收到異常時返回-1,由上層釋放解碼器,再重新初始化。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章