bilibili / ijkplayer

Android/iOS video player based on FFmpeg n3.4, with MediaCodec, VideoToolbox support.
GNU General Public License v2.0
32.5k stars 8.13k forks source link

Codec reported an error. (omx error 0x80001001, internalError -19) #1972

Open xunmengyoufeng opened 8 years ago

xunmengyoufeng commented 8 years ago

最初的问题是视频播放时,滚动视频列表,然后在没有removeView的情况下,小窗播放,导致app退出,通过add2Line定位到 SDL_AMediaCodec_configure_surface ffpipeline_select_mediacodec ffpipeline_select_mediacodec ffp_prepare_async_l 这几个地方,然后我将SDL_AMediaCodec_decreaseReferenceP(&opaque->acodec);注掉了 if (opaque->quirk_reconfigure_with_new_codec) { ALOGI("quirk: reconfigure with new codec"); //SDL_AMediaCodec_decreaseReferenceP(&opaque->acodec); } 现在的问题是,小窗播放会黑一会才可以,而且有时候会发生app卡死,只能碰触home退出,机型小米note 堆栈是: 09-13 15:31:33.546 10507-10507/demo E/bufff: buf...0 09-13 15:31:34.076 10507-10507/demo E/bufff: buf...0 09-13 15:31:35.886 10507-10507/demo E/bufff: buf...1 09-13 15:31:36.376 10507-10507/demo E/bufff: buf...1 09-13 15:31:37.786 10507-10507/demo E/bufff: buf...2 09-13 15:31:38.326 10507-10507/demo E/bufff: buf...2 09-13 15:31:39.446 10507-10507/demo E/bufff: buf...2 09-13 15:31:40.006 10507-10507/demo E/bufff: buf...4 09-13 15:31:40.006 10507-13122/demo E/BufferQueue: [unnamed-10507-11] queueBuffer: BufferQueue has been abandoned! 09-13 15:31:40.006 10507-13122/demo E/Surface: queueBuffer: error queuing buffer to SurfaceTexture, -19 09-13 15:31:40.006 10507-13121/demo E/MediaCodec: Codec reported an error. (omx error 0x80001001, internalError -19) 09-13 15:31:40.016 10507-13127/demo E/IJKMEDIA: configure 0x1d900666 0x1d700682 09-13 15:31:40.076 10507-13040/demo E/IJKMEDIA: SDL_AMediaCodecJava_releaseOutputBuffer: releaseOutputBuffer 09-13 15:31:40.076 10507-13040/demo E/IJKMEDIA: donghao release output_buffer failed 09-13 15:31:40.076 10507-13040/demo E/IJKMEDIA: SDL_VoutOverlayAMediaCodec_releaseFrame: SDL_AMediaCodec_releaseOutputBuffer: failed (-10000) 09-13 15:31:40.136 10507-13040/demo E/IJKMEDIA: SDL_AMediaCodecJava_releaseOutputBuffer: releaseOutputBuffer 09-13 15:31:40.136 10507-13040/demo E/IJKMEDIA: donghao release output_buffer failed 09-13 15:31:40.136 10507-13040/demo E/IJKMEDIA: SDL_VoutOverlayAMediaCodec_releaseFrame: SDL_AMediaCodec_releaseOutputBuffer: failed (-10000) 09-13 15:31:40.706 10507-10507/demo E/bufff: buf...4 09-13 15:31:41.876 10507-10507/demo E/bufff: buf...4 09-13 15:31:43.316 10507-10507/demo E/bufff: buf...5 09-13 15:31:43.846 10507-10507/demo E/bufff: buf...6 09-13 15:31:44.336 10507-10507/demo E/bufff: buf...7 09-13 15:31:44.856 10507-10507/demo E/bufff: buf...7 09-13 15:31:45.386 10507-10507/demo E/bufff: buf...7 09-13 15:31:45.926 10507-10507/demo E/bufff: buf...8 09-13 15:31:46.416 10507-10507/demo E/bufff: buf...8 09-13 15:31:46.926 10507-10507/demo E/bufff: buf...9 09-13 15:31:47.456 10507-10507/demo E/bufff: buf...9 09-13 15:31:47.996 10507-10507/demo E/bufff: buf...9 09-13 15:31:48.516 10507-10507/demo E/bufff: buf...9 09-13 15:31:49.016 10507-10507/demo E/bufff: buf...10 09-13 15:31:49.546 10507-10507/demo E/bufff: buf...10 09-13 15:31:50.066 10507-10507/demo E/bufff: buf...11 09-13 15:31:50.586 10507-10507/demo E/bufff: buf...11 09-13 15:31:52.276 10507-10507/demo E/bufff: buf...11 09-13 15:31:52.916 10507-10507/demo E/bufff: buf...12 09-13 15:31:53.446 10507-10507/demo E/bufff: buf...13 09-13 15:31:53.996 10507-10507/demo E/bufff: buf...13 09-13 15:31:54.506 10507-10507/demo E/bufff: buf...13 09-13 15:31:55.016 10507-10507/demo E/bufff: buf...14 09-13 15:31:55.156 10507-13127/demo E/IJKMEDIA: SDL_AMediaCodecJava_dequeueInputBuffer: dequeueInputBuffer failed 09-13 15:31:55.226 10507-10507/demo E/IJKMEDIA: SDL_AMediaCodecJava_releaseOutputBuffer: releaseOutputBuffer 09-13 15:31:55.226 10507-10507/demo E/IJKMEDIA: donghao release output_buffer failed 09-13 15:31:55.226 10507-10507/demo E/IJKMEDIA: SDL_Overlay(ffmpeg): overlay_free_l(0x78db3760) 09-13 15:31:55.226 10507-10507/demo E/IJKMEDIA: SDL_Overlay(ffmpeg): overlay_free_l(0x7a8fc010) 09-13 15:31:55.226 10507-10507/demo E/IJKMEDIA: SDL_AMediaCodecJava_releaseOutputBuffer: releaseOutputBuffer 09-13 15:31:55.226 10507-10507/demo E/IJKMEDIA: donghao release output_buffer failed 09-13 15:31:55.226 10507-10507/demo E/IJKMEDIA: SDL_Overlay(ffmpeg): overlay_free_l(0x7841e2b0) 09-13 15:31:55.536 10507-13601/demo E/IJKMEDIA: Option http-detect-range-support not found. 09-13 15:31:55.616 10507-13601/demo E/IJKMEDIA: csd-0[39]: 00000001 09-13 15:31:55.616 10507-13601/demo E/IJKMEDIA: csd-0[39]: 6764001e 09-13 15:31:55.616 10507-13601/demo E/IJKMEDIA: csd-0[39]: acd941e0 09-13 15:31:55.616 10507-13601/demo E/IJKMEDIA: csd-0[39]: bfe5c044 09-13 15:31:55.616 10507-13601/demo E/IJKMEDIA: csd-0[39]: 00000300 09-13 15:31:55.616 10507-13601/demo E/IJKMEDIA: csd-0[39]: 04000003 09-13 15:31:55.616 10507-13601/demo E/IJKMEDIA: csd-0[39]: 00f03c58 09-13 15:31:55.616 10507-13601/demo E/IJKMEDIA: csd-0[39]: b6580000 09-13 15:31:55.616 10507-13601/demo E/IJKMEDIA: csd-0[39]: 000168eb 09-13 15:31:55.616 10507-13601/demo E/IJKMEDIA: csd-0[39]: e2f2c000 09-13 15:31:55.646 10507-13601/demo E/OMXMaster: A component of name 'OMX.qcom.audio.decoder.aac' already exists, ignoring this one. 09-13 15:31:55.646 10507-13601/demo E/OMXNodeInstance: OMX_GetExtensionIndex OMX.google.android.index.storeMetaDataInBuffers failed 09-13 15:31:55.696 10507-13601/demo E/IJKMEDIA: configure 0x1db00632 0x1da0067a 09-13 15:31:55.786 10507-13600/demo E/IJKMEDIA: yanzhao FFP_MSG_FIRST_SHOW_PIC 09-13 15:31:56.236 10507-10507/demo E/bufff: buf...1 09-13 15:31:56.676 10507-13600/demo E/IJKMEDIA: voud_display_overlay_l: NULL native_window 09-13 15:31:56.686 10507-13600/demo E/IJKMEDIA: voud_display_overlay_l: NULL native_window 09-13 15:31:56.696 10507-13600/demo E/IJKMEDIA: voud_display_overlay_l: NULL native_window 09-13 15:31:56.706 10507-13600/demo E/IJKMEDIA: voud_display_overlay_l: NULL native_window 09-13 15:31:56.706 10507-13600/demo E/IJKMEDIA: SDL_AMediaCodecJava_releaseOutputBuffer: releaseOutputBuffer 09-13 15:31:56.706 10507-13600/demo E/IJKMEDIA: donghao release output_buffer failed 09-13 15:31:56.706 10507-13644/demo E/IJKMEDIA: configure 0x1db00632 0x1da0067a 09-13 15:31:56.726 10507-13637/demo E/BufferQueue: [unnamed-10507-13] query: BufferQueue has been abandoned! 09-13 15:31:56.726 10507-13637/demo E/ACodec: NATIVE_WINDOW_MIN_UNDEQUEUED_BUFFERS query failed: No such device (19) 09-13 15:31:56.726 10507-13637/demo E/ACodec: Failed to allocate buffers after transitioning to IDLE state (error 0xffffffed) 09-13 15:31:56.726 10507-13636/demo E/MediaCodec: Codec reported an error. (omx error 0x80001001, internalError -19) 09-13 15:31:56.726 10507-13644/demo E/IJKMEDIA: SDL_AMediaCodecJava_start: start failed 09-13 15:31:56.736 10507-13600/demo E/IJKMEDIA: voud_display_overlay_l: NULL native_window 09-13 15:31:56.736 10507-13600/demo E/IJKMEDIA: SDL_AMediaCodecJava_releaseOutputBuffer: releaseOutputBuffer 09-13 15:31:56.736 10507-13600/demo E/IJKMEDIA: donghao release output_buffer failed

xunmengyoufeng commented 8 years ago

通过打log发现进入函数后,就没出来,感觉像是死锁了,具体原因和解决方法还不清楚 static void stream_close(VideoState is) { / XXX: use a special url_shutdown call to abort parse cleanly */ is->abort_request = 1; ALOGI("donghao before SDL_WaitThread"); SDL_WaitThread(is->read_tid, NULL); ALOGI("donghao after SDL_WaitThread"); packet_queue_destroy(&is->videoq); packet_queue_destroy(&is->audioq); packet_queue_destroy(&is->subtitleq);

/* free all pictures */
frame_queue_destory(&is->pictq);
frame_queue_destory(&is->sampq);
frame_queue_destory(&is->subpq);
SDL_DestroyCond(is->continue_read_thread);

if !CONFIG_AVFILTER

sws_freeContext(is->img_convert_ctx);

endif

av_free(is);

}