[vlc-devel] [RFC PATCH 4/4] avocodec: flush buffers in case of mt

Thomas Guillem thomas at gllm.fr
Tue Nov 17 16:47:39 CET 2015



On Tue, Nov 17, 2015, at 16:40, Rémi Denis-Courmont wrote:
> Le 2015-11-17 18:16, Thomas Guillem a écrit :
> > The NOTE in comment is not good with multi-threading activated.
> > Indeed, after a
> > flush, when mt was on, pf_decode could return old pictures from 
> > before the
> > flush.
> > ---
> >  modules/codec/avcodec/video.c | 12 ++++++------
> >  1 file changed, 6 insertions(+), 6 deletions(-)
> >
> > diff --git a/modules/codec/avcodec/video.c 
> > b/modules/codec/avcodec/video.c
> > index 1b98c5c..0a7a4b6 100644
> > --- a/modules/codec/avcodec/video.c
> > +++ b/modules/codec/avcodec/video.c
> > @@ -533,17 +533,17 @@ static picture_t *DecodeVideo( decoder_t
> > *p_dec, block_t **pp_block )
> >              p_sys->i_pts = VLC_TS_INVALID; /* To make sure we
> > recover properly */
> >
> >              p_sys->i_late_frames = 0;
> > -#if 0
> > -            /* NOTE: data is good only the timeline changed so do
> > not flush decoder */
> > -            post_mt( p_sys );
> > -            if( p_block->i_flags & BLOCK_FLAG_DISCONTINUITY )
> > +            /* NOTE: when using one thread, data is good, only the 
> > timeline
> > +             * changed so do not flush decoder */
> > +            if( p_block->i_flags & BLOCK_FLAG_DISCONTINUITY
> > +             && p_context->thread_count > 1 )
> 
> Confusing flush and discontinuity. This may cause terrible results on 
> DVB or UDP.

Yes, that's why we would need a pf_flush in decoder too.


> 
> >              {
> > +                post_mt( p_sys );
> >                  p_sys->b_flushing_buffers = true;
> >                  avcodec_flush_buffers( p_context );
> >                  p_sys->b_flushing_buffers = false;
> > +                wait_mt( p_sys );
> >              }
> > -            wait_mt( p_sys );
> > -#endif
> >              if( p_block->i_flags & BLOCK_FLAG_CORRUPTED )
> >              {
> >                  block_Release( p_block );
> 
> -- 
> Rémi Denis-Courmont
> http://www.remlab.net/
> _______________________________________________
> 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