我正在學習通過v4l2-ctl配置視頻設備的v4l2 API。幾年前的代碼樣本實際上已經過時,一些定義不再適用。有一種從v4l2-utils中顯示的kerhel請求所有API的新方法。我試圖將v4l2-utils的一些代碼合併到我的代碼中。然而,我是從編譯器得到一個錯誤:缺少包括從v4l2,Linux vs uapi/linux
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,但該文件不包含在I指定:
#include <linux/videodev2.h>
什麼是伏都教讓編譯器包含正確的文件?
我一直在研究v4l2-utils源代碼,但無法弄清楚。
非常感謝。