MayaFlux 1.0.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ enumerate_configs()

std::vector< CameraConfig > MayaFlux::IO::FFmpegCameraReader::enumerate_configs ( ) const
overridevirtual

Discover ready-to-open camera configurations without starting capture.

Implements MayaFlux::IO::CameraSource.

Definition at line 57 of file FFmpegCameraDiscovery.cpp.

58{
59#ifdef MAYAFLUX_PLATFORM_MACOS
60 return enumerate_macos_cameras();
61#else
62 std::vector<CameraConfig> configs;
63
64 avdevice_register_all();
65 const AVInputFormat* format = av_find_input_format(std::string(CAMERA_FORMAT).c_str());
66 AVDeviceInfoList* list = nullptr;
67 if (!format || avdevice_list_input_sources(format, nullptr, nullptr, &list) < 0)
68 return configs;
69
70 for (int i = 0; i < list->nb_devices; ++i) {
71 const AVDeviceInfo& info = *list->devices[i];
72 if (!provides_video(info))
73 continue;
74
75 CameraConfig config;
76 config.device_name = info.device_name;
77 config.display_name = info.device_description ? info.device_description : "";
78#ifdef MAYAFLUX_PLATFORM_WINDOWS
79 config.device_name.insert(0, "video=");
80#endif
81#ifdef MAYAFLUX_PLATFORM_LINUX
82 if (!can_capture(config.device_name))
83 continue;
84#endif
85 configs.push_back(std::move(config));
86 }
87 avdevice_free_list_devices(&list);
88
89 std::ranges::sort(configs, {}, &CameraConfig::device_name);
90 return configs;
91#endif
92}
bool format
std::string device_name
Platform device string.

References MayaFlux::IO::CameraConfig::device_name, MayaFlux::IO::CameraConfig::display_name, and format.

Referenced by MayaFlux::choose_camera().

+ Here is the caller graph for this function: