aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSlavik Gnatenko <miracle9@newmail.ru>2003-01-11 20:34:38 +0000
committerMichael Niedermayer <michaelni@gmx.at>2003-01-11 20:34:38 +0000
commitf3ec2d46bae60984cb9d0a26e94a2cc298b4f06d (patch)
tree3f59e4e94680c16859794b5ead5ce03eb51d0c31
parent143cc725273c130220e42b7281318ae80083cda3 (diff)
downloadffmpeg-f3ec2d46bae60984cb9d0a26e94a2cc298b4f06d.tar.gz
os2 support patch by ("Slavik Gnatenko" <miracle9 at newmail dot ru>)
Originally committed as revision 1447 to svn://svn.ffmpeg.org/ffmpeg/trunk
-rw-r--r--Makefile14
-rwxr-xr-xconfigure68
-rw-r--r--ffmpeg.c17
-rw-r--r--libavcodec/Makefile6
-rw-r--r--libavcodec/common.h35
-rw-r--r--libavformat/Makefile6
-rw-r--r--libavformat/file.c2
-rw-r--r--libavformat/img.c6
-rw-r--r--libavformat/utils.c16
9 files changed, 129 insertions, 41 deletions
diff --git a/Makefile b/Makefile
index ca4b847d45..4d6f3664e6 100644
--- a/Makefile
+++ b/Makefile
@@ -18,21 +18,26 @@ ifeq ($(CONFIG_WIN32),yes)
EXE=.exe
PROG=ffmpeg$(EXE)
else
-EXT=
+ifeq ($(CONFIG_OS2),yes)
+EXE=.exe
+PROG=ffmpeg$(EXE)
+else
+EXE=
PROG=ffmpeg ffplay
ifeq ($(CONFIG_FFSERVER),yes)
PROG+=ffserver
endif
endif
+endif
ifeq ($(CONFIG_AUDIO_BEOS),yes)
EXTRALIBS+=-lmedia -lbe
endif
ifeq ($(BUILD_SHARED),yes)
-DEP_LIBS=libavcodec/libavcodec.so libavformat/libavformat.a
+DEP_LIBS=libavcodec/$(SLIBPREF)avcodec$(SLIBSUF) libavformat/$(LIBPREF)avformat$(LIBSUF)
else
-DEP_LIBS=libavcodec/libavcodec.a libavformat/libavformat.a
+DEP_LIBS=libavcodec/$(LIBPREF)avcodec$(LIBSUF) libavformat/$(LIBPREF)avformat$(LIBSUF)
ifeq ($(CONFIG_MP3LAME),yes)
EXTRALIBS+=-lmp3lame
endif
@@ -61,7 +66,8 @@ ffmpeg_g$(EXE): ffmpeg.o $(DEP_LIBS)
-lavformat -lavcodec $(EXTRALIBS)
ffmpeg$(EXE): ffmpeg_g$(EXE)
- cp -p $< $@ ; $(STRIP) $@
+ cp -p $< $@
+ $(STRIP) $@
ffserver$(EXE): ffserver.o $(DEP_LIBS)
$(CC) $(LDFLAGS) $(FFSLDFLAGS) \
diff --git a/configure b/configure
index 28e74d0e37..8c414d6c4c 100755
--- a/configure
+++ b/configure
@@ -13,6 +13,7 @@ fi
TMPC="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.c"
TMPO="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.o"
+TMPE="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}"
TMPS="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.S"
TMPH="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.h"
@@ -61,6 +62,7 @@ a52bin="no"
win32="no"
mingw32="no"
cygwin="no"
+os2="no"
lshared="no"
extralibs="-lm"
simpleidct="yes"
@@ -75,6 +77,10 @@ need_inet_aton="no"
ffserver="yes"
LDFLAGS=-Wl,--warn-common
FFSLDFLAGS=-Wl,-E
+LIBPREF="lib"
+LIBSUF=".a"
+SLIBPREF="lib"
+SLIBSUF=".so"
# OS specific
targetos=`uname -s`
@@ -169,6 +175,25 @@ echo "Missing inttypes.h, please copy cygwin_inttypes.h to" \
Linux)
LDFLAGS="$LDFLAGS -rdynamic"
;;
+OS/2)
+TMPE=$TMPE".exe"
+ar="emxomfar -p32"
+strip="echo ignore strip"
+CFLAGS="-Zomf"
+LDFLAGS="-Zomf -Zstack 16384"
+SHFLAGS=""
+FFSLDFLAGS=""
+LIBPREF=""
+LIBSUF=".lib"
+SLIBPREF=""
+SLIBSUF=".dll"
+extralibs=""
+v4l="no"
+audio_oss="no"
+network="no"
+ffserver="no"
+os2="yes"
+;;
*) ;;
esac
@@ -190,13 +215,13 @@ EOF
ldl=-ldl
-if $cc -o $TMPO $TMPC -ldl 2> /dev/null ; then
+if $cc -o $TMPE $TMPC -ldl 2> /dev/null ; then
vhook=yes
dlfcn=yes
dlopen=yes
fi
-if $cc -o $TMPO $TMPC 2> /dev/null ; then
+if $cc -o $TMPE $TMPC 2> /dev/null ; then
vhook=yes
dlfcn=yes
dlopen=yes
@@ -207,12 +232,12 @@ cat > $TMPC << EOF
int main( void ) { return (int) dlopen("foo", 0); }
EOF
-if $cc -o $TMPO $TMPC -ldl 2> /dev/null ; then
+if $cc -o $TMPE $TMPC -ldl 2> /dev/null ; then
vhook=yes
dlopen=yes
fi
-if $cc -o $TMPO $TMPC 2> /dev/null ; then
+if $cc -o $TMPE $TMPC 2> /dev/null ; then
vhook=yes
dlopen=yes
ldl=""
@@ -226,7 +251,7 @@ int main( void ) { return (int) imlib_load_font("foo"); }
EOF
imlib2=no
-if $cc -o $TMPO $TMPC -lImlib2 2> /dev/null ; then
+if $cc -o $TMPE $TMPC -lImlib2 2> /dev/null ; then
imlib2=yes
fi
@@ -318,7 +343,7 @@ int main(void) {
return 0;
}
EOF
-$cc -o $TMPO $TMPC -faltivec 2> /dev/null || altivec="no"
+$cc -o $TMPE $TMPC -faltivec 2> /dev/null || altivec="no"
fi
# Can only do mmi on mips
@@ -338,7 +363,7 @@ int main(void) {
return 0;
}
EOF
-$cc -o $TMPO $TMPC 2> /dev/null || mmi="no"
+$cc -o $TMPE $TMPC 2> /dev/null || mmi="no"
fi
# Checking for CFLAGS
@@ -377,8 +402,8 @@ int main(int argc, char ** argv){
}
EOF
-if $cc -o $TMPO $TMPC 2>/dev/null ; then
-$TMPO && bigendian="yes"
+if $cc -o $TMPE $TMPC 2>/dev/null ; then
+$TMPE && bigendian="yes"
else
echo big/little test failed
fi
@@ -402,7 +427,7 @@ EOF
_memalign=no
_malloc_h=no
-if $cc -o $TMPO $TMPC 2> /dev/null ; then
+if $cc -o $TMPE $TMPC 2> /dev/null ; then
_malloc_h=yes
_memalign=yes
# check for memalign - atmos
@@ -414,7 +439,7 @@ string = memalign(64, sizeof(char));
return 0;
}
EOF
-$cc -o $TMPO $TMPC 2> /dev/null || _memalign=no
+$cc -o $TMPE $TMPC 2> /dev/null || _memalign=no
fi
cat > $TMPC << EOF
@@ -424,7 +449,7 @@ int main( void ) { return *strptime("", "", 0); }
EOF
strptime=no
-if $cc -o $TMPO $TMPC 2> /dev/null ; then
+if $cc -o $TMPE $TMPC 2> /dev/null ; then
strptime=yes
fi
@@ -439,8 +464,8 @@ if (zlibVersion() != ZLIB_VERSION)
return 0;
}
EOF
-$cc -o $TMPO $TMPC -lz 2> /dev/null || zlib="no"
-# $TMPO 2> /dev/null > /dev/null || zlib="no"
+$cc -o $TMPE $TMPC -lz 2> /dev/null || zlib="no"
+# $TMPE 2> /dev/null > /dev/null || zlib="no"
# XXX: more tests needed - runtime test
fi
if test "$zlib" = "yes"; then
@@ -455,9 +480,9 @@ int main( void ) { return (lrintf(3.999f) > 0)?0:1; }
EOF
have_lrintf="no"
-if $cc $extralibs -o $TMPO $TMPC 2> /dev/null ; then
+if $cc $extralibs -o $TMPE $TMPC 2> /dev/null ; then
have_lrintf="yes"
- $TMPO 2> /dev/null > /dev/null || have_lrintf="no"
+ $TMPE 2> /dev/null > /dev/null || have_lrintf="no"
fi
_restrict=
@@ -577,6 +602,10 @@ echo "OPTFLAGS=$CFLAGS" >> config.mak
echo "LDFLAGS=$LDFLAGS" >> config.mak
echo "FFSLDFLAGS=$FFSLDFLAGS" >> config.mak
echo "SHFLAGS=$SHFLAGS" >> config.mak
+echo "LIBPREF=$LIBPREF" >> config.mak
+echo "LIBSUF=$LIBSUF" >> config.mak
+echo "SLIBPREF=$SLIBPREF" >> config.mak
+echo "SLIBSUF=$SLIBSUF" >> config.mak
if test "$cpu" = "x86" ; then
echo "TARGET_ARCH_X86=yes" >> config.mak
echo "#define ARCH_X86 1" >> $TMPH
@@ -728,6 +757,11 @@ if test "$cygwin" = "yes" ; then
echo "CONFIG_WIN32=yes" >> config.mak
fi
+if test "$os2" = "yes" ; then
+ echo "#define CONFIG_OS2 1" >> $TMPH
+ echo "CONFIG_OS2=yes" >> config.mak
+fi
+
if test "$darwin" = "yes"; then
echo "#define CONFIG_DARWIN 1" >> $TMPH
echo "CONFIG_DARWIN=yes" >> config.mak
@@ -786,4 +820,4 @@ else
echo "config.h is unchanged"
fi
-rm -f $TMPO $TMPC $TMPS $TMPH
+rm -f $TMPO $TMPC $TMPE $TMPS $TMPH
diff --git a/ffmpeg.c b/ffmpeg.c
index 0459a55ad7..6a8534b1b6 100644
--- a/ffmpeg.c
+++ b/ffmpeg.c
@@ -28,6 +28,11 @@
#include <termios.h>
#include <sys/resource.h>
#endif
+#ifdef CONFIG_OS2
+#include <sys/types.h>
+#include <sys/select.h>
+#include <stdlib.h>
+#endif
#include <time.h>
#include <ctype.h>
@@ -2497,18 +2502,18 @@ void opt_pass(const char *pass_str)
do_pass = pass;
}
-#ifndef CONFIG_WIN32
+#if defined(CONFIG_WIN32) || defined(CONFIG_OS2)
INT64 getutime(void)
{
- struct rusage rusage;
-
- getrusage(RUSAGE_SELF, &rusage);
- return (rusage.ru_utime.tv_sec * 1000000LL) + rusage.ru_utime.tv_usec;
+ return av_gettime();
}
#else
INT64 getutime(void)
{
- return av_gettime();
+ struct rusage rusage;
+
+ getrusage(RUSAGE_SELF, &rusage);
+ return (rusage.ru_utime.tv_sec * 1000000LL) + rusage.ru_utime.tv_usec;
}
#endif
diff --git a/libavcodec/Makefile b/libavcodec/Makefile
index 8d0e8384ce..11e9603d92 100644
--- a/libavcodec/Makefile
+++ b/libavcodec/Makefile
@@ -91,9 +91,9 @@ endif
SRCS := $(OBJS:.o=.c) $(ASM_OBJS:.o=.S)
OBJS := $(OBJS) $(ASM_OBJS)
-LIB= libavcodec.a
+LIB= $(LIBPREF)avcodec$(LIBSUF)
ifeq ($(BUILD_SHARED),yes)
-SLIB= libavcodec.so
+SLIB= $(SLIBPREF)avcodec$(SLIBSUF)
endif
TESTS= imgresample-test dct-test motion-test fft-test
@@ -104,7 +104,9 @@ tests: apiexample cpuid_test $(TESTS)
$(LIB): $(OBJS)
rm -f $@
$(AR) rc $@ $(OBJS)
+ifneq ($(CONFIG_OS2),yes)
$(RANLIB) $@
+endif
$(SLIB): $(OBJS)
$(CC) $(SHFLAGS) -o $@ $(OBJS) $(EXTRALIBS)
diff --git a/libavcodec/common.h b/libavcodec/common.h
index b8cf9f6739..afa085bc2b 100644
--- a/libavcodec/common.h
+++ b/libavcodec/common.h
@@ -89,7 +89,38 @@ typedef INT64 int64_t;
# define snprintf _snprintf
-#else /* CONFIG_WIN32 */
+/* CONFIG_WIN32 end */
+#elif defined (CONFIG_OS2)
+/* OS/2 EMX */
+
+#include <inttypes.h>
+
+typedef unsigned char UINT8;
+typedef unsigned short UINT16;
+typedef unsigned int UINT32;
+typedef unsigned long long UINT64;
+typedef signed char INT8;
+typedef signed short INT16;
+typedef signed int INT32;
+typedef signed long long INT64;
+
+#ifdef HAVE_AV_CONFIG_H
+
+#ifndef INT64_C
+#define INT64_C(c) (c ## LL)
+#define UINT64_C(c) (c ## ULL)
+#endif
+
+#ifdef USE_FASTMEMCPY
+#include "fastmemcpy.h"
+#endif
+
+#include <float.h>
+
+#endif /* HAVE_AV_CONFIG_H */
+
+/* CONFIG_OS2 end */
+#else
/* unix */
@@ -119,7 +150,7 @@ typedef signed long long INT64;
# endif
# endif /* HAVE_AV_CONFIG_H */
-#endif /* !CONFIG_WIN32 */
+#endif /* !CONFIG_WIN32 && !CONFIG_OS2 */
#ifdef HAVE_AV_CONFIG_H
diff --git a/libavformat/Makefile b/libavformat/Makefile
index d688d7060d..9ff067c531 100644
--- a/libavformat/Makefile
+++ b/libavformat/Makefile
@@ -48,14 +48,16 @@ ifeq ($(CONFIG_VORBIS),yes)
OBJS+= ogg.o
endif
-LIB= libavformat.a
+LIB= $(LIBPREF)avformat$(LIBSUF)
all: $(LIB)
$(LIB): $(OBJS)
rm -f $@
$(AR) rc $@ $(OBJS)
+ifneq ($(CONFIG_OS2),yes)
$(RANLIB) $@
+endif
installlib: all
install -m 644 $(LIB) $(prefix)/lib
@@ -73,4 +75,4 @@ installlib: all
g++ $(subst -Wall,,$(CFLAGS)) -c -o $@ $<
clean:
- rm -f *.o *~ *.a
+ rm -f *.o *~ *.a $(LIB)
diff --git a/libavformat/file.c b/libavformat/file.c
index 7390962864..a84823a378 100644
--- a/libavformat/file.c
+++ b/libavformat/file.c
@@ -42,7 +42,7 @@ static int file_open(URLContext *h, const char *filename, int flags)
} else {
access = O_RDONLY;
}
-#ifdef CONFIG_WIN32
+#if defined(CONFIG_WIN32) || defined(CONFIG_OS2)
access |= O_BINARY;
#endif
fd = open(filename, access, 0666);
diff --git a/libavformat/img.c b/libavformat/img.c
index 139e0f48af..f5c45f2c63 100644
--- a/libavformat/img.c
+++ b/libavformat/img.c
@@ -26,9 +26,13 @@
#ifdef __BEOS__
# ifndef usleep
# include <OS.h>
-# define usleep(t) snooze((bigtime_t)(t))
+# define usleep(t) snooze((bigtime_t)(t))
# endif
#endif
+#if defined(CONFIG_OS2)
+# include <stdlib.h>
+# define usleep(t) _sleep2((t) / 1000)
+#endif
typedef struct {
int width;
diff --git a/libavformat/utils.c b/libavformat/utils.c
index 0db740333a..f811b2c628 100644
--- a/libavformat/utils.c
+++ b/libavformat/utils.c
@@ -18,14 +18,18 @@
*/
#include "avformat.h"
#include <ctype.h>
-#ifndef CONFIG_WIN32
-#include <unistd.h>
-#include <fcntl.h>
-#include <sys/time.h>
-#else
+#ifdef CONFIG_WIN32
#define strcasecmp _stricmp
#include <sys/types.h>
#include <sys/timeb.h>
+#elif defined(CONFIG_OS2)
+#include <string.h>
+#define strcasecmp stricmp
+#include <sys/time.h>
+#else
+#include <unistd.h>
+#include <fcntl.h>
+#include <sys/time.h>
#endif
#include <time.h>
@@ -362,7 +366,7 @@ int av_open_input_file(AVFormatContext **ic_ptr, const char *filename,
}
/* XXX: suppress this hack for redirectors */
-#ifndef __MINGW32__
+#ifdef CONFIG_NETWORK
if (fmt == &redir_demux) {
err = redir_open(ic_ptr, &ic->pb);
url_fclose(&ic->pb);