mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-18 20:25:25 +00:00
avviddec: Release stream lock while calling avcodec_decode_video2()
It might call back into us from another thread and try to take the stream lock again, e.g. to allocate a buffer. https://bugzilla.gnome.org/show_bug.cgi?id=726020
This commit is contained in:
parent
172f9c9823
commit
b81cb99d9f
1 changed files with 7 additions and 0 deletions
|
@ -1259,8 +1259,15 @@ gst_ffmpegviddec_video_frame (GstFFMpegVidDec * ffmpegdec,
|
|||
GST_DEBUG_OBJECT (ffmpegdec, "copy pal %p %p", &packet, pal);
|
||||
}
|
||||
|
||||
/* This might call into get_buffer() from another thread,
|
||||
* which would cause a deadlock. Release the lock here
|
||||
* and taking it again later seems safe
|
||||
* See https://bugzilla.gnome.org/show_bug.cgi?id=726020
|
||||
*/
|
||||
GST_VIDEO_DECODER_STREAM_UNLOCK (ffmpegdec);
|
||||
len = avcodec_decode_video2 (ffmpegdec->context,
|
||||
ffmpegdec->picture, have_data, &packet);
|
||||
GST_VIDEO_DECODER_STREAM_LOCK (ffmpegdec);
|
||||
|
||||
GST_DEBUG_OBJECT (ffmpegdec, "after decode: len %d, have_data %d",
|
||||
len, *have_data);
|
||||
|
|
Loading…
Reference in a new issue