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 686176 - gstreamer 1.0 ignores v4l2 quirk flags; video upside-down
gstreamer 1.0 ignores v4l2 quirk flags; video upside-down
Status: RESOLVED NOTGNOME
Product: GStreamer
Classification: Platform
Component: gst-plugins-good
1.x
Other Linux
: Normal normal
: git master
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2012-10-15 17:59 UTC by Mantas Mikulėnas (grawity)
Modified: 2012-10-17 15:58 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Mantas Mikulėnas (grawity) 2012-10-15 17:59:35 UTC
My Asus laptop's webcam is mounted upside-down (which seems to be rather common), and the v4l-utils libraries have a flag [1] to handle this issue, so programs using gstreamer-0.10 (such as Cheese) display the video correctly.

However, the v4l flags are completely ignored in gstreamer-1.0 and it again displays everything upside-down, unless I manually LD_PRELOAD the "v4l2convert.so" library (which is provided by v4l-utils to make broken programs work).

Normal:
# unset LD_PRELOAD
# gst-launch-0.10 v4l2src ! autovideosink

Upside-down:
# unset LD_PRELOAD
# gst-launch-1.0 v4l2src ! autovideosink

Normal again:
# export LD_PRELOAD=/usr/lib/libv4l/v4l2convert.so
# gst-launch-1.0 v4l2src ! autovideosink

[1]: http://git.linuxtv.org/v4l-utils.git/commitdiff/d28aede850bb2c4076a7bc88764aac4150c7f9db
Comment 1 Tim-Philipp Müller 2012-10-16 20:26:14 UTC
> However, the v4l flags are completely ignored in gstreamer-1.0 and it again
> displays everything upside-down, unless I manually LD_PRELOAD the
> "v4l2convert.so" library (which is provided by v4l-utils to make broken
> programs work).

Could you provide the output of:

 $ ldd /usr/lib/gstreamer-0.10/libgstvideo4linux2.so

and

 $ ldd /usr/lib/gstreamer-1.0/libgstvideo4linux2.so

?

Not sure if we should be doing anything special (should we?).
Comment 2 Mantas Mikulėnas (grawity) 2012-10-17 12:40:44 UTC
It seems that the 0.10 library is explicitly linked against libv4l2.so, which then loads libv4lconvert.so.

$ ldd /usr/lib/gstreamer-0.10/libgstvideo4linux2.so
	linux-vdso.so.1 (0x00007fff571fb000)
	libgstbase-0.10.so.0 => /usr/lib/libgstbase-0.10.so.0 (0x00007f34a407e000)
	libgstcontroller-0.10.so.0 => /usr/lib/libgstcontroller-0.10.so.0 (0x00007f34a3e57000)
	libgstvideo-0.10.so.0 => /usr/lib/libgstvideo-0.10.so.0 (0x00007f34a3c3b000)
	libgstinterfaces-0.10.so.0 => /usr/lib/libgstinterfaces-0.10.so.0 (0x00007f34a3a28000)
	libgstreamer-0.10.so.0 => /usr/lib/libgstreamer-0.10.so.0 (0x00007f34a373f000)
	libgmodule-2.0.so.0 => /usr/lib/libgmodule-2.0.so.0 (0x00007f34a353b000)
	libxml2.so.2 => /usr/lib/libxml2.so.2 (0x00007f34a31de000)
	libX11.so.6 => /usr/lib/libX11.so.6 (0x00007f34a2ea5000)
	libXv.so.1 => /usr/lib/libXv.so.1 (0x00007f34a2c9f000)
	libXext.so.6 => /usr/lib/libXext.so.6 (0x00007f34a2a8b000)
	libv4l2.so.0 => /usr/lib/libv4l2.so.0 (0x00007f34a287f000)
	libgudev-1.0.so.0 => /usr/lib/libgudev-1.0.so.0 (0x00007f34a2675000)
	libgobject-2.0.so.0 => /usr/lib/libgobject-2.0.so.0 (0x00007f34a2426000)
	libgthread-2.0.so.0 => /usr/lib/libgthread-2.0.so.0 (0x00007f34a2224000)
	librt.so.1 => /usr/lib/librt.so.1 (0x00007f34a201c000)
	libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 (0x00007f34a1d25000)
	libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007f34a1b09000)
	libc.so.6 => /usr/lib/libc.so.6 (0x00007f34a1762000)
	libdl.so.2 => /usr/lib/libdl.so.2 (0x00007f34a155d000)
	libm.so.6 => /usr/lib/libm.so.6 (0x00007f34a1263000)
	liborc-0.4.so.0 => /usr/lib/liborc-0.4.so.0 (0x00007f34a0fe8000)
	libpcre.so.1 => /usr/lib/libpcre.so.1 (0x00007f34a0d89000)
	libz.so.1 => /usr/lib/libz.so.1 (0x00007f34a0b73000)
	liblzma.so.5 => /usr/lib/liblzma.so.5 (0x00007f34a094f000)
	libxcb.so.1 => /usr/lib/libxcb.so.1 (0x00007f34a0730000)
	libv4lconvert.so.0 => /usr/lib/libv4lconvert.so.0 (0x00007f34a04b8000)
	libudev.so.1 => /usr/lib/libudev.so.1 (0x00007f34a02a6000)
	libffi.so.6 => /usr/lib/libffi.so.6 (0x00007f34a009e000)
	/usr/lib/ld-linux-x86-64.so.2 (0x00007f34a4530000)
	libXau.so.6 => /usr/lib/libXau.so.6 (0x00007f349fe99000)
	libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0x00007f349fc93000)
	libjpeg.so.8 => /usr/lib/libjpeg.so.8 (0x00007f349fa42000)


