X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavformat%2Fallformats.c;h=09e62c3cfc9942a16a84b998b840b4257eeeffdc;hb=822f1a7913da31760a9f15f49013b3446b3f6a5b;hp=9c1f6dd92389a80cc68923552df686237e681902;hpb=45ff6ef50e2ada0c473ee662f84957186e06a232;p=ffmpeg diff --git a/libavformat/allformats.c b/libavformat/allformats.c index 9c1f6dd9238..09e62c3cfc9 100644 --- a/libavformat/allformats.c +++ b/libavformat/allformats.c @@ -19,6 +19,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "libavutil/thread.h" #include "avformat.h" #include "rtp.h" #include "rdt.h" @@ -41,13 +42,8 @@ #define REGISTER_MUXDEMUX(X, x) REGISTER_MUXER(X, x); REGISTER_DEMUXER(X, x) -void av_register_all(void) +static void register_all(void) { - static int initialized; - - if (initialized) - return; - avcodec_register_all(); /* (de)muxers */ @@ -273,7 +269,7 @@ void av_register_all(void) REGISTER_DEMUXER (SAMI, sami); REGISTER_MUXDEMUX(SAP, sap); REGISTER_DEMUXER (SBG, sbg); - REGISTER_DEMUXER (SCC, scc); + REGISTER_MUXDEMUX(SCC, scc); REGISTER_DEMUXER (SDP, sdp); REGISTER_DEMUXER (SDR2, sdr2); REGISTER_DEMUXER (SDS, sds); @@ -376,6 +372,7 @@ void av_register_all(void) REGISTER_DEMUXER (IMAGE_SUNRAST_PIPE, image_sunrast_pipe); REGISTER_DEMUXER (IMAGE_TIFF_PIPE, image_tiff_pipe); REGISTER_DEMUXER (IMAGE_WEBP_PIPE, image_webp_pipe); + REGISTER_DEMUXER (IMAGE_XPM_PIPE, image_xpm_pipe); /* external libraries */ REGISTER_MUXER (CHROMAPRINT, chromaprint); @@ -383,6 +380,11 @@ void av_register_all(void) REGISTER_DEMUXER (LIBMODPLUG, libmodplug); REGISTER_MUXDEMUX(LIBNUT, libnut); REGISTER_DEMUXER (LIBOPENMPT, libopenmpt); +} + +void av_register_all(void) +{ + AVOnce control = AV_ONCE_INIT; - initialized = 1; + ff_thread_once(&control, register_all); }