Проблемы с изображением веб-камеры Logitech Orbicam

У меня проблема с этой веб-камерой (ID - 046d: 0892, драйвер gspca) на Acer Travelmate 8200 с Ubuntu 14.04.

При использовании cheese или skype с предустановленной библиотекой v4l1compat.so у него плохое изображение - у него много горизонтальных линий, и мое лицо утраивается на экране. Но когда я использую guvcview для просмотра потока с камеры и выбираю один конкретный (YVYU) формат пикселей, он выглядит идеально. Я пытался установить или принудительно установить этот формат пикселей для таких приложений, как сыр или скайп, но безуспешно. Я также пытался изменить его, используя свойства gstreamer на вкладке «Видео», используя множество вариантов пользовательской строки конвейера (устройство v4l2src = / dev / video0! Video / x-raw, format = YVYU и т. Д.), Но ни один из них не сработал - он говорит мне, что либо неверный синтаксис, либо предпросмотр изображения по-прежнему мусор.

Кто-нибудь знает, как решить эту проблему, пожалуйста?

0
задан 15 July 2014 в 17:03

1 ответ

Это - ошибка в драйвере ядра gspca/vc032x, который устанавливает неправильный bytesperline (640 вместо 1280). Проблема повысила с последней версией v4l-utils (> =0.9.1), потому что новые библиотеки берут в учетной записи bytesperline. Я открыл ошибку по bugzilla.kernel.org. Можно зафиксировать собой путем перекомпиляции ядра после применения следующего патча:

--- 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},
0
ответ дан 15 July 2014 в 17:03

Другие вопросы по тегам:

Похожие вопросы: