2016-09-18 8 views
1

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のソースを勉強していますが、それを理解することはできません。

ありがとうございました。

答えて

1

/usr/includeにあるファイルの期限が切れています。私はカーネル4.3のためにヘッダをインストールして、それ以降のバージョンのヘッダを必要としました。私のgentooインストールの解決策は、sys-kernel/linux-headersのキーワードを追加し、最新のヘッダ(4.7)をインストールすることでした。

UAPIファイルは、/ usr/includeにインストールするとヘッダーになります。おそらく/ usr/src/linuxディレクトリにmake headers_installを実行してこれを実現できたかもしれませんが、linux-headers ebuildをインストールするより "正しい"かどうかはわかりません。私は紛争を心配しています。

これは他の人に役立つことを期待しています。

関連する問題