Не подскажете по какой причине драйвер ADV7180 используется непатченный? Хотел каналы видеозахвата попереключать как в сборке 3.10.17, но вижу между тем и этим драйвером сильные различия по этому функционалу.
только учитывать что на местных плагах другой корпус
2 Для параллельного захвата есть tw6869
3 Драйверы IPU и adv7180 постоянно изменяются и просто так старый патч не ляжет на новое ядро
4 Есть BSP с ядром 3.10.17 где такое переключение работает
Может чего недосмотрел, но возникла еще проблема с gpio: скопировал из ядра 3.10.17 (с которым все работало) dtsi файлик с конфигурацией платы. В нем определен ряд gpio. В системе через sysfs настраиваю их:
echo 42 > /sys/class/gpio/export
В /sys/class/gpio появляется соответствующий каталог gpio42. Настраиваю на выход и пытаюсь выдать на него 1:
echo out > /sys/class/gpio42/direction
echo 1 > /sys/class/gpio42/value
Направление пина меняется на out, но физического изменения напряжения на плате не видно. То же самое со всеми остальными пинами.
Заработало, моя ошибка оказалась более комплексной: я скопировал исправленный ранее под себя *.dts файл настроек из ядра 3.10.17, но в чем-то он оказался несовместим с новым ядром. Теперь я перенес из старого файла в новый только конфигурацию gpio, так все работает.
До кучи еще одна вещь, которая на 3.10.17 и 3.14.14 у меня заработала по разному:
Вывожу изображение с камеры поверх приложения qt. Изображение должно занимать только часть экрана и быть зеркально развернуто, единственный способ который для этого нашел - формировать свой pipeline с помощью gst-launch и выводить изображение в оверлей /dev/fb1.
На 3.10.17 использовалась команда наподобие:
gst-launch tvsrc ! mfw_v4lsink disp_width=300 disp_height=200 axis-left=100 axis-top=100
Изображение выводилось как и требовалось - поверх приложения.
На 3.14.14 использую:
gst-launch-1.0 imxv4l2videosrc ! imxg2dvideosink window-width=300 window-height=200 window-x-coord=100 window-y-coord=100 framebuffer=/dev/fb1
Плюс вручную настраиваю фреймбуфер:
echo 0 > /sys/class/graphics/fb1/blank
fbset -fb /dev/fb1 1024 768 1024 768 16
Фреймбуфер при этом появляется полупрозрачным. Читал что через ioctl его прозрачность можно регулировать, но как я понял, если сделать его полностью прозрачным, не будет видно то, что выводиться на нем, а если сделать полностью непрозрачным - не будет видно заднего фона.
Короче говоря, не пойму - возможно ли на данном линуксе с новым gstreamer'ом вывести изображение подобному тому, как было ранее - только на часть экрана без прозрачности?
И сам себе отвечу: через ioctl можно реализовать сдвиг фреймбуфера в нужную точку экрана и уровень его прозрачности, через fbset можно настроить его размер, и таким образом получить оверлей на произвольную прямоугольную область экрана.