Выберите более одного канала в V4L2 - PullRequest
0 голосов
/ 04 мая 2018

Я использую пользовательский Linux, созданный с использованием Buildroot для SoC Allwinner A20. У этого SoC есть 4 аналоговых видео входа, которые мне нужно использовать. Проблема в том, что нет подходящего драйвера для этого видеовхода, поэтому я исправляю единственный, который мне удалось найти через Интернет. Это драйвер V4L2 для этого устройства.

Это устройство может захватывать видео с более чем одного из видеовходов одновременно и объединять их в одно изображение, разделяя изображение на 2 или 4 части, отображая видео с каждой камеры в другой части.

Однако драйвер очень простой, и он еще не готов к настройке. Это только захват с видео входа # 1. Что я хочу сделать, так это изменить этот драйвер, чтобы он позволял настраивать, сколько входов вы не можете включить (1, 2 или 4 входа) и какие (например: включить входы № 2 и № 4) и объединить их в видео разбито на 2 части).

Первым делом я решил сделать это с помощью ioctl VIDIOC_S_INPUT, потому что это то, что он должен делать: выбирать, какой вход вы хотите использовать на устройстве с более чем одним входом. Тем не менее, это было бы прекрасно, если бы мне просто пришлось выбрать один из 4 входов, но я не знаю, как использовать его для включения 2 или 4 входов, и меньше, какие входы должны быть включены в этом случае, и в каком порядке .

Как этого добиться в соответствии с требованиями 4vl2? Я хотел бы использовать его со стандартным программным обеспечением, таким как ffmpeg и gstreamer.

1 Ответ

0 голосов
/ 21 мая 2018

Полагаю, что v4l2-совместимый способ - создать 4 устройства /dev/video0 .. /dev/video3, каждое из которых предоставляет один источник захвата, и затем выполнить наложение в пространстве пользователя.

Если это невозможно, и вы действительно можете представить только один объединенный видеопоток через одно устройство (/dev/video0), потому что устройство объединяет поток в аппаратном обеспечении, тогда я не думаю, что при использовании VIDIOC_S_INPUT вне пути. просто придумать хорошую схему нумерации ...

Однако (для повторения), если слияние потоков выполняется не аппаратно, а программно, то вы должны никогда делать это в пространстве ядра и всегда в пространстве пользователя (так что вам следует выставить 4 потока через 4 файла устройства)

...