ЗАО «ЗЭО»

Пожалуйста, войдите или зарегистрируйтесь.

Расширенный поиск  

Новости:

Автор Тема: USB камера в Linux (драйвер uvcvideo)  (Прочитано 7528 раз)

0 Пользователей и 1 Гость просматривают эту тему.

dm2601

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 3
USB камера в Linux (драйвер uvcvideo)
« : 10 Декабря, 2012, 13:04:45 »

Доброго всем времени суток!
У кого нибудь есть опыт захвата видео/картинок с UVC web камеры в linux на тион-про28?
Есть проблема "uvcvideo: Failed to submit URB 0 (-28)" описанная https://community.freescale.com/thread/300829

Я использую ядро 2.6.35.3 с патчем с zao-zeo, камеру FaceCam 312.
Захват делаю так
ffmpeg -t 1 -r 1 -f video4linux2 -s 320x240 -i /dev/video1 xxx.mpg
Суть в том, что на попытку захвата даже 1 кадра с низким разрешением драйвер uvcvideo возвращает ошибку -28 (-ENOSPC), означающую (судя по результатам гугления), что произошла попытка зарезервировать от пропускной способности шины usb полосу, которая превышает остаток пропускной способности.
У меня нет задачи получить поток с большим разрешением с высокой частотой кадров, будет достаточно и 1кадр/сек 320x240. То, что шина не может обеспечить для этого скорости - маловероятно. Скорее всего драйвер пытается резервировать слишком большую скорость независимо от потребностей обусловленных заданным разрешением и частотой.
Я копаю в сторону этих программ в исходниках linux:
drivers\usb\core\ubr.c
drivers\media\video\uvc\uvc_video.c
Выяснил следующее:
При запуске ffmpeg сначала происходит серия запросов usb_submit_ubr которые успешно отправляются на камеру.
Затем дело доходит до запроса usb_submit_ubr с признаком USB_ENDPOINT_XFER_ISOC что означает что так называемый periodic transfers. На этом запросе usb_submit_ubr завершается с ошибкой -28.

В форуме по указанному в начале сообщения адресу советуют использовать ядро 3.6, но боюсь это долгая история.
Может кто то сталкивался и знает как пропатчить ядро 2.6.35.3? как вариант выключить контроль пропускной способности USB шины.
Записан