#ifndef __DEVICEDISCOVERY_H__ #define __DEVICEDISCOVERY_H__ #include #include #include #include #include #include class DeviceDiscovery { constexpr static int32_t OtaSpecificWidth = 96; public: struct Device { Device(IMFMediaSource *source); ~Device(); IMFMediaSource *source = nullptr; IMFSourceReader *reader = nullptr; }; using Resolution = std::pair; using Resolutions = std::vector; DeviceDiscovery(); std::shared_ptr find(const std::string &deviceName, std::error_code &error); void enterOtaMode(const std::shared_ptr &device, std::error_code &error); std::vector devices(); protected: std::string deviceName(IMFActivate *device); Resolutions deviceResolutions(const std::shared_ptr &source); }; #endif // __DEVICEDISCOVERY_H__