отсутствует включить из v4l2, Linux против UAPI / Linux

Я изучаю API v4l2 для настройки видеоустройств через v4l2-ctl. Примеры кода давным-давно действительно устарели, и некоторые определения больше не работают. Существует новый метод запроса всего для API у Kerhel, который показан в v4l2-utils. Я пытаюсь включить часть кода из v4l2-utils в мой код. Тем не менее, я получаю сообщение об ошибке от компилятора:

camera.hpp:1038:8: error: 'struct v4l2_ext_controls' has no member named 'which'

ctrls.which = V4L2_CTRL_ID2WHICH (qctrl.id);

А также:

camera.hpp:1038:43: error: 'V4L2_CTRL_ID2WHICH' was not declared in this scope

ctrls.which = V4L2_CTRL_ID2WHICH (qctrl.id);

Поле и определение находятся в файле, расположенном в исходном дереве linux: /usr/src/linux-4.6.3-gentoo/include/uapi/linux/videodev2.h, но этот файл не включается, когда я указываю:

#include <linux/videodev2.h>

Что такое вуду, чтобы компилятор включал правильный файл?

Я изучал источник v4l2-utils, но не могу понять это.

Большое спасибо.

1

Решение

Файл, расположенный в / usr / include, устарел. У меня были установлены заголовки для ядра 4.3, и мне понадобились заголовки из более поздней версии. Решением для моей установки gentoo было добавление ключевого слова для sys-kernel / linux-headers и установка последних заголовков (4.7).

Оказывается, файл UAPI становится заголовком при установке в / usr / include. Я мог бы, вероятно, сделать это с помощью make headers_install в моем каталоге / usr / src / linux, но я не уверен, что это более «правильно», чем установка ebuild linux-headers. Я беспокоюсь о конфликтах.

Надеюсь, это поможет кому-то еще …

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]