В настоящее время я пытаюсь получить информацию об устройстве для встроенной веб-камеры, используя следующий код:
#include <fcntl.h>
#include <unistd.h>
#include <linux/media.h>
#include <sys/ioctl.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
int main(int argc, char **argv) {
int fd = open("/dev/video0", O_RDONLY, 0);
if (fd > 0) {
struct media_device_info *device_data = (struct media_device_info *) malloc (sizeof(struct media_device_info) * 1);
if (ioctl(fd, MEDIA_IOC_DEVICE_INFO, device_data) == 0)
printf("Media Version: %u\nDriver: %s\nVersion: %d\nSerial: %s\n", (unsigned int) device_data->media_version, device_data->driver, (int) device_data->driver_version, device_data->serial);
else {
fprintf(stderr, "Couldn't get device info: %d: %s\n", errno, strerror(errno));
}
close(fd);
free(device_data);
}
return 0;
}
Когда код выполняется, вводится блок else, что дает следующее:
Couldn't get device info: 25: Inappropriate ioctl for device
Из этого может показаться, что устройство открывается неправильно, так что ioctl не может использовать дескриптор файла.Я должен что-то упустить;Может ли кто-нибудь здесь помочь мне с открытием устройства / dev / video0?
Спасибо!
ps Если на этот вопрос уже было дано ответ, прежде чем, пожалуйста, дайте мне знать.Если этот вопрос в любом случае неверен, примите мои извинения.