• Felix Abecassis's avatar
    input: waiting and flushing states should be mutually exclusive · a1603d9e
    Felix Abecassis authored
    A crash could occur in the following situation:
    1) A video decoder is created and starts waiting for the first picture:
       b_waiting = true, b_first = true
    
    2) The first picture is received but the decoder is still in waiting mode:
       b_waiting = true, b_first = false
    
    3) A second picture is received, the decoder is now waiting in
    DecoderWaitUnblock().
    
    4) From the input thread, an EOF event is received, EsOutChangePosition is
    called and sets the decoder in flushing mode.
    
    5) The decoder thread wakes up and exits DecoderWaitUnblock because
    b_flushing is true. However this triggers the assertion in
    DecoderDecodeVideo since we have b_waiting && !b_first.
    
    Fix #11892, #12041
    a1603d9e
decoder.c 65.8 KB