[vlc-devel] [PATCH 2/2] decoder: fix input_DecoderWait deadlock
Rémi Denis-Courmont
remi at remlab.net
Tue Dec 15 10:46:56 CET 2015
Le 2015-12-11 15:17, Thomas Guillem a écrit :
> I don't feely ready to get rid of input_DecoderWait and rewrite
> es_out, at
> least, not for 3.0.
So you are giving up on asynchronous decoding then?
input_DecoderWait() waits for the decoder thread to output some decoded
content. There is a corner case whereby the decoder thread drains its
entire input FIFO without outputting anything. In that case,
input_DecoderWait() would deadlock. So it gets short-circuited. There is
currently a race condition in this exact situation. It can lead to the
deadlock that you are trying to address.
With the new asynchronous decoding, the "corner case" becomes the norm.
The decoder thread never outputs anything, and the decoded content comes
from other private threads of the decoder plugin at an arbitrary point
in time. input_DecoderWait() gets short-circuited all the time. In other
words, it does not work.
So the questions are:
1) Is input_DecoderWait() useful anymore?
2) If so, how do you fix it the empty FIFO case? Especially
asynchronous decoding.
3) If not so, is it not much easier to remove input_DecoderWait()?
--
Rémi Denis-Courmont
http://www.remlab.net/
More information about the vlc-devel
mailing list