FFmpeg: Difference between revisions
Added section Getting FFmpeg |
|||
| Line 11: | Line 11: | ||
=== Patching FFmpeg === | === 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 | |||
=== Hints on Setting the Enviroment === | === Hints on Setting the Enviroment === | ||
Revision as of 00:43, 29 November 2007
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