You've already forked FFmpeg
mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-08-10 06:10:52 +02:00
avformat/avisynth.c: Use new safe dlopen code.
Signed-off-by: Matt Oliver <protogonoi@gmail.com>
This commit is contained in:
9
configure
vendored
9
configure
vendored
@@ -2753,6 +2753,9 @@ ac3_at_decoder_select="ac3_parser"
|
|||||||
adpcm_ima_qt_at_decoder_deps="audiotoolbox"
|
adpcm_ima_qt_at_decoder_deps="audiotoolbox"
|
||||||
alac_at_decoder_deps="audiotoolbox"
|
alac_at_decoder_deps="audiotoolbox"
|
||||||
amr_nb_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_deps="audiotoolbox"
|
||||||
eac3_at_decoder_select="ac3_parser"
|
eac3_at_decoder_select="ac3_parser"
|
||||||
gsm_ms_at_decoder_deps="audiotoolbox"
|
gsm_ms_at_decoder_deps="audiotoolbox"
|
||||||
@@ -2846,8 +2849,6 @@ asf_muxer_select="riffenc"
|
|||||||
asf_stream_muxer_select="asf_muxer"
|
asf_stream_muxer_select="asf_muxer"
|
||||||
avi_demuxer_select="iso_media riffdec exif"
|
avi_demuxer_select="iso_media riffdec exif"
|
||||||
avi_muxer_select="riffenc"
|
avi_muxer_select="riffenc"
|
||||||
avisynth_demuxer_deps="avisynth"
|
|
||||||
avisynth_demuxer_select="riffdec"
|
|
||||||
caf_demuxer_select="iso_media riffdec"
|
caf_demuxer_select="iso_media riffdec"
|
||||||
dash_muxer_select="mp4_muxer"
|
dash_muxer_select="mp4_muxer"
|
||||||
dirac_demuxer_select="dirac_parser"
|
dirac_demuxer_select="dirac_parser"
|
||||||
@@ -5414,6 +5415,7 @@ elif check_func dlopen -ldl && check_func dlsym -ldl; then
|
|||||||
ldl=-ldl
|
ldl=-ldl
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
avisynth_demuxer_extralibs='$ldl'
|
||||||
decklink_outdev_extralibs="$decklink_outdev_extralibs $ldl"
|
decklink_outdev_extralibs="$decklink_outdev_extralibs $ldl"
|
||||||
decklink_indev_extralibs="$decklink_indev_extralibs $ldl"
|
decklink_indev_extralibs="$decklink_indev_extralibs $ldl"
|
||||||
frei0r_filter_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_header_objcc AVFoundation/AVFoundation.h || disable avfoundation_indev; }
|
||||||
enabled avfoundation_indev && { check_lib2 CoreGraphics/CoreGraphics.h CGGetActiveDisplayList -framework CoreGraphics ||
|
enabled avfoundation_indev && { check_lib2 CoreGraphics/CoreGraphics.h CGGetActiveDisplayList -framework CoreGraphics ||
|
||||||
check_lib2 ApplicationServices/ApplicationServices.h CGGetActiveDisplayList -framework ApplicationServices; }
|
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 ||
|
enabled cuda && { check_lib cuda.h cuInit -lcuda ||
|
||||||
die "ERROR: CUDA not found"; }
|
die "ERROR: CUDA not found"; }
|
||||||
enabled cuvid && { add_cflags -I$source_path;
|
enabled cuvid && { add_cflags -I$source_path;
|
||||||
|
@@ -106,7 +106,7 @@ OBJS-$(CONFIG_AU_DEMUXER) += au.o pcm.o
|
|||||||
OBJS-$(CONFIG_AU_MUXER) += au.o rawenc.o
|
OBJS-$(CONFIG_AU_MUXER) += au.o rawenc.o
|
||||||
OBJS-$(CONFIG_AVI_DEMUXER) += avidec.o
|
OBJS-$(CONFIG_AVI_DEMUXER) += avidec.o
|
||||||
OBJS-$(CONFIG_AVI_MUXER) += avienc.o mpegtsenc.o avlanguage.o rawutils.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_AVM2_MUXER) += swfenc.o swf.o
|
||||||
OBJS-$(CONFIG_AVR_DEMUXER) += avr.o pcm.o
|
OBJS-$(CONFIG_AVR_DEMUXER) += avr.o pcm.o
|
||||||
OBJS-$(CONFIG_AVS_DEMUXER) += avs.o voc_packet.o vocdec.o voc.o
|
OBJS-$(CONFIG_AVS_DEMUXER) += avs.o voc_packet.o vocdec.o voc.o
|
||||||
|
@@ -29,7 +29,7 @@
|
|||||||
|
|
||||||
/* Platform-specific directives for AviSynth vs AvxSynth. */
|
/* Platform-specific directives for AviSynth vs AvxSynth. */
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
#include <windows.h>
|
#include "compat/w32dlfcn.h"
|
||||||
#undef EXTERN_C
|
#undef EXTERN_C
|
||||||
#include "compat/avisynth/avisynth_c.h"
|
#include "compat/avisynth/avisynth_c.h"
|
||||||
#define AVISYNTH_LIB "avisynth"
|
#define AVISYNTH_LIB "avisynth"
|
||||||
@@ -39,10 +39,6 @@
|
|||||||
#include "compat/avisynth/avxsynth_c.h"
|
#include "compat/avisynth/avxsynth_c.h"
|
||||||
#define AVISYNTH_NAME "libavxsynth"
|
#define AVISYNTH_NAME "libavxsynth"
|
||||||
#define AVISYNTH_LIB AVISYNTH_NAME SLIBSUF
|
#define AVISYNTH_LIB AVISYNTH_NAME SLIBSUF
|
||||||
|
|
||||||
#define LoadLibrary(x) dlopen(x, RTLD_NOW | RTLD_LOCAL)
|
|
||||||
#define GetProcAddress dlsym
|
|
||||||
#define FreeLibrary dlclose
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
typedef struct AviSynthLibrary {
|
typedef struct AviSynthLibrary {
|
||||||
@@ -118,13 +114,13 @@ static av_cold void avisynth_atexit_handler(void);
|
|||||||
|
|
||||||
static av_cold int avisynth_load_library(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)
|
if (!avs_library.library)
|
||||||
return AVERROR_UNKNOWN;
|
return AVERROR_UNKNOWN;
|
||||||
|
|
||||||
#define LOAD_AVS_FUNC(name, continue_on_fail) \
|
#define LOAD_AVS_FUNC(name, continue_on_fail) \
|
||||||
avs_library.name = \
|
avs_library.name = \
|
||||||
(void *)GetProcAddress(avs_library.library, #name); \
|
(void *)dlsym(avs_library.library, #name); \
|
||||||
if (!continue_on_fail && !avs_library.name) \
|
if (!continue_on_fail && !avs_library.name) \
|
||||||
goto fail;
|
goto fail;
|
||||||
|
|
||||||
@@ -157,7 +153,7 @@ static av_cold int avisynth_load_library(void)
|
|||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
fail:
|
fail:
|
||||||
FreeLibrary(avs_library.library);
|
dlclose(avs_library.library);
|
||||||
return AVERROR_UNKNOWN;
|
return AVERROR_UNKNOWN;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -225,7 +221,7 @@ static av_cold void avisynth_atexit_handler(void)
|
|||||||
avisynth_context_destroy(avs);
|
avisynth_context_destroy(avs);
|
||||||
avs = next;
|
avs = next;
|
||||||
}
|
}
|
||||||
FreeLibrary(avs_library.library);
|
dlclose(avs_library.library);
|
||||||
|
|
||||||
avs_atexit_called = 1;
|
avs_atexit_called = 1;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user