1

V4L (Linux 用のさまざまなビデオ キャプチャへの統合アクセスを提供する API) での作業に問題があります。VIDIOCGCAP ioctl 呼び出しを実行しようとしていますが、INVALID ARGUMENT エラーが発生します。ここにトレースがあります:

execve("./test", ["./test"], [/* 26 変数 */]) = 0
brk(0) = 0x8d5c000
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (そのようなファイルまたはディレクトリはありません)
mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7fc9000
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (そのようなファイルやディレクトリはありません)
open("/etc/ld.so.cache", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=29703, ...}) = 0
mmap2(NULL、29703、PROT_READ、MAP_PRIVATE、3、0) = 0xb7fc1000
閉じる (3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (そのようなファイルまたはディレクトリはありません)
open("/lib/i686/cmov/libc.so.6", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\260e\ 1\0004\0\0\0\4"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=1413540, ...}) = 0
mmap2(NULL, 1418864, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7e66000
mmap2 (0xb7fbb000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x155) = 0xb7fbb000
mmap2 (0xb7fbe000, 9840, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb7fbe000
閉じる (3) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7e65000
set_thread_area({entry_number:-1 -> 6, base_addr:0xb7e656b0, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0
mprotect (0xb7fbb000、4096、PROT_READ) = 0
ムンマップ (0xb7fc1000, 29703) = 0
オープン ("/dev/video0", O_RDONLY) = 3
ioctl(3, EXT2_IOC_GETVERSION または VIDIOCGCAP, 0xbf8e4ca4) = -1 EINVAL (無効な引数)
fstat64(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7fc8000
書き込み (1、「エラー」...、3err) = 3
exit_group(3) = ? = ?

コードは次のとおりです。

#include "linux/videodev.h"
#include "fcntl.h"
#include "stdio.h"
int main() {
int fd = open("/dev/video0", O_RDONLY);
struct video_capability chan;
if (ioctl(fd, VIDIOCGCAP, &chan) == -1) printf("err");
}

と:

gcc -o テスト test.c

詳細情報: このマシンには、V4L を問題なく使用する他のビデオ キャプチャ ソフトウェアがあります。だから、私は何か間違ったことをしています。

4

1 に答える 1

2

おそらく、代わりに V4L2、つまり VIDIOC_QUERYCAP ioctl を使用してみる必要があります。

于 2009-05-22T17:25:47.037 に答える