GNOME Bugzilla – Bug 324366
gst-ffmpeg doesn't support --disable-encoders
Last modified: 2006-05-07 01:19:33 UTC
With gstreamer0.10/gst-plugins-base0.10/gstreamer0.10-ffmpeg packaged on Ubuntu: "$ gst-inspect-0.10 /usr/lib/gstreamer-0.10/libgstffmpeg.so Error loading plugin file: Opening module failed" I'm not sure if that's due to that, but: "$ ldd -r /usr/lib/gstreamer-0.10/libgstffmpeg.so undefined symbol: put_be32 (/usr/lib/gstreamer-0.10/libgstffmpeg.so) undefined symbol: url_write (/usr/lib/gstreamer-0.10/libgstffmpeg.so) undefined symbol: put_buffer (/usr/lib/gstreamer-0.10/libgstffmpeg.so) undefined symbol: lsb2full (/usr/lib/gstreamer-0.10/libgstffmpeg.so) undefined symbol: put_le16 (/usr/lib/gstreamer-0.10/libgstffmpeg.so) undefined symbol: put_byte (/usr/lib/gstreamer-0.10/libgstffmpeg.so) undefined symbol: put_be16 (/usr/lib/gstreamer-0.10/libgstffmpeg.so) undefined symbol: put_le32 (/usr/lib/gstreamer-0.10/libgstffmpeg.so) undefined symbol: put_tag (/usr/lib/gstreamer-0.10/libgstffmpeg.so) undefined symbol: mmf_rate (/usr/lib/gstreamer-0.10/libgstffmpeg.so) undefined symbol: put_be64 (/usr/lib/gstreamer-0.10/libgstffmpeg.so) undefined symbol: mpegts_crc32 (/usr/lib/gstreamer-0.10/libgstffmpeg.so) undefined symbol: put_flush_packet (/usr/lib/gstreamer-0.10/libgstffmpeg.so) linux-gate.so.1 => (0xffffe000) libgstreamer-0.10.so.0 => /usr/lib/libgstreamer-0.10.so.0 (0xb7bf0000) libgobject-2.0.so.0 => /usr/lib/libgobject-2.0.so.0 (0xb7bb7000) libgmodule-2.0.so.0 => /usr/lib/libgmodule-2.0.so.0 (0xb7bb4000) libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb7bb1000) libgthread-2.0.so.0 => /usr/lib/libgthread-2.0.so.0 (0xb7bad000) libxml2.so.2 => /usr/lib/libxml2.so.2 (0xb7aa3000) libz.so.1 => /usr/lib/libz.so.1 (0xb7a8f000) libm.so.6 => /lib/tls/i686/cmov/libm.so.6 (0xb7a6c000) libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 (0xb79e9000) libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0 (0xb79d7000) libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb78a9000) /lib/ld-linux.so.2 (0x80000000)"
Do you use any additional configure option for packaging? (--disable-foo etc.) If so, what are they? Is that on breezy or dapper?
I'm building the package on a dapper installation. It happens when the "--disable-encoders" configure option is used
Something weird here. gst-ffmpeg doesn't have that option, but the contained ffmpeg does. A/ I don't know if this is a wanted behaviour (not building encoders for gst-ffmpeg). B/ If we want this, we need a configure option (with adequate ifdef'ed pieces of code) for gst-ffmpeg
Created attachment 59926 [details] [review] Fix missing symbols / move #ifdef CONFIG_MUXERS Sam Morris proposed a hackish patch (attached) to fix the #ifdef / missing symbols issue. It seems that refreshing the ffmpeg snapshot would be enough. It probably will cause an error to define crc_table twice as in this patch if you configure without --disable-encoders. Cheers,
the ffmpeg snapshot has been refreshed as of 3 days ago. Do you still have that issue ?
(In reply to comment #5) Assuming the refresh made it to anoncvs.freedesktop.org, yes. The following symbols are still missing: undefined symbol: put_be32 (./ext/ffmpeg/.libs/libgstffmpeg.so) undefined symbol: put_le16 (./ext/ffmpeg/.libs/libgstffmpeg.so) undefined symbol: put_be16 (./ext/ffmpeg/.libs/libgstffmpeg.so) undefined symbol: put_le32 (./ext/ffmpeg/.libs/libgstffmpeg.so) undefined symbol: put_tag (./ext/ffmpeg/.libs/libgstffmpeg.so) undefined symbol: put_be64 (./ext/ffmpeg/.libs/libgstffmpeg.so) undefined symbol: url_write (./ext/ffmpeg/.libs/libgstffmpeg.so) defined only if CONFIG_MUXERS || CONFIG_PROTOCOLS are defined. I guess gst-ffmpeg's autotools stuff should be updated to define CONFIG_PROTOCOLS. undefined symbol: mpegts_crc32 (./ext/ffmpeg/.libs/libgstffmpeg.so) defined unconditionally in mpegtsenc.c; but this file is only built if CONFIG_ENCODERS is set. Since everything else in this file is only defined if CONFIG_MUXERS is defined, Makefile.am should be altered to always compile this file--perhaps move it to format_SRC.
Created attachment 59962 [details] [review] Patch for ffmpeg's autotools stuff This patch would be more suitable to apply to gst-ffmpeg itself. It implements the changes I suggested in my previous comment.
Edward, yes the issue is still there with 0.10.1, try building with --disable-encoders, the build succeeds, but missing symbols prevent the ffmpeg plugin to be loaded: bee% gst-launch-0.10 --gst-debug-level=2 ffmpeg WARN (0x80509a0 - 0:00:00.293344000) GST_PLUGIN_LOADING(23443) gstplugin.c(414):gst_plugin_load_file: module_open failed: /usr/lib/gstreamer-0.10/libgstffmpeg.so: undefined symbol: mpegts_crc32 (the actual symbol will vary, I've updated Sam's patch to fix these) Bye,
I don't understand how this bug works - you call gst-ffmpeg's configure with --disable-encoders and this is somehow being passed to the contained ffmpeg snapshot, or do you have other patches for the toplevel configure to enable that? Sam's second patch for the ffmpeg snapshot looks ok to me, I just want to make sure I understand exactly what's going on first.
OK, all the command line args to ./configure in the toplevel are passed to the contained ffmpeg snapshot, so that explains that. Merging the patch. I can build without encoders here fine now: * gst-libs/ext/ffmpeg/configure.ac: * gst-libs/ext/ffmpeg/libavformat/Makefile.am: * gst-libs/ext/ffmpeg/patches/autotools.patch: Merge patch by Sam Morris to allow disabling of decoders. Fixes #324366