Мерцание и сбой потокового видео с помощью uvc-gadget и g_webcam
Я использую этот коммит uvc-gadget вместе с g_webcam с 4.4.143 для Rockchip. Эта версия uvc-gadget передает только статическое изображение mjpeg (и гораздо лучше написана, чем более ранние источники uvc-gadget).
Наблюдение за интересным поведением на хост-ноутбуке, который получает поток от гаджета с guvcview
: через некоторое время кадры начинают мерцать как старый телевизор (V4L2_CORE: (jpeg decoder) error while decoding frame
), а затем в конце концов поток распадается на хосте: V4L2_CORE: Could not grab image (select timeout): Resource temporarily unavailable
, Под хозяином продолжается опрос ([75290.124695] uvcvideo: uvc_v4l2_poll
), нет ошибки ни в dmesg хоста, ни в uvc-gadget на устройстве. Фактически после повторного открытия потоковая передача guvcview снова работает без перезапуска uvc-gadget, но вскоре происходит сбой таким же образом.
Я использую стандартный USB3.0-кабель, который предназначен как для потоковой передачи, так и для питания устройства. AFAIK, нет источника шума, который может привести к такого рода странным мерцаниям на физическом уровне.
Кроме того, я заметил, что при меньших размерах USB-пакетов, уменьшающихся с 1024 до 256, поток сохраняется дольше (до 50000 кадров или около того), но все равно в конечном итоге дает сбой.
Есть идеи, что здесь происходит?
ОБНОВИТЬ
После того, как я переключился с MJPEG-сжатого на несжатый поток, больше нет мерцания, но по-прежнему всегда потеря контакта через несколько секунд: V4L2_CORE: Could not grab image (select timeout): Resource temporarily unavailable