mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-01-20 22:28:22 +00:00
avviddec: Unlock video decoder stream lock temporarily while finishing frames
Temporarily release the video decoder stream lock so that other threads can continue decoding (e.g. call get_frame()) while data is being pushed downstream. At this point it is locked twice, we release one, and then the base class releases the last one just before pushing the data. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7584>
This commit is contained in:
parent
cf09100e36
commit
6b18f02339
1 changed files with 7 additions and 0 deletions
|
@ -2092,9 +2092,16 @@ gst_ffmpegviddec_video_frame (GstFFMpegVidDec * ffmpegdec,
|
|||
GST_VIDEO_BUFFER_FLAG_TFF);
|
||||
}
|
||||
}
|
||||
|
||||
/* Temporarily release the video decoder stream lock so that other
|
||||
* threads can continue decoding (e.g. call get_frame()) while data
|
||||
* is being pushed downstream.
|
||||
*/
|
||||
GST_VIDEO_DECODER_STREAM_UNLOCK (ffmpegdec);
|
||||
*ret =
|
||||
gst_video_decoder_finish_frame (GST_VIDEO_DECODER (ffmpegdec),
|
||||
output_frame);
|
||||
GST_VIDEO_DECODER_STREAM_LOCK (ffmpegdec);
|
||||
|
||||
beach:
|
||||
GST_DEBUG_OBJECT (ffmpegdec, "return flow %s, got frame: %d",
|
||||
|
|
Loading…
Reference in a new issue