VIDIOC_ENUM_FMT против VIDIOC_TRY_FMT - PullRequest
0 голосов
/ 13 апреля 2020

Я столкнулся с неожиданным поведением камеры. Используя VIDIOC_ENUM_FMT для V4L2_BUF_TYPE_VIDEO_CAPTURE, я получаю два поддерживаемых формата: MJPG и YUYV . Но когда я пытаюсь (на самом деле WebRT C DeviceInfoLinux::FillCapabilities() пытается для меня) перечислить поддерживаемые форматы с VIDIOC_TRY_FMT, он радостно сообщает гораздо больше:

supported   MJPG 640x480x30
supported   MJPG 1280x720x15
supported   I420 640x480x30
supported   I420 1280x720x15
supported   YUY2 160x120x30
supported   YUY2 320x240x30
supported   YUY2 640x480x30
supported   YUY2 1280x720x15
supported   UYVY 640x480x30
supported   UYVY 1280x720x15

Некоторые из этих форматов эмулируются видео драйвер?

1 Ответ

0 голосов
/ 16 апреля 2020

Более глубокое изучение ответа VIDIOC_TRY_FMT выявляет интересный факт, который полностью игнорируется DeviceInfo Linux: ответ pixformat не всегда равен запросу pixformat (также , ширина и высота ответа не равны ширине и высоте запроса). На самом деле, в качестве результатов отображаются только MJPG и YUYV, поэтому, IMHO, это ошибка WebRT C, которая показывает эти форматы как поддерживаемые: они проверяют, что размеры равны , но не pixformat.

...