[vlc-devel] [PATCH] decoder: unblock broken decoders when flushing

Thomas Guillem tom at gllm.fr
Mon Oct 27 14:25:24 CET 2014


On Mon, Oct 27, 2014, at 13:54, Rémi Denis-Courmont wrote:
> Le 2014-10-27 14:41, Thomas Guillem a écrit :
> > MediaCodec or iomx with direct rendering can be stuck waiting for an 
> > output
> > buffer when video is paused since output buffers are released by 
> > vout.
> 
> That is pretty much the correct behaviour. If you cannot yet obtain a 
> picture buffer to decode into, you can only wait or discard the picture. 
> If exiting or flushing, then discarding the picture might be best, but 
> somewhat obviously not when paused. Futhermore, picture buffer 
> references must be retained during pause so that the decoder can resume 
> properly. There are no warranties that we are on the edge of a group of 
> picture or whatever it is called.
> 
> The same goes for audio. If blocks were dropped during pause, there 
> would be a gap on resume, and likely audible glitches due to resampling.
> 
> (...)
> > This previous hack didn't fix a deadlock when video was flushed on 
> > pause.
> 
> There is no flush on pause to begin with, at least not in 
> decoder.c:input_DecoderChangePause(). Flushing on pause would be wrong 
> in many ways, notably as above.

Sorry, I was not clear enough: the deadlock happens when you seek a
paused video. So there is a flush in that case, even if the video is
paused, right ?

> 
> If, hypothetically, some component flushes on pause upstream of the 
> decoder, then that component needs fixing.
> 
> -- 
> Rémi Denis-Courmont
> _______________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> https://mailman.videolan.org/listinfo/vlc-devel



More information about the vlc-devel mailing list