Вот «осенила» меня намедни мысль: а что, если вместо v4l2 попробовать использовать более «универсальный» способ захвата видео, который был бы независимым от типа фреймграббера или веб-камеры? Свой велосипед мне приходится допиливать каждый раз, как меняется источник видео (то он отдает в другом формате, то какие-то дополнительные ioctl'ы появляются, то вдруг используется веб-камера, которая гольный жопег отдает (а то и еще хуже).
Так вот: поверхностный «гуглеж» ничего путного не дал. Я не нашел примеров работы с libadevice, которые позволяли бы просто сделать что-то вроде
some_type *Dev = open_videodevice("/dev/videoX");
...
some_controls ctrl;
ctrl.brightness = 50;
ctrl.format = RGB;
adjust_controls(Dev, &ctrl);
...
unsigned char *frame = get_next_frame(Dev);
Как при помощи ffmpeg, не мучаясь с настройками v4l2, просто и быстро открыть устройство видеозахвата, настроить его и начать получать с него кадры?
// текущая реализация занимает несколько страниц вместо желаемого десятка строк