0

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?

1 Answer 1

0

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},

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .