From d6f85ec2700e40b3ec864d5ee405b7e257778e1f Mon Sep 17 00:00:00 2001 From: Matt Oliver Date: Mon, 31 Oct 2016 14:30:43 +1100 Subject: avformat/avisynth.c: Use new safe dlopen code. Signed-off-by: Matt Oliver --- configure | 9 ++++----- libavformat/Makefile | 2 +- libavformat/avisynth.c | 14 +++++--------- 3 files changed, 10 insertions(+), 15 deletions(-) diff --git a/configure b/configure index d2ab550022..87b06f1c5a 100755 --- a/configure +++ b/configure @@ -2753,6 +2753,9 @@ ac3_at_decoder_select="ac3_parser" adpcm_ima_qt_at_decoder_deps="audiotoolbox" alac_at_decoder_deps="audiotoolbox" amr_nb_at_decoder_deps="audiotoolbox" +avisynth_deps_any="dlopen LoadLibrary" +avisynth_demuxer_deps="avisynth" +avisynth_demuxer_select="riffdec" eac3_at_decoder_deps="audiotoolbox" eac3_at_decoder_select="ac3_parser" gsm_ms_at_decoder_deps="audiotoolbox" @@ -2846,8 +2849,6 @@ asf_muxer_select="riffenc" asf_stream_muxer_select="asf_muxer" avi_demuxer_select="iso_media riffdec exif" avi_muxer_select="riffenc" -avisynth_demuxer_deps="avisynth" -avisynth_demuxer_select="riffdec" caf_demuxer_select="iso_media riffdec" dash_muxer_select="mp4_muxer" dirac_demuxer_select="dirac_parser" @@ -5414,6 +5415,7 @@ elif check_func dlopen -ldl && check_func dlsym -ldl; then ldl=-ldl fi +avisynth_demuxer_extralibs='$ldl' decklink_outdev_extralibs="$decklink_outdev_extralibs $ldl" decklink_indev_extralibs="$decklink_indev_extralibs $ldl" frei0r_filter_extralibs='$ldl' @@ -5661,9 +5663,6 @@ fi enabled avfoundation_indev && { check_header_objcc AVFoundation/AVFoundation.h || disable avfoundation_indev; } enabled avfoundation_indev && { check_lib2 CoreGraphics/CoreGraphics.h CGGetActiveDisplayList -framework CoreGraphics || check_lib2 ApplicationServices/ApplicationServices.h CGGetActiveDisplayList -framework ApplicationServices; } -enabled avisynth && { { check_lib2 "windows.h" LoadLibrary; } || - { check_lib2 "dlfcn.h" dlopen -ldl; } || - die "ERROR: LoadLibrary/dlopen not found for avisynth"; } enabled cuda && { check_lib cuda.h cuInit -lcuda || die "ERROR: CUDA not found"; } enabled cuvid && { add_cflags -I$source_path; diff --git a/libavformat/Makefile b/libavformat/Makefile index 5d827d3148..c9defe7517 100644 --- a/libavformat/Makefile +++ b/libavformat/Makefile @@ -106,7 +106,7 @@ OBJS-$(CONFIG_AU_DEMUXER) += au.o pcm.o OBJS-$(CONFIG_AU_MUXER) += au.o rawenc.o OBJS-$(CONFIG_AVI_DEMUXER) += avidec.o OBJS-$(CONFIG_AVI_MUXER) += avienc.o mpegtsenc.o avlanguage.o rawutils.o -OBJS-$(CONFIG_AVISYNTH) += avisynth.o +OBJS-$(CONFIG_AVISYNTH_DEMUXER) += avisynth.o OBJS-$(CONFIG_AVM2_MUXER) += swfenc.o swf.o OBJS-$(CONFIG_AVR_DEMUXER) += avr.o pcm.o OBJS-$(CONFIG_AVS_DEMUXER) += avs.o voc_packet.o vocdec.o voc.o diff --git a/libavformat/avisynth.c b/libavformat/avisynth.c index 1acc44f4c5..514cb99f49 100644 --- a/libavformat/avisynth.c +++ b/libavformat/avisynth.c @@ -29,7 +29,7 @@ /* Platform-specific directives for AviSynth vs AvxSynth. */ #ifdef _WIN32 - #include + #include "compat/w32dlfcn.h" #undef EXTERN_C #include "compat/avisynth/avisynth_c.h" #define AVISYNTH_LIB "avisynth" @@ -39,10 +39,6 @@ #include "compat/avisynth/avxsynth_c.h" #define AVISYNTH_NAME "libavxsynth" #define AVISYNTH_LIB AVISYNTH_NAME SLIBSUF - - #define LoadLibrary(x) dlopen(x, RTLD_NOW | RTLD_LOCAL) - #define GetProcAddress dlsym - #define FreeLibrary dlclose #endif typedef struct AviSynthLibrary { @@ -118,13 +114,13 @@ static av_cold void avisynth_atexit_handler(void); static av_cold int avisynth_load_library(void) { - avs_library.library = LoadLibrary(AVISYNTH_LIB); + avs_library.library = dlopen(AVISYNTH_LIB, RTLD_NOW | RTLD_LOCAL); if (!avs_library.library) return AVERROR_UNKNOWN; #define LOAD_AVS_FUNC(name, continue_on_fail) \ avs_library.name = \ - (void *)GetProcAddress(avs_library.library, #name); \ + (void *)dlsym(avs_library.library, #name); \ if (!continue_on_fail && !avs_library.name) \ goto fail; @@ -157,7 +153,7 @@ static av_cold int avisynth_load_library(void) return 0; fail: - FreeLibrary(avs_library.library); + dlclose(avs_library.library); return AVERROR_UNKNOWN; } @@ -225,7 +221,7 @@ static av_cold void avisynth_atexit_handler(void) avisynth_context_destroy(avs); avs = next; } - FreeLibrary(avs_library.library); + dlclose(avs_library.library); avs_atexit_called = 1; } -- cgit v1.2.3