$ ldd /usr/lib/gstreamer-1.0/libgstvideo4linux2.so
	linux-vdso.so.1 (0x00007ffffe5e0000)
	libgstbase-1.0.so.0 => /usr/lib/libgstbase-1.0.so.0 (0x00007ff305cf7000)
	libgstvideo-1.0.so.0 => /usr/lib/libgstvideo-1.0.so.0 (0x00007ff305ab6000)
	libgstreamer-1.0.so.0 => /usr/lib/libgstreamer-1.0.so.0 (0x00007ff3057c3000)
	libgmodule-2.0.so.0 => /usr/lib/libgmodule-2.0.so.0 (0x00007ff3055be000)
	libgthread-2.0.so.0 => /usr/lib/libgthread-2.0.so.0 (0x00007ff3053bc000)
	librt.so.1 => /usr/lib/librt.so.1 (0x00007ff3051b4000)
	libX11.so.6 => /usr/lib/libX11.so.6 (0x00007ff304e7a000)
	libXv.so.1 => /usr/lib/libXv.so.1 (0x00007ff304c74000)
	libXext.so.6 => /usr/lib/libXext.so.6 (0x00007ff304a61000)
	libgudev-1.0.so.0 => /usr/lib/libgudev-1.0.so.0 (0x00007ff304856000)
	libgobject-2.0.so.0 => /usr/lib/libgobject-2.0.so.0 (0x00007ff304608000)
	libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 (0x00007ff304312000)
	libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007ff3040f5000)
	libc.so.6 => /usr/lib/libc.so.6 (0x00007ff303d4e000)
	libdl.so.2 => /usr/lib/libdl.so.2 (0x00007ff303b4a000)
	liborc-0.4.so.0 => /usr/lib/liborc-0.4.so.0 (0x00007ff3038ce000)
	libm.so.6 => /usr/lib/libm.so.6 (0x00007ff3035d4000)
	libpcre.so.1 => /usr/lib/libpcre.so.1 (0x00007ff303376000)
	libxcb.so.1 => /usr/lib/libxcb.so.1 (0x00007ff303156000)
	libudev.so.1 => /usr/lib/libudev.so.1 (0x00007ff302f45000)
	libffi.so.6 => /usr/lib/libffi.so.6 (0x00007ff302d3c000)
	/usr/lib/ld-linux-x86-64.so.2 (0x00007ff3061a5000)
	libXau.so.6 => /usr/lib/libXau.so.6 (0x00007ff302b38000)
	libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0x00007ff302931000)
Comment 3 Tim-Philipp Müller 2012-10-17 15:36:03 UTC
Right, so effectively this is a build issue then, right?

I'm not sure why the 1.0 plugin isn't linked to that library, perhaps you should ask whoever provided you with the binaries/package?

Here the 1.0 version links just fine, same for the debian packages, so looks like NOTGNOME to me at first glance.
Comment 4 Mantas Mikulėnas (grawity) 2012-10-17 15:58:11 UTC
You're right, the package seems to have been built without --with-libv4l2... I'll contact the packager.