想查询 dev/video的类型,找不到命令,闲的蛋疼留个模版
用的时候把video列表写进solve前的 dev_list即可
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#include <fcntl.h> /* low-level i/o */
#include <unistd.h>
#include <errno.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <sys/time.h>
#include <sys/mman.h>
#include <sys/ioctl.h>
#include <asm/types.h>
#include <linux/videodev2.h>
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 */
原文:http://blog.csdn.net/metalseed/article/details/42644337