Browse Source

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@martin.st>
tags/n2.1
Martin Storsjö 11 years ago
parent
commit
e743e7ae6e
7 changed files with 13 additions and 0 deletions
  1. +2
    -0
      libavcodec/Makefile
  2. +1
    -0
      libavcodec/file_open.c
  3. +2
    -0
      libavdevice/Makefile
  4. +1
    -0
      libavdevice/file_open.c
  5. +2
    -0
      libavformat/Makefile
  6. +1
    -0
      libavformat/file_open.c
  7. +4
    -0
      libavutil/internal.h

+ 2
- 0
libavcodec/Makefile View File

@@ -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


+ 1
- 0
libavcodec/file_open.c View File

@@ -0,0 +1 @@
#include "libavutil/file_open.c"

+ 2
- 0
libavdevice/Makefile View File

@@ -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


+ 1
- 0
libavdevice/file_open.c View File

@@ -0,0 +1 @@
#include "libavutil/file_open.c"

+ 2
- 0
libavformat/Makefile View File

@@ -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


+ 1
- 0
libavformat/file_open.c View File

@@ -0,0 +1 @@
#include "libavutil/file_open.c"

+ 4
- 0
libavutil/internal.h View File

@@ -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.
*/


Loading…
Cancel
Save