summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEdward Hervey <bilboed@bilboed.com>2007-11-15 10:01:43 +0000
committerEdward Hervey <bilboed@bilboed.com>2007-11-15 10:01:43 +0000
commita892f18f58ede22341be5b117e564cdfeae9d7df (patch)
tree57efd7b2a497fb439b95b2352ffafc3aecd3d09e
parentf48860b3736e8e1f66f1fd888374e75c4a73f7ac (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--ChangeLog93
-rw-r--r--Makefile.am2
-rwxr-xr-xautogen.sh50
-rw-r--r--configure.ac39
-rw-r--r--ext/ffmpeg/Makefile.am5
-rw-r--r--ext/ffmpeg/gstffmpeg.c2
-rw-r--r--ext/ffmpeg/gstffmpegcodecmap.c123
-rw-r--r--ext/ffmpeg/gstffmpegdec.c45
-rw-r--r--ext/ffmpeg/gstffmpegdemux.c11
-rw-r--r--ext/ffmpeg/gstffmpegenc.c20
-rw-r--r--ext/ffmpeg/gstffmpegmux.c8
-rw-r--r--ffmpegrev4
-rw-r--r--gst-libs/ext/Makefile.am42
13 files changed, 335 insertions, 109 deletions
diff --git a/ChangeLog b/ChangeLog
index f00c495..585b285 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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)
diff --git a/autogen.sh b/autogen.sh
index 46f248e..5fedf2b 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -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
+