想查询 dev/video的类型,找不到命令,闲的蛋疼留个模版
用的时候把video列表写进solve前的 dev_list即可
#include
#include
#include
#include
#include /* low-level i/o */
#include
#include
#include
#include
#include
#include
#include
#include
#include
int device_open(char *dev_name)
{
struct stat st;
if (-1 == stat(dev_name, &st))
{
fprintf(stderr, "Cannot identify '%s': %d, %s\n", dev_name, errno, strerror(errno));
// exit(EXIT_FAILURE);
}
if (!S_ISCHR(st.st_mode))
{
fprintf(stderr, "%s is no device\n", dev_name);
// exit(EXIT_FAILURE);
}
int fd = open(dev_name, O_RDWR /* required */ | O_NONBLOCK, 0);
if (-1 == fd)
{
fprintf(stderr, "Cannot open '%s': %d, %s\n", dev_name, errno, strerror(errno));
// exit(EXIT_FAILURE);
}
printf("%s %d : Open %s successfully. fd = %d\n", __func__, __LINE__, dev_name, fd);
return fd;
}
int device_close(int fd)
{
if (-1 == close(fd))
{
printf("\tdevice close failed.\n");
// exit(EXIT_FAILURE);
}
else
{
printf("%s %d : devices close successfully\n", __func__, __LINE__);
}
return 0;
}
int device_query(char *dev_name, int fd)
{
struct v4l2_capability cap;
memset(&cap, 0, sizeof(cap));
if (-1 == ioctl(fd, VIDIOC_QUERYCAP, &cap)) // query v4l2-devices's capability
{
if (EINVAL == errno)
{
fprintf(stderr, "%s is no V4L2 device\n", dev_name);
// exit(EXIT_FAILURE);
}
else
{
return 0;
printf("\tvideo ioctl_querycap failed.\n");
// exit(EXIT_FAILURE);
}
}
else//\tdevice name : %s\n dev_name,
{
printf("\n\tdriver name : %s\n\tcard name : %s\n\tbus info : %s\n\tdriver version : %u.%u.%u\n\n",
cap.driver, cap.card, cap.bus_info,(cap.version >> 16) & 0XFF, (cap.version >> 8) & 0XFF, cap.version & 0XFF);
}
return 0;
}
int dev_num = 27;
char dev_list[100][20] = {
"/dev/video6","/dev/video7","/dev/video11","/dev/video12","/dev/video13", // 00 - 04
"/dev/video14","/dev/video15","/dev/video16","/dev/video17","/dev/video18", // 05 - 09
"/dev/video19","/dev/video23","/dev/video24","/dev/video25","/dev/video26", // 10 - 14
"/dev/video27","/dev/video28","/dev/video29","/dev/video30","/dev/video31", // 15 - 19
"/dev/video32","/dev/video33","/dev/video34","/dev/video36","/dev/video37", // 20 - 24
"/dev/video38","/dev/video50"
};
int solve()
{
int i = 0;
int dev_start = 0;
int dev_end = dev_num;
for( i = dev_start; i < dev_end; ++i)
{
int fd = device_open(dev_list[i]);
device_query(dev_list[i], fd);
device_close(fd);
}
return 0;
}
int main()
{
printf("\nstart game\n");
solve();
printf("\nquit game\n");
return 0;
}
附 rp5410 video info
/*
start game
device name :video6
driver name : MFC
card name : decoder
bus info :
driver version : 1.0.0
device name :video7
driver name : MFC
card name : encoder
bus info :
driver version : 1.0.0
device name :video11
driver name : s5p-jpeg
card name : s5p-jpeg
bus info :
driver version : 1.0.0
device name :video12
driver name : s5p-jpeg
card name : s5p-jpeg
bus info :
driver version : 1.0.0
device name :video13
driver name : exynos5-jpeg-hx
card name : exynos5-jpeg-hx
bus info :
driver version : 1.0.0
device name :video14
driver name : exynos5-jpeg-hx
card name : exynos5-jpeg-hx
bus info :
driver version : 1.0.0
device name :video16
driver name : s5p-mixer
card name : mxr0_graph0
bus info : 0
driver version : 0.1.0
device name :video17
driver name : s5p-mixer
card name : mxr0_graph1
bus info : 1
driver version : 0.1.0
device name :video18
driver name : s5p-mixer
card name : mxr1_graph2
bus info : 2
driver version : 0.1.0
device name :video19
driver name : s5p-mixer
card name : mxr1_graph3
bus info : 3
driver version : 0.1.0
device name :video23
driver name : exynos-gsc
card name : exynos-gsc
bus info :
driver version : 3.4.5
device name :video24
driver name : exynos-gsc
card name : exynos-gsc
bus info :
driver version : 3.4.5
device name :video26
driver name : exynos-gsc
card name : exynos-gsc
bus info :
driver version : 3.4.5
device name :video27
driver name : exynos-gsc
card name : exynos-gsc
bus info :
driver version : 3.4.5
device name :video29
driver name : exynos-gsc
card name : exynos-gsc
bus info :
driver version : 3.4.5
device name :video30
driver name : exynos-gsc
card name : exynos-gsc
bus info :
driver version : 3.4.5
device name :video32
driver name : exynos-gsc
card name : exynos-gsc
bus info :
driver version : 3.4.5
device name :video33
driver name : exynos-gsc
card name : exynos-gsc
bus info :
driver version : 3.4.5
device name :video50
driver name : exynos5-scaler
card name : exynos5-scaler
bus info :
driver version : 3.4.5
quit game
*/