Make use persistent device path /dev/v4l/by-id/.*
Opened this issue · 0 comments
whvneo commented
The ordering of video devices is not persistent.
In akvconfig.ini it is only possible to use a number.
This is because of the following lines attributes.c:
static ssize_t akvcam_attributes_connected_devices_show(struct device *dev,
struct device_attribute *attribute,
char *buffer)
{
struct video_device *vdev = to_video_device(dev);
akvcam_device_t device = video_get_drvdata(vdev);
akvcam_devices_list_t devices;
akvcam_list_element_t it = NULL;
size_t n = 0;
size_t i;
UNUSED(attribute);
devices = akvcam_device_connected_devices_nr(device);
memset(buffer, 0, PAGE_SIZE);
for (i = 0; i < 64 && PAGE_SIZE > n; i++) {
device = akvcam_list_next(devices, &it);
if (!it)
break;
n = snprintf(buffer + n,
PAGE_SIZE - n,
"/dev/video%d\n",
akvcam_device_num(device));
}
return n;
}
It would make more sense to use a path instead a number.
When listing all capable devices:
ls -l /dev/v4l/*/*
lrwxrwxrwx 1 root root 12 Aug 23 09:27 /dev/v4l/by-id/usb-046d_HD_Pro_Webcam_C920-video-index0 -> ../../video1
lrwxrwxrwx 1 root root 12 Aug 23 09:27 /dev/v4l/by-id/usb-046d_HD_Pro_Webcam_C920-video-index1 -> ../../video3
lrwxrwxrwx 1 root root 12 Aug 23 09:27 /dev/v4l/by-id/usb-Sonix_Technology_Co.__Ltd._BisonCam_NB_Pro-video-index0 -> ../../video4
lrwxrwxrwx 1 root root 12 Aug 23 09:27 /dev/v4l/by-id/usb-Sonix_Technology_Co.__Ltd._BisonCam_NB_Pro-video-index1 -> ../../video5
lrwxrwxrwx 1 root root 12 Aug 23 09:27 /dev/v4l/by-path/pci-0000:00:14.0-usb-0:2:1.0-video-index0 -> ../../video1
lrwxrwxrwx 1 root root 12 Aug 23 09:27 /dev/v4l/by-path/pci-0000:00:14.0-usb-0:2:1.0-video-index1 -> ../../video3
lrwxrwxrwx 1 root root 12 Aug 23 09:27 /dev/v4l/by-path/pci-0000:00:14.0-usb-0:8:1.0-video-index0 -> ../../video4
lrwxrwxrwx 1 root root 12 Aug 23 09:27 /dev/v4l/by-path/pci-0000:00:14.0-usb-0:8:1.0-video-index1 -> ../../video5
So when specifying a new config parameter saying "path" we could easily enter the meaningfull path by id and akvcam will use this instead.
Thanks for checking