[vlc-devel] [PATCH 2/2] es_out: really update fmt on ES_OUT_SET_ES_FMT
Rémi Denis-Courmont
remi at remlab.net
Wed Jun 17 19:12:40 CEST 2015
Le mercredi 17 juin 2015, 18:46:47 Francois Cartegnie a écrit :
> Le 16/06/2015 20:06, Rémi Denis-Courmont a écrit :
> > Le 2015-06-16 19:24, Francois Cartegnie a écrit :
> >> We want to update format and decoder without having to
> >> es_out_Add/es_out_Del which would alter id and selected state.
> >
> > Looks OK. I fear this might expose some interesting side effects or
> > unimplemented corner cases though.
>
> Doesn't behave well for me with large buffers.
>
> Is there a safe way to guarantee that the previous decoder consumes the
> es before deletion ?
You can kick draining with input_DecoderDrain() and poll for completion with
input_DecoderIsEmpty(). We could add a cleaner function to drain and wait for
completion.
But doing that will probably be even worse: If you wait for decoder draining
completion, you will create the new decoder too late to buffer. Plus, you will
block the whole input thread in the mean time, so it will probably also affect
other elementary streams.
You would instead need both old and new decoders running at the same time, so
that you can switch with glitch. That would have a major impact on the audio
and video outputs though.
--
Rémi Denis-Courmont
http://www.remlab.net/
More information about the vlc-devel
mailing list