[FFmpeg-cvslog] libavutil: Make avpriv_open a library-internal function on msvcrt
Martin Storsjö
git at videolan.org
Sat Aug 10 10:51:38 CEST 2013
ffmpeg | branch: master | Martin Storsjö <martin at martin.st> | Fri Aug 9 11:06:46 2013 +0300| [e743e7ae6ee7e535c4394bec6fe6650d2b0dbf65] | committer: Martin Storsjö
libavutil: Make avpriv_open a library-internal function on msvcrt
Add one copy of the function into each of the libraries, similarly
to what we do for log2_tab. When using static libs, only one
copy of the file_open.o object file gets included, while when
using shared libraries, each of them get a copy of its own.
This fixes DLL builds with a statically linked C runtime, where
each DLL effectively has got its own instance of the C runtime,
where file descriptors can't be shared across runtimes.
On systems not using msvcrt, the function is not duplicated.
Signed-off-by: Martin Storsjö <martin at martin.st>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=e743e7ae6ee7e535c4394bec6fe6650d2b0dbf65
---
libavcodec/Makefile | 2 ++
libavcodec/file_open.c | 1 +
libavdevice/Makefile | 2 ++
libavdevice/file_open.c | 1 +
libavformat/Makefile | 2 ++
libavformat/file_open.c | 1 +
libavutil/internal.h | 4 ++++
7 files changed, 13 insertions(+)
diff --git a/libavcodec/Makefile b/libavcodec/Makefile
index fc1bfb2..318ed7d 100644
--- a/libavcodec/Makefile
+++ b/libavcodec/Makefile
@@ -26,6 +26,8 @@ OBJS = allcodecs.o \
raw.o \
utils.o \
+OBJS-$(HAVE_MSVCRT) += file_open.o
+
# parts needed for many different codecs
OBJS-$(CONFIG_AANDCTTABLES) += aandcttab.o
OBJS-$(CONFIG_AC3DSP) += ac3dsp.o
diff --git a/libavcodec/file_open.c b/libavcodec/file_open.c
new file mode 100644
index 0000000..494a5d3
--- /dev/null
+++ b/libavcodec/file_open.c
@@ -0,0 +1 @@
+#include "libavutil/file_open.c"
diff --git a/libavdevice/Makefile b/libavdevice/Makefile
index 76d11c1..8fdae2d 100644
--- a/libavdevice/Makefile
+++ b/libavdevice/Makefile
@@ -7,6 +7,8 @@ HEADERS = avdevice.h \
OBJS = alldevices.o \
avdevice.o \
+OBJS-$(HAVE_MSVCRT) += file_open.o
+
# input/output devices
OBJS-$(CONFIG_ALSA_INDEV) += alsa-audio-common.o \
alsa-audio-dec.o
diff --git a/libavdevice/file_open.c b/libavdevice/file_open.c
new file mode 100644
index 0000000..494a5d3
--- /dev/null
+++ b/libavdevice/file_open.c
@@ -0,0 +1 @@
+#include "libavutil/file_open.c"
diff --git a/libavformat/Makefile b/libavformat/Makefile
index 5e2dd2a..0b788c9 100644
--- a/libavformat/Makefile
+++ b/libavformat/Makefile
@@ -23,6 +23,8 @@ OBJS = allformats.o \
url.o \
utils.o \
+OBJS-$(HAVE_MSVCRT) += file_open.o
+
OBJS-$(CONFIG_NETWORK) += network.o
OBJS-$(CONFIG_RIFFDEC) += riffdec.o
OBJS-$(CONFIG_RIFFENC) += riffenc.o
diff --git a/libavformat/file_open.c b/libavformat/file_open.c
new file mode 100644
index 0000000..494a5d3
--- /dev/null
+++ b/libavformat/file_open.c
@@ -0,0 +1 @@
+#include "libavutil/file_open.c"
diff --git a/libavutil/internal.h b/libavutil/internal.h
index 355a42a..b18860f 100644
--- a/libavutil/internal.h
+++ b/libavutil/internal.h
@@ -196,6 +196,10 @@ void avpriv_report_missing_feature(void *avc,
void avpriv_request_sample(void *avc,
const char *msg, ...) av_printf_format(2, 3);
+#if HAVE_MSVCRT
+#define avpriv_open ff_open
+#endif
+
/**
* A wrapper for open() setting O_CLOEXEC.
*/
More information about the ffmpeg-cvslog
mailing list