Commit e694bdf4 authored by Rémi Denis-Courmont's avatar 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.
(cherry picked from commit 092e8242e786dfef3568dabd654e3d886c7534f3)
parent 88a67f9e
...@@ -2296,6 +2296,8 @@ static aout_buffer_t *aout_new_buffer( decoder_t *p_dec, int i_samples ) ...@@ -2296,6 +2296,8 @@ static aout_buffer_t *aout_new_buffer( decoder_t *p_dec, int i_samples )
p_owner->p_aout = p_aout; p_owner->p_aout = p_aout;
DecoderUpdateFormatLocked( p_dec ); 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 ); vlc_mutex_unlock( &p_owner->lock );
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment