After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 739964 - Missing GOOD element: JPEG decoder, depending on dead jpeg-mmx
Missing GOOD element: JPEG decoder, depending on dead jpeg-mmx
Status: RESOLVED INVALID
Product: GStreamer
Classification: Platform
Component: gst-plugins-good
1.4.4
Other Linux
: Normal normal
: NONE
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2014-11-11 14:09 UTC by Sergei
Modified: 2014-11-11 20:13 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
config log for ./configure in gst-plugins-good-1.4.4 (212.10 KB, text/x-log)
2014-11-11 15:18 UTC, Sergei
Details
unknown annotation: nullable messages (13.46 KB, text/plain)
2014-11-11 20:13 UTC, Sergei
Details

Description Sergei 2014-11-11 14:09:06 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?
Comment 1 Sebastian Dröge (slomo) 2014-11-11 14:20:58 UTC
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?
Comment 2 Sergei 2014-11-11 15:18:20 UTC
Created attachment 290422 [details]
config log for ./configure in gst-plugins-good-1.4.4
Comment 3 Sergei 2014-11-11 15:19:16 UTC
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
Comment 4 Sergei 2014-11-11 15:27:35 UTC
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*'
Comment 5 Sebastian Dröge (slomo) 2014-11-11 15:34:04 UTC
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.
Comment 6 Tim-Philipp Müller 2014-11-11 15:41:45 UTC
libjpeg-dev should install the right thing.
Comment 7 Sergei 2014-11-11 16:17:38 UTC
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.
Comment 8 Tim-Philipp Müller 2014-11-11 18:35:16 UTC
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.
Comment 9 Sergei 2014-11-11 20:12:00 UTC
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)
Comment 10 Sergei 2014-11-11 20:13:10 UTC
Created attachment 290432 [details]
unknown annotation: nullable messages