On Tue, 7 Mar 2017 16:01:58 +0700 Muhammad Faiz <[email protected]> wrote:
> use ff_thread_once > > Suggested-by: wm4 <[email protected]> > Signed-off-by: Muhammad Faiz <[email protected]> > --- > libavcodec/allcodecs.c | 16 +++++++++------- > 1 file changed, 9 insertions(+), 7 deletions(-) > > diff --git a/libavcodec/allcodecs.c b/libavcodec/allcodecs.c > index eee322b..6ec7e79 100644 > --- a/libavcodec/allcodecs.c > +++ b/libavcodec/allcodecs.c > @@ -25,6 +25,7 @@ > */ > > #include "config.h" > +#include "libavutil/thread.h" > #include "avcodec.h" > #include "version.h" > > @@ -58,14 +59,8 @@ > av_register_codec_parser(&ff_##x##_parser); \ > } > > -void avcodec_register_all(void) > +static void register_all(void) > { > - static int initialized; > - > - if (initialized) > - return; > - initialized = 1; > - > /* hardware accelerators */ > REGISTER_HWACCEL(H263_VAAPI, h263_vaapi); > REGISTER_HWACCEL(H263_VIDEOTOOLBOX, h263_videotoolbox); > @@ -717,3 +712,10 @@ void avcodec_register_all(void) > REGISTER_PARSER(VP9, vp9); > REGISTER_PARSER(XMA, xma); > } > + > +void avcodec_register_all(void) > +{ > + static AVOnce control = AV_ONCE_INIT; > + > + ff_thread_once(&control, register_all); > +} Looks all good to me. Of course this doesn't change that the thread-safety of this whole "list of components" code is still questionable, but it doesn't hurt to do this either. _______________________________________________ ffmpeg-devel mailing list [email protected] http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
