[vlc-commits] decoder: flush the vout at exit

Rémi Denis-Courmont git at videolan.org
Sat Nov 28 22:38:30 CET 2015


vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Sat Nov 28 23:31:09 2015 +0200| [09bb02031398361d6cd8868d82295b5e8c3f0bdc] | committer: Rémi Denis-Courmont

decoder: flush the vout at exit

(see comments)

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=09bb02031398361d6cd8868d82295b5e8c3f0bdc
---

 src/input/decoder.c |    8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/src/input/decoder.c b/src/input/decoder.c
index 70f22c2..0f08198 100644
--- a/src/input/decoder.c
+++ b/src/input/decoder.c
@@ -1761,6 +1761,14 @@ void input_DecoderDelete( decoder_t *p_dec )
     vlc_mutex_lock( &p_owner->lock );
     p_owner->b_waiting = false;
     vlc_cond_signal( &p_owner->wait_request );
+
+    /* If the video output is paused or too slow, the decoded picture FIFO may
+     * contain so many picture buffers that the decoder gets stuck waiting for
+     * free buffers. Force all pending pictures in the decoder output FIFO
+     * released to enable decoder forward progress - up to the thread
+     * cancellation. */
+    if( p_owner->p_vout != NULL )
+        vout_Flush( p_owner->p_vout, VLC_TS_INVALID + 1 );
     vlc_mutex_unlock( &p_owner->lock );
 
     vlc_join( p_owner->thread, NULL );



More information about the vlc-commits mailing list