Take the 2-minute tour ×
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It's 100% free.

I have a problem with this webcam (ID - 046d:0892, driver gspca) on Acer Travelmate 8200 with Ubuntu 14.04.

When using cheese or skype with preloaded v4l1compat.so library, it has bad image - it has lot of horizontal lines and my face is tripled on screen. But when I use guvcview to view camera stream and I choose one particular (YVYU) pixel format, it looks perfect. I tried to set or force this pixel format somehow for applications like cheese or skype, but without success. I also tried to change it using gstreamer-properties in Video tab using a lot of variations of custom pipe string (v4l2src device=/dev/video0 ! video/x-raw,format=YVYU and so on), but none of these worked - it tells me either invalid syntax or previewed image is still garbage.

Do anyone have some idea how to solve this please?

share|improve this question

1 Answer 1

It is a bug in the kernel driver gspca/vc032x, that sets wrong bytesperline (640 instead of 1280). The problem raised with recent version of v4l-utils (>=0.9.1), because the new libraries take in account bytesperline. I opened a bug at bugzilla.kernel.org. You can fix by yourself by recompiling kernel after applying the following patch:

--- drivers/media/usb/gspca/vc032x.c.orig   2014-08-04 00:25:02.000000000 +0200
+++ drivers/media/usb/gspca/vc032x.c    2015-01-11 23:52:51.249386410 +0100
@@ -68,12 +68,12 @@

 static const struct v4l2_pix_format vc0321_mode[] = {
    {320, 240, V4L2_PIX_FMT_YVYU, V4L2_FIELD_NONE,
-       .bytesperline = 320,
+       .bytesperline = 320*2,
        .sizeimage = 320 * 240 * 2,
        .colorspace = V4L2_COLORSPACE_SRGB,
        .priv = 1},
    {640, 480, V4L2_PIX_FMT_YVYU, V4L2_FIELD_NONE,
-       .bytesperline = 640,
+       .bytesperline = 640*2,
        .sizeimage = 640 * 480 * 2,
        .colorspace = V4L2_COLORSPACE_SRGB,
        .priv = 0},
@@ -97,12 +97,12 @@
 };
 static const struct v4l2_pix_format bi_mode[] = {
    {320, 240, V4L2_PIX_FMT_YUYV, V4L2_FIELD_NONE,
-       .bytesperline = 320,
+       .bytesperline = 320*2,
        .sizeimage = 320 * 240 * 2,
        .colorspace = V4L2_COLORSPACE_SRGB,
        .priv = 2},
    {640, 480, V4L2_PIX_FMT_YUYV, V4L2_FIELD_NONE,
-       .bytesperline = 640,
+       .bytesperline = 640*2,
        .sizeimage = 640 * 480 * 2,
        .colorspace = V4L2_COLORSPACE_SRGB,
        .priv = 1},
share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.