[vlc-devel] [RFC PATCH 0/4] decoder: close, pause, seek and deadlocks

Thomas Guillem thomas at gllm.fr
Tue Nov 17 16:16:31 CET 2015


Currently, DecoderThread will deadlock in DecoderWaitUnblock if
input_DecoderFlush is called while es_out is buffering.

After some try to fix this issue, I found the following TODO in decoder.c:

/* Owner is supposed to wait for flush to complete.
 * TODO: It might be possible to remove this restriction. */

So, I tried to remove this restriction: make input_DecoderFlush non blocking.

I expected a lot of regressions, I tested my patches on Dekstop, android, and
tizen ports with or without avcodec. I only found a flush issue when using
avcodec with mt (cf. last patch, the third patch is not a regression from the 2
first patches).

Best,
Thomas

Thomas Guillem (4):
  decoder: don't wait for flush to complete
  decoder: don't wait if paused
  avocodec: fix deadlock when closing with mt
  avocodec: flush buffers in case of mt

 modules/codec/avcodec/video.c | 26 ++++++++++++++++++++------
 src/input/decoder.c           | 36 ++++++++----------------------------
 2 files changed, 28 insertions(+), 34 deletions(-)

-- 
2.1.4



More information about the vlc-devel mailing list