amcvideodec: deadlock while flushing happen at same time with drain
Gstreamer version : 1.16.2
platform : android sdk:28 CPU:armv7
how it happens : when you seek accurate multiple time in the end section of video (of course that you must use H/W decoder) and when it happens ,player freezes without any errors
log with amcvideodec:6 :
gstamcvideodec.c:1178:_amc_gl_possibly_wait_for_gl_sync gl_sync 0xe4516030 unsuccessfully waited for frame 2309 gstamcvideodec.c:1126:_gl_sync_render_unlocked gl_sync 0xe4516030 successfully updated SurfaceTexture 0xc678f708 int gstamcvideodec.c:938:_gl_sync_release_buffer gl_sync 0xe45167e0 possible 'on_frame_available' listener miss detected gstamcvideodec.c:1178:_amc_gl_possibly_wait_for_gl_sync gl_sync 0xe45167e0 unsuccessfully waited for frame 2310 gstamcvideodec.c:1126:_gl_sync_render_unlocked gl_sync 0xe45167e0 successfully updated SurfaceTexture 0xc678f708 int gstamcvideodec.c:1610:gst_amc_video_dec_loop:<amcvideodec-omxexynosavcdec0> Finished frame: flushing gstamcvideodec.c:1688:gst_amc_video_dec_loop:<amcvideodec-omxexynosavcdec0> Flushing -- stopping task gstamcvideodec.c:2461:gst_amc_video_dec_drain:<amcvideodec-omxexynosavcdec0> Waiting until codec is drained
The last three lines always happen And only one line is sometimes added for example:
gstamcvideodec.c:1610:gst_amc_video_dec_loop:<amcvideodec-omxexynosavcdec0> Finished frame: flushing gstamcvideodec.c:1688:gst_amc_video_dec_loop:<amcvideodec-omxexynosavcdec0> Flushing -- stopping task gstamcvideodec.c:2416:gst_amc_video_dec_drain:<amcvideodec-omxexynosavcdec0> Draining codec gstamcvideodec.c:2461:gst_amc_video_dec_drain:<amcvideodec-omxexynosavcdec0> Waiting until codec is drained