LINUX.ORG.RU

это и есть правильный.

Jetty ★★★★★ ()

это unixway-но, те вполне нормально

anonymous ()

Есть ещё /sys/class/video4linux.

Deleted ()
Ответ на: комментарий от Jetty

это и есть правильный.

Спорно. /dev/v4l/by-id зависит от наличия udev и его настроек.

Deleted ()
Ответ на: комментарий от Deleted

Нихера тут спорного нет. udev - стандарт де-факто. Плюс традиционный концепт «All is file». Для тех у кого действительно что-то там настроено не так или (лол) удева нет, можно что-то в духе ls /dev/video* /dev/radio*

Jetty ★★★★★ ()
Ответ на: комментарий от Jetty

udev - стандарт де-факто.

На embedded - нет.

Плюс традиционный концепт «All is file».

Чем этот концепт не подходит к /sys?

Deleted ()
Ответ на: комментарий от Deleted

embedded-девелоперы способны без вопросов на ЛОРе решить данную проблему.

/sys подходит, но я и не говорил что сис не подходит :)

Jetty ★★★★★ ()
Ответ на: комментарий от Jetty

embedded-девелоперы способны без вопросов на ЛОРе решить данную проблему.

А вдруг автор темы просто поставил openwrt на роутер и решил прицепить к нему несколько камер, я то откуда знаю 8).

Deleted ()
Ответ на: комментарий от Deleted

может быть и такое :) Но подозреваю что тогда вопрос был бы «что такое тулчейн»... :)

Jetty ★★★★★ ()

Спасибо :)

Кстати, есть-ли принципиальная разница между «/dev/v4l/» и «/sys/class/video4linux» ?

dmitryalexeeff ()
Ответ на: комментарий от dmitryalexeeff

Кстати, есть-ли принципиальная разница между «/dev/v4l/» и «/sys/class/video4linux» ?

/dev/v4l создаёт и заполняет udev, а /sys выдаётся напрямую ядром и драйверами.

Deleted ()
Ответ на: комментарий от Deleted

То есть, можно сказать что в современных дистрибутивах разницы нет, и чувствоваться она будет только при кроссплатформнной/кроссдистрибутивной разработке?

dmitryalexeeff ()

Перечисление и поиск любых устройств делается через udev api. Файловая система /dev/ предназначена для работы с устройствами (open, read, write, ioctl), а не для их поиска.

Типа того:

udev = udev_new ();
e = udev_enumerate_new (udev);
udev_enumerate_add_match_subsystem (e, "video4linux");
udev_enumerate_scan_devices (e);
list = udev_enumerate_get_list_entry (e);
udev_list_entry_foreach (entry, list) {
    fd = open (udev_device_get_devnode (entry), O_RDWR, 0);
    ioctl (fd, VIDIOC_QUERYCAP, &cap);
    if (cap.capabilities & V4L2_CAP_TUNER) ловим_волну (fd);
    if (cap.capabilities & V4L2_CAP_VIDEO_CAPTURE) смотрим (fd);
}

fopen ★★ ()
Ответ на: комментарий от dmitryalexeeff

udev очень давно во всех дистрибуттивах в системном наборе пакетов, его просто так не удалишь. те, остаются всякие говна мамонта на ядре 2.4, но там будет отличаться и vf4бесли он там вообще был

anonymous ()
Ответ на: комментарий от anonymous

Во всяком случае из-за вот этого:

udev_list_entry_foreach (...

уж точно не хочется использовать этот подход.

dmitryalexeeff ()
Ответ на: комментарий от user_2190

Что значит несерьёзно?
Несерьёзно это при решении одной из сотен мелких задач привлекать библиотеку, отличающуюся своим собственным неповторимым и оригинальным синтаксисом обхода коллекции. Голова не бесконечна, чтобы запихивать туда все синтаксические выкрутасы гиков-опенсорсников.
Я уж лучше вызову шелл с командой ls. Ибо шелл я каждый день использую, а udev_list_entry_foreach в моём контексте нужен только один раз.

dmitryalexeeff ()
Ответ на: комментарий от dmitryalexeeff

А если udev-а не стоит?

А откуда файлы устройств появятся?

fopen ★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.