[vlc-commits] decoder: pause aout at creation in corner case (fix #6369)

Rémi Denis-Courmont git at videolan.org
Sun Mar 11 22:02:59 CET 2012


vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Sun Mar 11 22:58:10 2012 +0200| [092e8242e786dfef3568dabd654e3d886c7534f3] | committer: Rémi Denis-Courmont

decoder: pause aout at creation in corner case (fix #6369)

If pausing the decoder races with setting up the audio output pipeline,
the decoder can end up already paused when the audio output is created.

The audio output insists on a strict start -> (pause -> resume ->)*
(pause ->)? stop series of state transition. So it must be paused
explicitly in this corner case.

I have not investigated whether this problem affects the video output
but this seems very likely too.

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

 src/input/decoder.c |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/src/input/decoder.c b/src/input/decoder.c
index 52b37bd..47f27eb 100644
--- a/src/input/decoder.c
+++ b/src/input/decoder.c
@@ -2256,6 +2256,8 @@ static aout_buffer_t *aout_new_buffer( decoder_t *p_dec, int i_samples )
 
         p_owner->p_aout = p_aout;
         DecoderUpdateFormatLocked( p_dec );
+        if( unlikely(p_owner->b_paused) ) /* fake pause if needed */
+            aout_DecChangePause( p_aout, true, mdate() );
 
         vlc_mutex_unlock( &p_owner->lock );
 



More information about the vlc-commits mailing list