es_out: ask for decoder drain on es_out_Del
authorFrancois Cartegnie <fcvlcdev@free.fr>
Fri, 28 Jul 2017 13:04:48 +0000 (15:04 +0200)
committerFrancois Cartegnie <fcvlcdev@free.fr>
Mon, 31 Jul 2017 16:23:09 +0000 (18:23 +0200)
because when the es deletion is triggered by
demuxer and not on EOF, it enters a dead loop
waiting for input_DecoderIsEmpty (p_owner->drained).
non set p_owner->draining can't trigger p_owner->drained.

src/input/es_out.c

index 6a2e1cd..1e191d8 100644 (file)
@@ -2114,6 +2114,7 @@ static void EsOutDel( es_out_t *out, es_out_id_t *es )
     {   /* FIXME: This might hold the ES output caller (i.e. the demux), and
          * the corresponding thread (typically the input thread), for a little
          * bit too long if the ES is deleted in the middle of a stream. */
+        input_DecoderDrain( es->p_dec );
         while( !input_Stopped(p_sys->p_input) && !p_sys->b_buffering )
         {
             if( input_DecoderIsEmpty( es->p_dec ) &&