// // Created by Grishka on 10.08.2018. // #ifndef LIBTGVOIP_VIDEOSOURCE_H #define LIBTGVOIP_VIDEOSOURCE_H #include #include #include #include #include #include "../tools/Buffers.h" namespace tgvoip{ namespace video { class VideoSource{ public: virtual ~VideoSource(){}; static std::shared_ptr Create(); static std::vector GetAvailableEncoders(); void SetCallback(std::function callback){ this->callback=callback; }; void SetStreamStateCallback(std::function callback){ streamStateCallback=callback; } virtual void Start()=0; virtual void Stop()=0; virtual void Reset(uint32_t codec, int maxResolution)=0; virtual void RequestKeyFrame()=0; virtual void SetBitrate(uint32_t bitrate)=0; bool Failed(); std::string GetErrorDescription(); std::vector& GetCodecSpecificData(){ return csd; } unsigned int GetFrameWidth(){ return width; } unsigned int GetFrameHeight(){ return height; } void SetRotation(unsigned int rotation){ this->rotation=rotation; } protected: std::function callback; std::function streamStateCallback; bool failed; std::string error; unsigned int width=0; unsigned int height=0; unsigned int rotation=0; std::vector csd; }; } } #endif //LIBTGVOIP_VIDEOSOURCE_H