#ifndef TGCALLS_VIDEO_CAPTURE_INTERFACE_H #define TGCALLS_VIDEO_CAPTURE_INTERFACE_H #include #include namespace rtc { template class VideoSinkInterface; } // namespace rtc namespace webrtc { class VideoFrame; } // namespace webrtc namespace tgcalls { class PlatformContext; class Threads; enum class VideoState { Inactive, Paused, Active, }; class VideoCaptureInterface { protected: VideoCaptureInterface() = default; public: static std::unique_ptr Create( std::shared_ptr threads, std::string deviceId = std::string(), std::shared_ptr platformContext = nullptr); virtual ~VideoCaptureInterface(); virtual void switchToDevice(std::string deviceId) = 0; virtual void setState(VideoState state) = 0; virtual void setPreferredAspectRatio(float aspectRatio) = 0; virtual void setOutput(std::shared_ptr> sink) = 0; virtual std::shared_ptr getPlatformContext() { return nullptr; } }; } // namespace tgcalls #endif