GNOME Bugzilla – Bug 739964
Missing GOOD element: JPEG decoder, depending on dead jpeg-mmx
Last modified: 2014-11-11 20:13:10 UTC
After compiling from the source GStreamer v1.4.4 (announced yesterday on gstreamer-devel): fl@zbx1:~/ads$ gst-launch-1.0 filesrc location=495.jpg ! decodebin ! imagefreeze ! videoconvert ! ximagesink Setting pipeline to PAUSED ... Pipeline is PREROLLING ... Missing element: JPEG decoder ERROR: from element /GstPipeline:pipeline0/GstDecodeBin:decodebin0: Your GStreamer installation is missing a plug-in. Additional debug info: gstdecodebin2.c(3977): gst_decode_bin_expose (): /GstPipeline:pipeline0/GstDecodeBin:decodebin0: no suitable plugins found ERROR: pipeline doesn't want to preroll. Setting pipeline to NULL ... Freeing pipeline ... It appears that the jpeg decoder depends on jpeg-mmx and as result it is not built: configure:32448: *** checking feature: jpeg library *** configure:32452: *** for plug-ins: jpeg *** configure:32504: checking for jpeg_set_defaults in -ljpeg-mmx configure:32529: gcc -std=gnu99 -o conftest -g -O2 conftest.c -ljpeg-mmx >&5 /usr/bin/ld: cannot find -ljpeg-mmx collect2: error: ld returned 1 exit status Jpeg-mmx is obsoleted 8 years already: # jpeg-mmx # ======== # Copied and pasted from an entry on http://mjpeg.sourceforge.net/: # # (Nov 16th, 2006 - by Bernhard) # # The jpeg-mmx is declared dead. # There are several causes. The most important is the minimal speed gain you # have with machinges running faster than 1GHz. The other thing is that it # speed up things only on 32bit Intel and AMD machines. The last thing is that # we have no maintaner for the jpeg-mmx, and it cause problems with other # packages (libquicktime for example) So we have removed the jpeg-mmx from the # list of downloadable software. It is also obsoleted in Ubuntu 14.04. Is there any "minimal" set of packages required to build a more-or-less complete/representative GStreamer (rather than by trial and error, finding missing dependencies in logs)? What is the preferred Linux distribution?
If you look a few lines lower in the configure output or in configure.ac you would see that it also checks for libjpeg. Which can be satisfied by the old libjpeg or by libjpeg-turbo, the latter being used by all current Linux distributions. How does it fail to detect libjpeg for you? Do you have the headers and other development files installed? Can you provide the config.log created by configure?
Created attachment 290422 [details] config log for ./configure in gst-plugins-good-1.4.4
Thanks, a symbolic link was missing: root@zbx1:/usr/lib/x86_64-linux-gnu# ll libjpeg* lrwxrwxrwx 1 root root 16 nov 10 14:58 libjpeg.so.8 -> libjpeg.so.8.0.2 -rw-r--r-- 1 root root 281288 dec 19 2013 libjpeg.so.8.0.2 I added it: root@zbx1:/usr/lib/x86_64-linux-gnu# ln -s libjpeg.so.8.0.2 libjpeg.so root@zbx1:/usr/lib/x86_64-linux-gnu# ll libjpeg* lrwxrwxrwx 1 root root 16 nov 11 15:43 libjpeg.so -> libjpeg.so.8.0.2 lrwxrwxrwx 1 root root 16 nov 10 14:58 libjpeg.so.8 -> libjpeg.so.8.0.2 -rw-r--r-- 1 root root 281288 dec 19 2013 libjpeg.so.8.0.2 libjpeg.so.8.0.2 is indeed in the turbo package: root@zbx1:/# cat ./var/lib/dpkg/info/libjpeg-turbo8:amd64.list /. /usr /usr/share /usr/share/lintian /usr/share/lintian/overrides /usr/share/lintian/overrides/libjpeg-turbo8 /usr/share/doc /usr/share/doc/libjpeg-turbo8 /usr/share/doc/libjpeg-turbo8/copyright /usr/share/doc/libjpeg-turbo8/changelog.Debian.gz /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/libjpeg.so.8.0.2 /usr/lib/x86_64-linux-gnu/libjpeg.so.8 root@zbx1:/# but apparently they forgot to add the link I did. Now jpeg is NOT excluded: configure: *** Plug-ins with dependencies that will NOT be built: 1394 aasink cacasink directsoundsink dv flac jack osxaudio osxvideosink pulseaudio shout2 souphttpsrc speex sunaudio vpx waveformsink wavpack I have linux headers installed but make fails nevertheless: ... make -C jpeg make[3]: Entering directory `/home/fl/Downloads/gstreamer-1.4.4/gst-plugins-good-1.4.4/ext/jpeg' CC libgstjpeg_la-gstjpeg.lo In file included from gstjpeg.c:28:0: gstjpegdec.h:38:21: fatal error: jpeglib.h: No such file or directory #include <jpeglib.h> ^ compilation terminated. make[3]: *** [libgstjpeg_la-gstjpeg.lo] Error 1 make[3]: Leaving directory `/home/fl/Downloads/gstreamer-1.4.4/gst-plugins-good-1.4.4/ext/jpeg' make[2]: *** [jpeg] Error 2 make[2]: Leaving directory `/home/fl/Downloads/gstreamer-1.4.4/gst-plugins-good-1.4.4/ext' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/home/fl/Downloads/gstreamer-1.4.4/gst-plugins-good-1.4.4' make: *** [all] Error 2
root@zbx1:/# apt-get install jpeglib Reading package lists... Done Building dependency tree Reading state information... Done E: Unable to locate package jpeglib root@zbx1:/# apt-get install jpeglib* Reading package lists... Done Building dependency tree Reading state information... Done E: Unable to locate package jpeglib* E: Couldn't find any package by regex 'jpeglib*'
That symlink is provided by libjpeg62-turbo-dev here on Debian. I assume the same applies to Ubuntu too. You always need to install the package with the headers and other development files for compiling against these libraries.
libjpeg-dev should install the right thing.
Thanks, installing libjpeg-dev and libjpeg-turbo8-dev did the job (I installed both simultaneously not to wait configuring/making twice) It was actually libjpeg-turbo8-dev on Ubuntu 14.04, which did the job. Therefore, I asked for, if possible: 1. a list of preinstalled packages to build a more or less representative GStreamer (e.g., flex, bison, libbz2, ...); otherwise it turns in an infinite trial and error exercise; 2. a preferred Linux distribution and version for building GStreamer; otherwise, annoying package names discrepancies.
sudo apt-get build-dep gst-plugins-good1.0 will do the trick (for gst-plugins-good). There is no "preferred" Linux distro, although you are more likely to find support for Debian, Fedora or Ubuntu than others.
Thanks! I had about 1000 packages missing. (A stupid question: how does apt-get know about what is needed by gstreamer-1.4.4 sources I just downloaded?) Now configure and make fare much better. Making dependencies should have been included in some HOWTO, FAQ, or makefile (in the source distribution)... Maybe it's inconsequential, but there were lots of "unknown annotation: nullable" (see attachment)
Created attachment 290432 [details] unknown annotation: nullable messages