diff options
author | Edward Hervey <bilboed@bilboed.com> | 2007-11-15 10:01:43 +0000 |
---|---|---|
committer | Edward Hervey <bilboed@bilboed.com> | 2007-11-15 10:01:43 +0000 |
commit | a892f18f58ede22341be5b117e564cdfeae9d7df (patch) | |
tree | 57efd7b2a497fb439b95b2352ffafc3aecd3d09e | |
parent | f48860b3736e8e1f66f1fd888374e75c4a73f7ac (diff) |
Initial patch of the new mirror-less build-system for gst-ffmpeg using specific revisions of ffmpeg svn instead.
Original commit message from CVS:
* Makefile.am:
* autogen.sh:
* configure.ac:
* ext/ffmpeg/Makefile.am:
* ffmpegrev:
* gst-libs/ext/Makefile.am:
Initial patch of the new mirror-less build-system for gst-ffmpeg using
specific revisions of ffmpeg svn instead.
Might still have some issues, we need people to try this.
Help by : Dejan Sakelšak <sakdean at gmail dot com>
* ext/ffmpeg/gstffmpeg.c: (plugin_init):
* ext/ffmpeg/gstffmpegcodecmap.c: (gst_ffmpeg_codecid_to_caps),
(gst_ffmpeg_caps_with_codecid), (gst_ffmpeg_caps_to_codecid),
(gst_ffmpeg_get_codecid_longname):
* ext/ffmpeg/gstffmpegdec.c: (gst_ffmpegdec_base_init),
(gst_ffmpegdec_get_buffer), (gst_ffmpegdec_audio_frame),
(gst_ffmpegdec_register):
* ext/ffmpeg/gstffmpegdemux.c: (gst_ffmpegdemux_averror),
(gst_ffmpegdemux_register):
* ext/ffmpeg/gstffmpegenc.c: (gst_ffmpegenc_register):
* ext/ffmpeg/gstffmpegmux.c: (gst_ffmpegmux_register):
Update code for new ffmpeg API.
-rw-r--r-- | ChangeLog | 93 | ||||
-rw-r--r-- | Makefile.am | 2 | ||||
-rwxr-xr-x | autogen.sh | 50 | ||||
-rw-r--r-- | configure.ac | 39 | ||||
-rw-r--r-- | ext/ffmpeg/Makefile.am | 5 | ||||
-rw-r--r-- | ext/ffmpeg/gstffmpeg.c | 2 | ||||
-rw-r--r-- | ext/ffmpeg/gstffmpegcodecmap.c | 123 | ||||
-rw-r--r-- | ext/ffmpeg/gstffmpegdec.c | 45 | ||||
-rw-r--r-- | ext/ffmpeg/gstffmpegdemux.c | 11 | ||||
-rw-r--r-- | ext/ffmpeg/gstffmpegenc.c | 20 | ||||
-rw-r--r-- | ext/ffmpeg/gstffmpegmux.c | 8 | ||||
-rw-r--r-- | ffmpegrev | 4 | ||||
-rw-r--r-- | gst-libs/ext/Makefile.am | 42 |
13 files changed, 335 insertions, 109 deletions
@@ -1,6 +1,31 @@ +2007-11-15 Edward Hervey <bilboed@bilboed.com> + + * Makefile.am: + * autogen.sh: + * configure.ac: + * ext/ffmpeg/Makefile.am: + * ffmpegrev: + * gst-libs/ext/Makefile.am: + Initial patch of the new mirror-less build-system for gst-ffmpeg using + specific revisions of ffmpeg svn instead. + Might still have some issues, we need people to try this. + Help by : Dejan Sakelšak <sakdean at gmail dot com> + * ext/ffmpeg/gstffmpeg.c: (plugin_init): + * ext/ffmpeg/gstffmpegcodecmap.c: (gst_ffmpeg_codecid_to_caps), + (gst_ffmpeg_caps_with_codecid), (gst_ffmpeg_caps_to_codecid), + (gst_ffmpeg_get_codecid_longname): + * ext/ffmpeg/gstffmpegdec.c: (gst_ffmpegdec_base_init), + (gst_ffmpegdec_get_buffer), (gst_ffmpegdec_audio_frame), + (gst_ffmpegdec_register): + * ext/ffmpeg/gstffmpegdemux.c: (gst_ffmpegdemux_averror), + (gst_ffmpegdemux_register): + * ext/ffmpeg/gstffmpegenc.c: (gst_ffmpegenc_register): + * ext/ffmpeg/gstffmpegmux.c: (gst_ffmpegmux_register): + Update code for new ffmpeg API. + 2007-11-08 Edward Hervey <bilboed@bilboed.com> - Patch by: Ole André Vadla Ravnås <ole dot andre dot ravnas at tandberg dot com> + Patch by: Ole André Vadla RavnÃ¥s <ole dot andre dot ravnas at tandberg dot com> * ext/ffmpeg/gstffmpegcodecmap.c: (gst_ffmpeg_caps_with_codecid): * ext/ffmpeg/gstffmpegmux.c: (gst_ffmpegmux_init): @@ -30,7 +55,7 @@ (gst_ffmpegdata_close): gst-indent cleanup. -2007-10-12 Tim-Philipp Müller <tim at centricular dot net> +2007-10-12 Tim-Philipp Müller <tim at centricular dot net> * configure.ac: Add big fat warning message with explanation when building @@ -217,7 +242,7 @@ Be a bit smarter when clipping the frame without a duration, we don't want the frame to extend to the end of the segment in this case. -2007-05-24 Tim-Philipp Müller <tim at centricular dot net> +2007-05-24 Tim-Philipp Müller <tim at centricular dot net> * configure.ac: Add -no-undefined to GST_ALL_LDFLAGS; without it, no shared libs @@ -308,12 +333,12 @@ Renamed the mpeg4 category to mpeg. Fixes #403739 -2007-03-01 Sebastian Dröge <slomo@circular-chaos.org> +2007-03-01 Sebastian Dröge <slomo@circular-chaos.org> * configure.ac: Convert to new AG_GST style. -2007-02-16 Tim-Philipp Müller <tim at centricular dot net> +2007-02-16 Tim-Philipp Müller <tim at centricular dot net> * ext/ffmpeg/gstffmpegdec.c: (gst_ffmpegdec_base_init), (gst_ffmpegdec_register): @@ -344,7 +369,7 @@ My console is not your TODO list. If it were your TODO list, you would have DONE it by now. -2007-02-09 Tim-Philipp Müller <tim at centricular dot net> +2007-02-09 Tim-Philipp Müller <tim at centricular dot net> * ext/ffmpeg/gstffmpegmux.c: (gst_ffmpegmux_register): ffmux_flv only accepts mpeg audio with a sample rate of 44100, 22050 @@ -352,7 +377,7 @@ that encoding piplines at least have a chance to automatically negotiate to one of the allowed rates. -2007-02-09 Tim-Philipp Müller <tim at centricular dot net> +2007-02-09 Tim-Philipp Müller <tim at centricular dot net> * ext/ffmpeg/gstffmpegmux.c: (gst_ffmpegmux_request_new_pad), (gst_ffmpegmux_setcaps), (gst_ffmpegmux_collected): @@ -372,7 +397,7 @@ register yuv4mpegpipe demuxer with MARGINAL rank to make it also typically available for auto-plugging. Fixes #399108. -2007-01-22 Tim-Philipp Müller <tim at centricular dot net> +2007-01-22 Tim-Philipp Müller <tim at centricular dot net> Patch by: Martin Szulecki <gnomebugzilla at sukimashita com> @@ -436,7 +461,7 @@ * ext/ffmpeg/gstffmpegenc.c: (gst_ffmpegenc_me_method_get_type): Make the name of the motion-estimation method enum values meaningful. -2007-01-07 Sébastien Moutte <sebastien@moutte.net> +2007-01-07 Sébastien Moutte <sebastien@moutte.net> * Makefile.am: Add win32/MANIFEST to EXTRA_DIST so win32 files will @@ -456,7 +481,7 @@ add a dep on the internal lib so the plugin gets rebuilt on code changes to the ffmpeg lib -2007-01-03 Tim-Philipp Müller <tim at centricular dot net> +2007-01-03 Tim-Philipp Müller <tim at centricular dot net> * ext/ffmpeg/gstffmpegenc.c: (gst_ffmpegenc_class_init), (gst_ffmpegenc_finalize): @@ -464,7 +489,7 @@ and potential crashes caused by them in some circumstances. Fixes #392395. -2006-12-21 Tim-Philipp Müller <tim at centricular dot net> +2006-12-21 Tim-Philipp Müller <tim at centricular dot net> * ext/ffmpeg/gstffmpegcodecmap.c: (gst_ffmpeg_caps_to_smpfmt): The "signed" field in raw audio caps is of boolean type, trying to @@ -475,7 +500,7 @@ * configure.ac: fix quoting so it works for fedora autotools too -2006-12-15 Tim-Philipp Müller <tim at centricular dot net> +2006-12-15 Tim-Philipp Müller <tim at centricular dot net> * docs/Makefile.am: * tests/check/Makefile.am: @@ -689,7 +714,7 @@ end up passing completely bogus data to the AVCodecContext. Fixes #355584 -2006-10-05 Tim-Philipp Müller <tim at centricular dot net> +2006-10-05 Tim-Philipp Müller <tim at centricular dot net> * ext/ffmpeg/gstffmpegdemux.c: (gst_ffmpegdemux_get_stream): * ext/ffmpeg/gstffmpegenc.c: (gst_ffmpegenc_setcaps): @@ -733,7 +758,7 @@ gst-plugins-* alternative, to figure out which ones can move to RANK_MARGINAL too. -2006-09-29 Tim-Philipp Müller <tim at centricular dot net> +2006-09-29 Tim-Philipp Müller <tim at centricular dot net> * ext/ffmpeg/gstffmpegdec.c: (gst_ffmpegdec_register): * ext/ffmpeg/gstffmpegenc.c: (gst_ffmpegenc_register): @@ -1002,20 +1027,20 @@ * configure.ac: fix test by finding base plugins -2006-05-09 Tim-Philipp Müller <tim at centricular dot net> +2006-05-09 Tim-Philipp Müller <tim at centricular dot net> * tests/check/gst-ffmpeg.supp: Add missing file (which prepare-ChangeLog didn't pick up because it's empty). -2006-05-09 Tim-Philipp Müller <tim at centricular dot net> +2006-05-09 Tim-Philipp Müller <tim at centricular dot net> * tests/check/generic/libavcodec-locking.c: (GST_START_TEST), (simple_launch_lines_suite), (main): Only run test when encoder element is available (we might have been configured with --disable-encoders). -2006-05-09 Tim-Philipp Müller <tim at centricular dot net> +2006-05-09 Tim-Philipp Müller <tim at centricular dot net> Patch by: Luca Ognibene <luogni at tin dot it> @@ -1025,7 +1050,7 @@ (main): Add test case for libavcodec locking -2006-05-09 Tim-Philipp Müller <tim at centricular dot net> +2006-05-09 Tim-Philipp Müller <tim at centricular dot net> * Makefile.am: * configure.ac: @@ -1064,7 +1089,7 @@ Refresh patches to incorporate MikeS' automake 1.9 changes from a while back. -2006-05-02 Tim-Philipp Müller <tim at centricular dot net> +2006-05-02 Tim-Philipp Müller <tim at centricular dot net> * ext/ffmpeg/gstffmpegdemux.c: (gst_ffmpegdemux_register): Give ffmpeg demuxers a rank of NONE for the time being, so that @@ -1171,7 +1196,7 @@ refactor some functions. Use GstSegment. Implement simple QOS by using the ffmpeg hurry_up field. -2006-04-06 Tim-Philipp Müller <tim at centricular dot net> +2006-04-06 Tim-Philipp Müller <tim at centricular dot net> * ext/ffmpeg/gstffmpegdemux.c: (gst_ffmpegdemux_register): Register id3 demuxer, avi demuxer and ogg demuxer with @@ -1216,7 +1241,7 @@ lock themselves. This fixes a deadlock when _open fails. -2006-03-14 Tim-Philipp Müller <tim at centricular dot net> +2006-03-14 Tim-Philipp Müller <tim at centricular dot net> * ext/ffmpeg/gstffmpegdec.c: (gst_ffmpegdec_frame): Don't use gst_pad_alloc_buffer() for frames with palette, @@ -1266,7 +1291,7 @@ Fix segmentation fault and memleak. Fixes #332995 and #333001 -2006-02-24 Tim-Philipp Müller <tim at centricular dot net> +2006-02-24 Tim-Philipp Müller <tim at centricular dot net> * ext/ffmpeg/gstffmpegdec.c: (gst_ffmpegdec_frame): ... can't adjust buffer size of NULL buffers though @@ -1278,7 +1303,7 @@ * gst-libs/ext/ffmpeg/autogen.sh: Allow automake 1.9 -2006-02-24 Tim-Philipp Müller <tim at centricular dot net> +2006-02-24 Tim-Philipp Müller <tim at centricular dot net> * ext/ffmpeg/gstffmpegcodecmap.c: (gst_ffmpeg_get_palette), (gst_ffmpeg_set_palette): @@ -1422,7 +1447,7 @@ This allows playback of h263/3gp files taking fps from the demuxer, which before always set GST_CLOCK_TIME_NONE as timestamp. -2006-02-04 Tim-Philipp Müller <tim at centricular dot net> +2006-02-04 Tim-Philipp Müller <tim at centricular dot net> * ext/ffmpeg/gstffmpegcodecmap.c: (gst_ffmpeg_get_palette): Buffers aren't boxed types any longer. @@ -1471,7 +1496,7 @@ * docs/version.entities.in: First step at adding docs -2006-01-26 Tim-Philipp Müller <tim at centricular dot net> +2006-01-26 Tim-Philipp Müller <tim at centricular dot net> * ext/ffmpeg/gstffmpegcodecmap.c: (gst_ffmpeg_caps_with_codecid): Pad codec data buffer to a size that is a multiple of 16, which @@ -1524,7 +1549,7 @@ * libavcodec/utils.c: Fix for CVE-2005-4048 (bugzilla bug #324209), buffer overflow with small PNG images with palettes. - Patch by: Loïc Minier <lool+gnome at via.ecp.fr> + Patch by: Loïc Minier <lool+gnome at via.ecp.fr> * libavutil/Makefile.am (INCLUDES): Add ALTIVEC_CFLAGS here, fixes compilation on ppc (#320238). @@ -1542,7 +1567,7 @@ * ext/ffmpeg/gstffmpegdec.c: (gst_ffmpegdec_frame): Finer grained keyframe detection -2005-12-16 Tim-Philipp Müller <tim at centricular dot net> +2005-12-16 Tim-Philipp Müller <tim at centricular dot net> Patch by: Sebastien Cote Patch by: Luca Ognibene @@ -1557,7 +1582,7 @@ Do proper locking around avcodec_open() and avcodec_close() (fixes #322254) -2005-12-10 Tim-Philipp Müller <tim at centricular dot net> +2005-12-10 Tim-Philipp Müller <tim at centricular dot net> * gst-libs/ext/Makefile.am: We need to use $(MAKE) here instead of 'make' (on some @@ -1625,7 +1650,7 @@ (gst_ffmpegenc_setcaps), (gst_ffmpegenc_set_property), (gst_ffmpegenc_get_property): Add rtp-payload-size property. -2005-11-28 Tim-Philipp Müller <tim at centricular dot net> +2005-11-28 Tim-Philipp Müller <tim at centricular dot net> * ext/ffmpeg/gstffmpegdec.c: (gst_ffmpegdec_close), (gst_ffmpegdec_setcaps), (gst_ffmpegdec_add_pixel_aspect_ratio), @@ -1677,7 +1702,7 @@ * ext/ffmpeg/gstffmpegdec.c (gst_ffmpegdec_sink_event): Run update-funcnames. -2005-11-21 Tim-Philipp Müller <tim at centricular dot net> +2005-11-21 Tim-Philipp Müller <tim at centricular dot net> * ext/ffmpeg/gstffmpegdec.c: (gst_ffmpegdec_sink_event): Remove GST_STREAM_LOCK here, it is not needed any longer. @@ -1703,7 +1728,7 @@ * configure.ac (GST_PLUGIN_LDFLAGS): -no-undefined for better debugging, allows dll builds on windows. Fixes #316076. -2005-11-14 Tim-Philipp Müller <tim at centricular dot net> +2005-11-14 Tim-Philipp Müller <tim at centricular dot net> * ext/ffmpeg/gstffmpegdec.c: (gst_ffmpegdec_frame), (gst_ffmpegdec_sink_event): @@ -1735,7 +1760,7 @@ * TODO: Add some TODO items for 0.9 cycle. -2005-10-26 Tim-Philipp Müller <tim at centricular dot net> +2005-10-26 Tim-Philipp Müller <tim at centricular dot net> * ext/ffmpeg/gstffmpegdec.c: (gst_ffmpegdec_init), (gst_ffmpegdec_close), (gst_ffmpegdec_open), @@ -2335,7 +2360,7 @@ 2005-02-01 Ronald S. Bultje <rbultje@ronald.bitfreak.net> * ext/ffmpeg/gstffmpegdec.c: (gst_ffmpegdec_frame): - Don´t SIGFPE right away. + Don´t SIGFPE right away. 2005-01-31 Ronald S. Bultje <rbultje@ronald.bitfreak.net> @@ -3021,7 +3046,7 @@ * configure.ac: fix --export-symblos-regex to a working regex. -2004-04-03 Tim-Philipp Müller <t.i.m@zen.co.uk> +2004-04-03 Tim-Philipp Müller <t.i.m@zen.co.uk> reviewed by: David Schleef <ds@schleef.org> diff --git a/Makefile.am b/Makefile.am index 2c70533..b8088b0 100644 --- a/Makefile.am +++ b/Makefile.am @@ -8,7 +8,7 @@ debug: echo $(win32) EXTRA_DIST = \ - gst-ffmpeg.spec depcomp \ + gst-ffmpeg.spec depcomp ffmpegrev \ AUTHORS COPYING NEWS README ChangeLog gst-ffmpeg.doap \ $(win32) @@ -5,6 +5,12 @@ DIE=0 package=gst-ffmpeg srcfile=configure.ac +# FFMPEG specific properties +. ffmpegrev + +# ffmpeg revisions that work: 6315, 10844, 10876, 10910, 10932, 10939 + + # a quick cvs co if necessary to alleviate the pain - may remove this # when developers get a clue ;) if test ! -d common; @@ -13,11 +19,16 @@ then cvs co common fi -if test ! -f gst-libs/ext/ffmpeg/autogen.sh -then - rm -rf gst-libs/ext/ffmpeg - echo "+ getting ffmpeg from cvs" - cvs co mirror-ffmpeg +if test ! -f $FFMPEG_CO_DIR/configure +then + # checkout ffmpeg from its repository + rm -rf $FFMPEG_CO_DIR + echo "+ getting ffmpeg from svn" + svn -r $FFMPEG_REVISION co $FFMPEG_SVN $FFMPEG_CO_DIR +else + # update ffmpeg from its repository + echo "+ updating ffmpeg checkout" + svn -r $FFMPEG_REVISION up $FFMPEG_CO_DIR fi @@ -30,7 +41,23 @@ then fi . common/gst-autogen.sh -CONFIGURE_DEF_OPT='--enable-maintainer-mode --enable-gtk-doc' +# Let's check if we can disable the building of the ffmpeg binary +can_disable=`$FFMPEG_CO_DIR/configure --help | grep 'disable-ffmpeg' | wc -l` + +if [ $can_disable != "0" ] +then + CONFIGURE_DEF_OPT="--disable-ffmpeg" +fi + +# Let's clear the 'exit 1' command when we post an Unknown option +echo "Patching ffmpeg ./configure" +sed -e '/Unknown option/ { +N +N +s/exit 1/#/ +}' $FFMPEG_CO_DIR/configure > $FFMPEG_CO_DIR/configure.tmp +mv $FFMPEG_CO_DIR/configure.tmp $FFMPEG_CO_DIR/configure +chmod +x $FFMPEG_CO_DIR/configure autogen_options $@ @@ -88,17 +115,6 @@ if test -f disable; then done fi -# remove ffmpeg's configure, it's going to get created anyway and it probably -# conflicted before this too -rm -f gst-libs/ext/ffmpeg/configure - -# now, run ffmpeg's autogen -echo "+ running autogen.sh in gst-libs/ext/ffmpeg" -cd gst-libs/ext/ffmpeg -chmod +x autogen.sh -./autogen.sh || exit 1 -cd ../../.. - test -n "$NOCONFIGURE" && { echo "+ skipping configure stage for package $package, as requested." echo "+ autogen.sh done." diff --git a/configure.ac b/configure.ac index a87791a..e31b217 100644 --- a/configure.ac +++ b/configure.ac @@ -113,11 +113,14 @@ AM_CONDITIONAL(HAVE_GST_CHECK, test "x$HAVE_GST_CHECK" = "xyes") AC_MSG_NOTICE(Using GStreamer Core Plugins in $GST_PLUGINS_DIR) AC_MSG_NOTICE(Using GStreamer Base Plugins in $GSTPB_PLUGINS_DIR) -dnl liboil is required +dnl liboil is required for cpu detection for libpostproc +dnl FIXME : In theory we should be able to compile libpostproc with cpudetect +dnl capabilities, which would enable us to get rid of this PKG_CHECK_MODULES(LIBOIL, liboil-$LIBOIL_MAJORMINOR >= $LIBOIL_REQ, HAVE_LIBOIL=yes, HAVE_LIBOIL=no) if test "x$HAVE_LIBOIL" != "xyes" then - AC_ERROR([liboil-$LIBOIL_REQ or later is required]) + AC_MSG_ERROR([liboil-$LIBOIL_REQ or later is required]) + AC_ERROR fi AC_SUBST(LIBOIL_CFLAGS) @@ -235,26 +238,48 @@ if test "x$with_system_ffmpeg" = "xyes"; then dnl No, this is not too extreme, we want people to see and read the above sleep 15 else + + source ./ffmpegrev + + AC_MSG_NOTICE([Using ffmpeg revision $FFMPEG_REVISION]) + + dnl libgstffmpeg.la: include dirs FFMPEG_CFLAGS="-I \$(top_srcdir)/gst-libs/ext/ffmpeg/libavformat \ -I \$(top_srcdir)/gst-libs/ext/ffmpeg/libavutil \ - -I \$(top_srcdir)/gst-libs/ext/ffmpeg/libavcodec" - FFMPEG_LIBS="\$(top_builddir)/gst-libs/ext/ffmpeg/libavformat/libavformat.la" + -I \$(top_srcdir)/gst-libs/ext/ffmpeg/libavcodec -Wno-deprecated-declarations" + + dnl libgstffmpeg.la: libs to statically link to + FFMPEG_LIBS="\$(top_builddir)/gst-libs/ext/ffmpeg/libavformat/libavformat.a \ + \$(top_builddir)/gst-libs/ext/ffmpeg/libavcodec/libavcodec.a \ + \$(top_builddir)/gst-libs/ext/ffmpeg/libavutil/libavutil.a \ + -lz" + dnl POSTPROC_CFLAGS="-I \$(top_srcdir)/gst-libs/ext/ffmpeg/libpostproc \ -I \$(top_srcdir)/gst-libs/ext/ffmpeg/libavformat \ -I \$(top_srcdir)/gst-libs/ext/ffmpeg/libavutil \ -I \$(top_srcdir)/gst-libs/ext/ffmpeg/libavcodec" - POSTPROC_LIBS="\$(top_builddir)/gst-libs/ext/ffmpeg/libavcodec/libavcodec.la" + + dnl libgstpostproc.la: libs to statically link to + POSTPROC_LIBS="\$(top_builddir)/gst-libs/ext/ffmpeg/libpostproc/libpostproc.a \ + \$(top_builddir)/gst-libs/ext/ffmpeg/libavutil/libavutil.a" + FFMPEG_SUBDIRS=gst-libs AC_DEFINE(HAVE_AVI_H) AC_DEFINE([FFMPEG_SOURCE], ["local snapshot"], [Describes where the FFmpeg libraries come from.]) - ac_configure_args="$ac_configure_args --disable-v4l --disable-audio-oss --disable-dv1394 --disable-vhook --disable-ffmpeg --disable-ffserver --disable-ffplay --disable-sdltest --enable-pp" + ac_configure_args="$ac_configure_args --disable-vhook --disable-ffserver --disable-ffplay --enable-pp --enable-gpl --enable-static --disable-shared --extra-cflags=-fPIC" AC_CONFIG_SUBDIRS(gst-libs/ext/ffmpeg) AC_MSG_NOTICE([Using included FFMpeg code]) fi + AC_SUBST(FFMPEG_CFLAGS) AC_SUBST(FFMPEG_LIBS) AC_SUBST(FFMPEG_SUBDIRS) - +AC_SUBST(POSTPROC_CFLAGS) +AC_SUBST(POSTPROC_LIBS) +AC_SUBST(FFMPEG_CO_DIR) +AC_SUBST(FFMPEG_SVN) +AC_SUBST(FFMPEG_REVISION) + AC_DEFINE_UNQUOTED(HAVE_FFMPEG_UNINSTALLED, $HAVE_FFMPEG_UNINSTALLED, [Defined if building against uninstalled FFmpeg source]) AM_CONDITIONAL(HAVE_FFMPEG_UNINSTALLED, test x$HAVE_FFMPEG_UNINSTALLED = x1) diff --git a/ext/ffmpeg/Makefile.am b/ext/ffmpeg/Makefile.am index 95b9060..fc3f475 100644 --- a/ext/ffmpeg/Makefile.am +++ b/ext/ffmpeg/Makefile.am @@ -8,8 +8,9 @@ libgstffmpeg_la_SOURCES = gstffmpeg.c \ gstffmpegcfg.c \ gstffmpegdemux.c \ gstffmpegmux.c \ - gstffmpegdeinterlace.c \ - gstffmpegscale.c + gstffmpegdeinterlace.c +# \ +# gstffmpegscale.c libgstffmpeg_la_CFLAGS = $(GST_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) \ $(FFMPEG_CFLAGS) diff --git a/ext/ffmpeg/gstffmpeg.c b/ext/ffmpeg/gstffmpeg.c index a897023..3d695c4 100644 --- a/ext/ffmpeg/gstffmpeg.c +++ b/ext/ffmpeg/gstffmpeg.c @@ -143,7 +143,9 @@ plugin_init (GstPlugin * plugin) gst_ffmpegdemux_register (plugin); gst_ffmpegmux_register (plugin); gst_ffmpegdeinterlace_register (plugin); +#if 0 gst_ffmpegscale_register (plugin); +#endif #if 0 gst_ffmpegcsp_register (plugin); #endif diff --git a/ext/ffmpeg/gstffmpegcodecmap.c b/ext/ffmpeg/gstffmpegcodecmap.c index 2de5811..f3e906c 100644 --- a/ext/ffmpeg/gstffmpegcodecmap.c +++ b/ext/ffmpeg/gstffmpegcodecmap.c @@ -193,13 +193,10 @@ gst_ffmpeg_codecid_to_caps (enum CodecID codec_id, switch (codec_id) { case CODEC_ID_MPEG1VIDEO: - /* For decoding, CODEC_ID_MPEG2VIDEO is preferred... So omit here */ - if (encode) { - /* FIXME: bitrate */ - caps = gst_ff_vid_caps_new (context, codec_id, "video/mpeg", - "mpegversion", G_TYPE_INT, 1, - "systemstream", G_TYPE_BOOLEAN, FALSE, NULL); - } + /* FIXME: bitrate */ + caps = gst_ff_vid_caps_new (context, codec_id, "video/mpeg", + "mpegversion", G_TYPE_INT, 1, + "systemstream", G_TYPE_BOOLEAN, FALSE, NULL); break; case CODEC_ID_MPEG2VIDEO: @@ -288,12 +285,9 @@ gst_ffmpeg_codecid_to_caps (enum CodecID codec_id, break; case CODEC_ID_MP2: - /* we use CODEC_ID_MP3 for decoding */ - if (encode) { - /* FIXME: bitrate */ - caps = gst_ff_aud_caps_new (context, codec_id, "audio/mpeg", - "mpegversion", G_TYPE_INT, 1, "layer", G_TYPE_INT, 2, NULL); - } + /* FIXME: bitrate */ + caps = gst_ff_aud_caps_new (context, codec_id, "audio/mpeg", + "mpegversion", G_TYPE_INT, 1, "layer", G_TYPE_INT, 2, NULL); break; case CODEC_ID_MP3: @@ -310,26 +304,15 @@ gst_ffmpeg_codecid_to_caps (enum CodecID codec_id, } break; - case CODEC_ID_VORBIS: - /* This one is disabled for several reasons: - * - GStreamer already has perfect Ogg and Vorbis support - * - The ffmpeg implementation depends on libvorbis/libogg, - * which are not included in the ffmpeg that GStreamer ships. - * - The ffmpeg implementation depends on shared objects between - * the ogg demuxer and vorbis decoder, which GStreamer doesn't. - */ + case CODEC_ID_AC3: + /* FIXME: bitrate */ + caps = gst_ff_aud_caps_new (context, codec_id, "audio/x-ac3", NULL); break; - case CODEC_ID_AC3: - /* Decoding is disabled, because: - * - it depends on liba52, which we don't ship in ffmpeg. - * - we already have a liba52 plugin ourselves. - */ - if (encode) { - /* FIXME: bitrate */ - caps = gst_ff_aud_caps_new (context, codec_id, "audio/x-ac3", NULL); - } + case CODEC_ID_ATRAC3: + caps = gst_ff_aud_caps_new (context, codec_id, "audio/atrac3", NULL); break; + case CODEC_ID_DTS: caps = gst_ff_aud_caps_new (context, codec_id, "audio/x-dts", NULL); break; @@ -554,12 +537,15 @@ gst_ffmpeg_codecid_to_caps (enum CodecID codec_id, caps = gst_ff_vid_caps_new (context, codec_id, "video/x-vp6-flash", NULL); break; + case CODEC_ID_VP6A: + caps = gst_ff_vid_caps_new (context, codec_id, "video/x-vp6-alpha", NULL); + break; + case CODEC_ID_THEORA: caps = gst_ff_vid_caps_new (context, codec_id, "video/x-theora", NULL); break; case CODEC_ID_AAC: - case CODEC_ID_MPEG4AAC: caps = gst_ff_aud_caps_new (context, codec_id, "audio/mpeg", "mpegversion", G_TYPE_INT, 4, NULL); break; @@ -685,6 +671,14 @@ gst_ffmpeg_codecid_to_caps (enum CodecID codec_id, } break; + case CODEC_ID_KMVC: + caps = gst_ff_vid_caps_new (context, codec_id, "video/x-kmvc", NULL); + break; + + case CODEC_ID_NUV: + caps = gst_ff_vid_caps_new (context, codec_id, "video/x-nuv", NULL); + break; + case CODEC_ID_PNG: caps = gst_ff_vid_caps_new (context, codec_id, "image/png", NULL); break; @@ -811,6 +805,7 @@ gst_ffmpeg_codecid_to_caps (enum CodecID codec_id, case CODEC_ID_ADPCM_IMA_DK4: case CODEC_ID_ADPCM_IMA_WS: case CODEC_ID_ADPCM_IMA_SMJPEG: + case CODEC_ID_ADPCM_IMA_AMV: case CODEC_ID_ADPCM_MS: case CODEC_ID_ADPCM_4XM: case CODEC_ID_ADPCM_XA: @@ -823,6 +818,10 @@ gst_ffmpeg_codecid_to_caps (enum CodecID codec_id, case CODEC_ID_ADPCM_SBPRO_2: case CODEC_ID_ADPCM_SBPRO_3: case CODEC_ID_ADPCM_SBPRO_4: + case CODEC_ID_ADPCM_EA_R1: + case CODEC_ID_ADPCM_EA_R2: + case CODEC_ID_ADPCM_EA_R3: + case CODEC_ID_ADPCM_THP: { gchar *layout = NULL; @@ -845,6 +844,9 @@ gst_ffmpeg_codecid_to_caps (enum CodecID codec_id, case CODEC_ID_ADPCM_IMA_SMJPEG: layout = "smjpeg"; break; + case CODEC_ID_ADPCM_IMA_AMV: + layout = "amv"; + break; case CODEC_ID_ADPCM_MS: layout = "microsoft"; break; @@ -881,6 +883,18 @@ gst_ffmpeg_codecid_to_caps (enum CodecID codec_id, case CODEC_ID_ADPCM_SBPRO_4: layout = "sbpro4"; break; + case CODEC_ID_ADPCM_EA_R1: + layout = "ea-r1"; + break; + case CODEC_ID_ADPCM_EA_R2: + layout = "ea-r3"; + break; + case CODEC_ID_ADPCM_EA_R3: + layout = "ea-r3"; + break; + case CODEC_ID_ADPCM_THP: + layout = "thp"; + break; default: g_assert (0); /* don't worry, we never get here */ break; @@ -905,6 +919,11 @@ gst_ffmpeg_codecid_to_caps (enum CodecID codec_id, caps = gst_ff_aud_caps_new (context, codec_id, "audio/AMR-WB", NULL); break; + case CODEC_ID_NELLYMOSER: + caps = + gst_ff_aud_caps_new (context, codec_id, "audio/x-nellymoser", NULL); + break; + case CODEC_ID_RA_144: case CODEC_ID_RA_288: case CODEC_ID_COOK: @@ -1571,7 +1590,7 @@ gst_ffmpeg_caps_with_codecid (enum CodecID codec_id, gst_structure_get_int (str, "unknown_svq3_flag", &unknown_svq3_flag)) { context->extradata = (guint8 *) av_mallocz (0x64); - g_stpcpy (context->extradata, "SVQ3"); + g_stpcpy ((gchar *) context->extradata, "SVQ3"); flags = 1 << 3; flags |= low_delay; flags = flags << 2; @@ -2088,6 +2107,9 @@ gst_ffmpeg_caps_to_codecid (const GstCaps * caps, AVCodecContext * context) } else if (!strcmp (mimetype, "audio/x-ac3")) { id = CODEC_ID_AC3; audio = TRUE; + } else if (!strcmp (mimetype, "audio/atrac3")) { + id = CODEC_ID_ATRAC3; + audio = TRUE; } else if (!strcmp (mimetype, "audio/x-dts")) { id = CODEC_ID_DTS; audio = TRUE; @@ -2157,6 +2179,9 @@ gst_ffmpeg_caps_to_codecid (const GstCaps * caps, AVCodecContext * context) } else if (!strcmp (mimetype, "video/x-vp6-flash")) { id = CODEC_ID_VP6F; video = TRUE; + } else if (!strcmp (mimetype, "video/x-vp6-alpha")) { + id = CODEC_ID_VP6A; + video = TRUE; } else if (!strcmp (mimetype, "video/x-flash-screen")) { id = CODEC_ID_FLASHSV; video = TRUE; @@ -2367,6 +2392,9 @@ gst_ffmpeg_caps_to_codecid (const GstCaps * caps, AVCodecContext * context) } } + } else if (!strcmp (mimetype, "audio/x-nellymoser")) { + id = CODEC_ID_NELLYMOSER; + audio = TRUE; } else if (!strncmp (mimetype, "audio/x-gst_ff-", 15)) { gchar ext[16]; AVCodec *codec; @@ -2465,6 +2493,9 @@ gst_ffmpeg_get_codecid_longname (enum CodecID codec_id) case CODEC_ID_AC3: name = "AC-3 audio"; break; + case CODEC_ID_ATRAC3: + name = "Sony ATRAC-3"; + break; case CODEC_ID_DTS: name = "DTS Audio"; break; @@ -2564,6 +2595,9 @@ gst_ffmpeg_get_codecid_longname (enum CodecID codec_id) case CODEC_ID_VP6F: name = "VP6 Flash video"; break; + case CODEC_ID_VP6A: + name = "VP6 Alpha video"; + break; case CODEC_ID_FLASHSV: name = "Flash Screen Video"; break; @@ -2571,7 +2605,6 @@ gst_ffmpeg_get_codecid_longname (enum CodecID codec_id) name = "Theora video"; break; case CODEC_ID_AAC: - case CODEC_ID_MPEG4AAC: name = "MPEG-2/4 AAC audio"; break; case CODEC_ID_ASV1: @@ -2745,6 +2778,12 @@ gst_ffmpeg_get_codecid_longname (enum CodecID codec_id) case CODEC_ID_ADPCM_IMA_SMJPEG: name = "IMA/SMJPEG ADPCM audio"; break; + case CODEC_ID_ADPCM_IMA_AMV: + name = "IMA/AMV ADPCM audio"; + break; + case CODEC_ID_ADPCM_THP: + name = "Nintendo THP ADPCM audio"; + break; case CODEC_ID_ADPCM_MS: name = "Microsoft ADPCM audio"; break; @@ -2781,6 +2820,15 @@ gst_ffmpeg_get_codecid_longname (enum CodecID codec_id) case CODEC_ID_ADPCM_YAMAHA: name = "Yamaha ADPCM"; break; + case CODEC_ID_ADPCM_EA_R1: + name = "EA ADPCM R1"; + break; + case CODEC_ID_ADPCM_EA_R2: + name = "EA ADPCM R2"; + break; + case CODEC_ID_ADPCM_EA_R3: + name = "EA ADPCM R3"; + break; case CODEC_ID_RA_144: name = "Realaudio 14k4bps"; break; @@ -2850,6 +2898,15 @@ gst_ffmpeg_get_codecid_longname (enum CodecID codec_id) case CODEC_ID_AMR_WB: name = "3GPP AMR WideBand speech audio codec"; break; + case CODEC_ID_KMVC: + name = "Karl Morton's video Codec"; + break; + case CODEC_ID_NUV: + name = "NuppelVideo codec"; + break; + case CODEC_ID_NELLYMOSER: + name = "Nellymoser ASAO audio codec"; + break; default: GST_LOG ("Unknown codecID 0x%x", codec_id); break; diff --git a/ext/ffmpeg/gstffmpegdec.c b/ext/ffmpeg/gstffmpegdec.c index 0b6a948..5d0c958 100644 --- a/ext/ffmpeg/gstffmpegdec.c +++ b/ext/ffmpeg/gstffmpegdec.c @@ -230,7 +230,8 @@ gst_ffmpegdec_base_init (GstFFMpegDecClass * klass) details.description = g_strdup_printf ("FFMPEG %s decoder", params->in_plugin->name); details.author = "Wim Taymans <wim@fluendo.com>, " - "Ronald Bultje <rbultje@ronald.bitfreak.net>"; + "Ronald Bultje <rbultje@ronald.bitfreak.net>, " + "Edward Hervey <bilboed@bilboed.com>"; gst_element_class_set_details (element_class, &details); g_free (details.longname); g_free (details.klass); @@ -693,6 +694,8 @@ gst_ffmpegdec_get_buffer (AVCodecContext * context, AVFrame * picture) switch (context->codec_type) { case CODEC_TYPE_VIDEO: + /* some ffmpeg video plugins don't see the point in setting codec_type ... */ + case CODEC_TYPE_UNKNOWN: avcodec_align_dimensions (context, &width, &height); bufsize = avpicture_get_size (context->pix_fmt, width, height); @@ -1586,7 +1589,7 @@ gst_ffmpegdec_audio_frame (GstFFMpegDec * ffmpegdec, GstBuffer ** outbuf, GstFlowReturn * ret) { gint len = -1; - gint have_data; + gint have_data = AVCODEC_MAX_AUDIO_FRAME_SIZE; GST_DEBUG_OBJECT (ffmpegdec, "size:%d, ts:%" GST_TIME_FORMAT ", dur:%" GST_TIME_FORMAT @@ -1602,7 +1605,7 @@ gst_ffmpegdec_audio_frame (GstFFMpegDec * ffmpegdec, ffmpegdec->last_buffer = NULL; } - len = avcodec_decode_audio (ffmpegdec->context, + len = avcodec_decode_audio2 (ffmpegdec->context, (int16_t *) GST_BUFFER_DATA (*outbuf), &have_data, data, size); GST_DEBUG_OBJECT (ffmpegdec, "Decode audio: len=%d, have_data=%d", len, have_data); @@ -2242,10 +2245,18 @@ gst_ffmpegdec_register (GstPlugin * plugin) in_plugin = first_avcodec; + GST_LOG ("Registering decoders"); + while (in_plugin) { GstFFMpegDecClassParams *params; GstCaps *srccaps = NULL, *sinkcaps = NULL; gchar *type_name; + gchar *plugin_name; + + /* only decoders */ + if (!in_plugin->decode) { + goto next; + } /* no quasi-codecs, please */ if (in_plugin->id == CODEC_ID_RAWVIDEO || @@ -2254,30 +2265,46 @@ gst_ffmpegdec_register (GstPlugin * plugin) goto next; } - /* only decoders */ - if (!in_plugin->decode) { + /* no codecs for which we're GUARANTEED to have better alternatives */ + /* MPEG1VIDEO : the mpeg2video decoder is preferred */ + /* MP2 : Use MP3 for decoding */ + if (!strcmp (in_plugin->name, "gif") || + !strcmp (in_plugin->name, "vorbis") || + !strcmp (in_plugin->name, "mpeg1video") || + !strcmp (in_plugin->name, "mp2")) { + GST_LOG ("Ignoring decoder %s", in_plugin->name); goto next; } /* name */ if (!gst_ffmpeg_get_codecid_longname (in_plugin->id)) { - GST_INFO ("Add decoder %s (%d) please", in_plugin->name, in_plugin->id); + GST_WARNING ("Add a longname mapping for decoder %s (%d) please", + in_plugin->name, in_plugin->id); goto next; } /* first make sure we've got a supported type */ sinkcaps = gst_ffmpeg_codecid_to_caps (in_plugin->id, NULL, FALSE); + if (!sinkcaps) { + GST_WARNING ("Couldn't get input caps for decoder '%s'", in_plugin->name); + } if (in_plugin->type == CODEC_TYPE_VIDEO) { srccaps = gst_caps_from_string ("video/x-raw-rgb; video/x-raw-yuv"); } else { srccaps = gst_ffmpeg_codectype_to_caps (in_plugin->type, NULL, in_plugin->id); } - if (!sinkcaps || !srccaps) + if (!sinkcaps || !srccaps) { + GST_WARNING ("Couldn't get source or sink caps for decoder %s", + in_plugin->name); goto next; + } /* construct the type */ - type_name = g_strdup_printf ("ffdec_%s", in_plugin->name); + plugin_name = g_strdup ((gchar *) in_plugin->name); + g_strdelimit (plugin_name, NULL, '_'); + type_name = g_strdup_printf ("ffdec_%s", plugin_name); + g_free (plugin_name); /* if it's already registered, drop it */ if (g_type_from_name (type_name)) { @@ -2338,5 +2365,7 @@ gst_ffmpegdec_register (GstPlugin * plugin) in_plugin = in_plugin->next; } + GST_LOG ("Finished Registering decoders"); + return TRUE; } diff --git a/ext/ffmpeg/gstffmpegdemux.c b/ext/ffmpeg/gstffmpegdemux.c index 8ea8c6e..30872b7 100644 --- a/ext/ffmpeg/gstffmpegdemux.c +++ b/ext/ffmpeg/gstffmpegdemux.c @@ -143,9 +143,6 @@ gst_ffmpegdemux_averror (gint av_errno) case AVERROR_NUMEXPECTED: message = "Number syntax expected in filename"; break; - case AVERROR_INVALIDDATA: - message = "Invalid data found"; - break; case AVERROR_NOMEM: message = "Not enough memory"; break; @@ -1458,6 +1455,8 @@ gst_ffmpegdemux_register (GstPlugin * plugin) in_plugin = first_iformat; + GST_LOG ("Registering demuxers"); + while (in_plugin) { gchar *type_name, *typefind_name; gchar *p, *name = NULL; @@ -1465,6 +1464,9 @@ gst_ffmpegdemux_register (GstPlugin * plugin) gint rank; gboolean register_typefind_func = TRUE; + GST_LOG ("Attempting to handle ffmpeg demuxer plugin %s [%s]", + in_plugin->name, in_plugin->long_name); + /* no emulators */ if (!strncmp (in_plugin->long_name, "raw ", 4) || !strncmp (in_plugin->long_name, "pcm ", 4) || @@ -1546,6 +1548,7 @@ gst_ffmpegdemux_register (GstPlugin * plugin) /* Try to find the caps that belongs here */ sinkcaps = gst_ffmpeg_formatid_to_caps (name); if (!sinkcaps) { + GST_WARNING ("Couldn't get sinkcaps for demuxer %s", in_plugin->name); goto next; } /* This is a bit ugly, but we just take all formats @@ -1604,5 +1607,7 @@ gst_ffmpegdemux_register (GstPlugin * plugin) in_plugin = in_plugin->next; } + GST_LOG ("Finished registering demuxers"); + return TRUE; } diff --git a/ext/ffmpeg/gstffmpegenc.c b/ext/ffmpeg/gstffmpegenc.c index eba1193..d0ccfec 100644 --- a/ext/ffmpeg/gstffmpegenc.c +++ b/ext/ffmpeg/gstffmpegenc.c @@ -946,6 +946,8 @@ gst_ffmpegenc_register (GstPlugin * plugin) in_plugin = first_avcodec; + GST_LOG ("Registering encoders"); + /* build global ffmpeg param/property info */ gst_ffmpeg_cfg_init (); @@ -967,9 +969,17 @@ gst_ffmpegenc_register (GstPlugin * plugin) goto next; } + /* no codecs for which we're GUARANTEED to have better alternatives */ + if (!strcmp (in_plugin->name, "vorbis") || + !strcmp (in_plugin->name, "gif") || !strcmp (in_plugin->name, "flac")) { + GST_LOG ("Ignoring encoder %s", in_plugin->name); + goto next; + } + /* name */ if (!gst_ffmpeg_get_codecid_longname (in_plugin->id)) { - GST_INFO ("Add encoder %s (%d) please", in_plugin->name, in_plugin->id); + GST_WARNING ("Add a longname mapping for encoder %s (%d) please", + in_plugin->name, in_plugin->id); goto next; } @@ -982,9 +992,11 @@ gst_ffmpegenc_register (GstPlugin * plugin) sinkcaps = gst_ffmpeg_codectype_to_caps (in_plugin->type, NULL, in_plugin->id); } - if (!sinkcaps || !srccaps) + if (!sinkcaps || !srccaps) { + GST_WARNING ("Couldn't get either source/sink caps for encoder %s", + in_plugin->name); goto next; - + } /* construct the type */ type_name = g_strdup_printf ("ffenc_%s", in_plugin->name); @@ -1018,5 +1030,7 @@ gst_ffmpegenc_register (GstPlugin * plugin) in_plugin = in_plugin->next; } + GST_LOG ("Finished registering encoders"); + return TRUE; } diff --git a/ext/ffmpeg/gstffmpegmux.c b/ext/ffmpeg/gstffmpegmux.c index 4d14407..75c6d72 100644 --- a/ext/ffmpeg/gstffmpegmux.c +++ b/ext/ffmpeg/gstffmpegmux.c @@ -673,6 +673,8 @@ gst_ffmpegmux_register (GstPlugin * plugin) in_plugin = first_oformat; + GST_LOG ("Registering muxers"); + while (in_plugin) { gchar *type_name; gchar *p; @@ -682,11 +684,15 @@ gst_ffmpegmux_register (GstPlugin * plugin) /* Try to find the caps that belongs here */ srccaps = gst_ffmpeg_formatid_to_caps (in_plugin->name); if (!srccaps) { + GST_WARNING ("Couldn't get source caps for muxer %s", in_plugin->name); goto next; } if (!gst_ffmpeg_formatid_get_codecids (in_plugin->name, &video_ids, &audio_ids)) { gst_caps_unref (srccaps); + GST_WARNING + ("Couldn't get sink caps for muxer %s, mapping maybe missing ?", + in_plugin->name); goto next; } videosinkcaps = video_ids ? gst_ffmpegmux_get_id_caps (video_ids) : NULL; @@ -749,5 +755,7 @@ gst_ffmpegmux_register (GstPlugin * plugin) in_plugin = in_plugin->next; } + GST_LOG ("Finished registering muxers"); + return TRUE; } diff --git a/ffmpegrev b/ffmpegrev new file mode 100644 index 0000000..275cd79 --- /dev/null +++ b/ffmpegrev @@ -0,0 +1,4 @@ +# 6315, 10844, 10876, 10910, 10932, 10939 +FFMPEG_REVISION=10910 +FFMPEG_CO_DIR=gst-libs/ext/ffmpeg +FFMPEG_SVN=svn://svn.mplayerhq.hu/ffmpeg/trunk
\ No newline at end of file diff --git a/gst-libs/ext/Makefile.am b/gst-libs/ext/Makefile.am index 137ab3a..67b79f8 100644 --- a/gst-libs/ext/Makefile.am +++ b/gst-libs/ext/Makefile.am @@ -8,8 +8,48 @@ # - add an all-local hook so it does get built # this also satisfies make distcheck -SUBDIRS = +SUBDIRS = DIST_SUBDIRS = ffmpeg +TMP_DIST_DIR=ffmpeg-dist +DIST_DIR=$(TMP_DIST_DIR)/.ffmpeg all-local: cd ffmpeg && $(MAKE) + +clean-local: + cd ffmpeg && $(MAKE) distclean + +dist-clean: + rm -rf $(TMP_DIST_DIR) + +dist-local: dist-clean + svn -r $(FFMPEG_REVISION) co $(FFMPEG_SVN) $(TMP_DIST_DIR) + mkdir $(DIST_DIR) + pwd + cp $(TMP_DIST_DIR)/*.c $(TMP_DIST_DIR)/*.h $(TMP_DIST_DIR)/Makefile $(TMP_DIST_DIR)/configure $(TMP_DIST_DIR)/version.sh $(DIST_DIR) + cp $(TMP_DIST_DIR)/common.mak $(TMP_DIST_DIR)/Changelog $(TMP_DIST_DIR)/COPYING.* $(TMP_DIST_DIR)/INSTALL $(DIST_DIR) + cp $(TMP_DIST_DIR)/Doxyfile $(TMP_DIST_DIR)/ffinstall.nsi $(TMP_DIST_DIR)/CREDITS $(TMP_DIST_DIR)/MAINTAINERS $(DIST_DIR) + @for d in `cd $(TMP_DIST_DIR) && ls -d */`; \ + do mkdir $(DIST_DIR)/$$d; \ + cp $(TMP_DIST_DIR)/$$d* $(DIST_DIR)/$$d; \ + if [ `ls -d $(TMP_DIST_DIR)/$$d*/ | wc -w` != "" ]; \ + then for id in `cd $(TMP_DIST_DIR)/$$d && ls -d */`; \ + do mkdir $(DIST_DIR)/$$d$$id; \ + cp $(TMP_DIST_DIR)/$$d$$id/*.c $(TMP_DIST_DIR)/$$d$$id/*.h $(DIST_DIR)/$$d$$id; \ + done \ + fi \ + done + rm -rf ffmpeg + mv $(DIST_DIR) ffmpeg + echo "Patching ffmpeg ./configure" + sed -e '/Unknown option/ {N;N;s/exit 1//; }' ffmpeg/configure > ffmpeg/configure.tmp + mv ffmpeg/configure.tmp ffmpeg/configure + chmod +x ffmpeg/configure + rm -rf $(TMP_DIST_DIR) + +distdir: dist-local + cp -r ffmpeg Makefile* ${distdir} + +dist: dist-local + tar -czf ffmpeg.tar.gz ffmpeg + |