Jump to content

FFmpeg: Difference between revisions

From EDM2
Dryeo (talk | contribs)
Added section Getting FFmpeg
 
Dryeo (talk | contribs)
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 01: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

Hints on Setting the Enviroment

Compiling FFmpeg

Testing FFmpeg

Various Hints