[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