FFmpeg
Getting FFmpeg
The best way to get FFmpeg sources is with SVN. Paul Smedley has built a SVN client available at http://download.smedley.info/subversion-1.4.4-os2.zip. Entering this command
svn checkout svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg
will create a directory called ffmpeg below where you entered the command and download the source. To update the source you can enter
svn update
in the ffmpeg directory. Further information including a web interface to the source and links to daily snapshots are available at http://ffmpeg.mplayerhq.hu/download.html
Patching FFmpeg
As FFmpeg does not officially support OS/2 at this time you need to apply this patch
Index: configure
=================================================================
--- configure (revision 11093)
+++ configure (working copy)
@@ -71,6 +71,7 @@
echo " --enable-pp enable GPLed postprocessing support [default=no]"
echo " --enable-swscaler software scaler support [default=no]"
echo " --enable-beosthreads use BeOS threads [default=no]"
+ echo " --enable-os2threads use OS/2 threads [default=no]"
echo " --enable-pthreads use pthreads [default=no]"
echo " --enable-w32threads use Win32 threads [default=no]"
echo " --enable-x11grab enable X11 grabbing [default=no]"
@@ -637,6 +638,7 @@
THREADS_LIST='
beosthreads
+ os2threads
pthreads
w32threads
'
@@ -1217,6 +1219,35 @@
targetos=irix
ranlib="echo ignoring ranlib"
;;
+ os/2*)
+ ar="emxomfar -p256"
+ ranlib="echo ignoring ranlib"
+ strip="lxlite"
+ ln_s="cp -f"
+ add_cflags "-Zomf"
+ DESCRIPTION="'\"\$(SLIBNAME_WITH_VERSION)\"'"
+ EXESUF=".exe"
+ FFLDFLAGS="-Zomf -Zbin-files -Zargs-wild -Zmap"
+ SHFLAGS='$(FULLNAME).def -Zdll -Zomf'
+ FFSERVERLDFLAGS=""
+ LIBSUF="_s.lib"
+ SLIBPREF=""
+ SLIBSUF=".dll"
+ SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME)-$(LIBVERSION)$(SLIBSUF)'
+ SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(NAME)-$(LIBMAJOR)$(SLIBSUF)'
+ SLIB_CREATE_DEF_CMD='echo LIBRARY $(FULLNAME) INITINSTANCE TERMINSTANCE > $(FULLNAME).def; \
+ echo DESCRIPTION $(DESCRIPTION) >> $(FULLNAME).def; \
+ echo PROTMODE >> $(FULLNAME).def; \
+ echo CODE PRELOAD MOVEABLE DISCARDABLE >> $(FULLNAME).def; \
+ echo DATA PRELOAD MOVEABLE MULTIPLE NONSHARED >> $(FULLNAME).def; \
+ echo EXPORTS >> $(FULLNAME).def; \
+ emxexp -o $(OBJS) >> $(FULLNAME).def'
+ SLIB_EXTRA_CMD='emximp -o $(LIBPREF)$(FULLNAME)_dll.a $(FULLNAME).def; emximp -o $(LIBPREF)$(FULLNAME)_dll.lib $(FULLNAME).def'
+ SLIB_INSTALL_EXTRA_CMD='install -m 644 $(LIBPREF)$(FULLNAME)_dll.lib $(LIBPREF)$(FULLNAME)_dll.a "$(LIBDIR)"'
+ SLIB_UNINSTALL_EXTRA_CMD='rm -f "$(LIBDIR)"/$(LIBPREF)$(FULLNAME)_dll.lib;rm -f "$(LIBDIR)"/$(LIBPREF)$(FULLNAME)_dll.a'
+ vhook="no"
+ ;;
+
*)
targetos="${targetos}-UNKNOWN"
;;
@@ -1917,6 +1948,7 @@
if enabled shared; then
echo "BUILD_SHARED=yes" >> config.mak
+ echo "DESCRIPTION=${DESCRIPTION}" >> config.mak
echo "PIC=-fPIC -DPIC" >> config.mak
echo "SPPMAJOR=${pp_version%%.*}" >> config.mak
echo "SPPVERSION=$pp_version" >> config.mak
@@ -1933,6 +1965,7 @@
echo "SLIBNAME=${SLIBNAME}" >> config.mak
echo "SLIBNAME_WITH_VERSION=${SLIBNAME_WITH_VERSION}" >> config.mak
echo "SLIBNAME_WITH_MAJOR=${SLIBNAME_WITH_MAJOR}" >> config.mak
+ echo "SLIB_CREATE_DEF_CMD=${SLIB_CREATE_DEF_CMD}" >> config.mak
echo "SLIB_EXTRA_CMD=${SLIB_EXTRA_CMD}" >> config.mak
echo "SLIB_INSTALL_EXTRA_CMD=${SLIB_INSTALL_EXTRA_CMD}" >> config.mak
echo "SLIB_UNINSTALL_EXTRA_CMD=${SLIB_UNINSTALL_EXTRA_CMD}" >> config.mak
Index: common.mak
==================================================================
--- common.mak (revision 11093)
+++ common.mak (working copy)
@@ -28,6 +28,7 @@
$(LN_S) $^ $@
$(SLIBNAME_WITH_MAJOR): $(OBJS)
+ $(SLIB_CREATE_DEF_CMD)
$(CC) $(SHFLAGS) $(LDFLAGS) -o $@ $^ $(EXTRALIBS) $(EXTRAOBJS)
$(SLIB_EXTRA_CMD)
@@ -51,7 +52,7 @@
clean::
rm -f *.o *~ *.a *.lib *.so *.so.* *.dylib *.dll \
- *.def *.dll.a *.exp *.ho
+ *.def *.dll.a *.exp *.ho *.map
distclean: clean
rm -f .depend
Copy and paste the above patch into a file called os2.patch and in the ffmpeg directory enter the command
patch -p0 < os2.patch.
Warning Make sure that you have gnu patch in your path ahead of the OS/2 patch.exe in x:\os2. There is a version of gnu patch available at http://hobbes.nmsu.edu/pub/os2/dev/util/gnupatch.zip