Суть такова, есть такой проект v4l2loopback, который представляет собой модуль ядра, который создаёт виртуальные V4L2 устройства, и в них можно писать видео и читать его обратно другими программами
https://github.com/umlaeute/v4l2loopback/
Проблема в том, что в документации V4L2 нету примеров кода для работы с OUTPUT девайсами, только разрозненные рекомендации в описаниях ioctl-ов. Примеры есть только для capture девайсов.
И когда я делаю тестовую программу, использующую mmap метод для записи в сабжевый виртуальный девайс, на выходе читается только первый кадр, дальше чтение виснет. Когда я использую метод write(), то всё работает, но выстреливает кадры на максимальной скорости, ибо таймстампы и другая метаинформация в этом режиме не поддерживается.
Подозреваю, что в v4l2loopback кривая и бажная реализация получения кадров через mmap, а мой код всё делает правильно, как в мануале. Но полностью в этом не уверен, ибо железных V4L2 ouput девайсов у меня в наличии нету и протестировать не могу, чтобы сравнить результаты.
Собственно, кому-нибудь из ЛОРовцев приходилось писать видео в V4L2 девайсы используя mmap (Streaming I/O в терминах V4L2)?
Примеры кода не гуглятся