#ifndef TGCALLS_GROUP_INSTANCE_CUSTOM_IMPL_H #define TGCALLS_GROUP_INSTANCE_CUSTOM_IMPL_H #include #include #include #include #include #include "../Instance.h" #include "GroupInstanceImpl.h" namespace tgcalls { class LogSinkImpl; class GroupInstanceCustomInternal; class Threads; class GroupInstanceCustomImpl final : public GroupInstanceInterface { public: explicit GroupInstanceCustomImpl(GroupInstanceDescriptor &&descriptor); ~GroupInstanceCustomImpl(); void stop(); void setConnectionMode(GroupConnectionMode connectionMode, bool keepBroadcastIfWasEnabled); void emitJoinPayload(std::function completion); void setJoinResponsePayload(GroupJoinResponsePayload payload, std::vector &&participants); void addParticipants(std::vector &&participants); void removeSsrcs(std::vector ssrcs); void setIsMuted(bool isMuted); void setVideoCapture(std::shared_ptr videoCapture, std::function completion); void setAudioOutputDevice(std::string id); void setAudioInputDevice(std::string id); void addIncomingVideoOutput(uint32_t ssrc, std::weak_ptr> sink); void setVolume(uint32_t ssrc, double volume); void setFullSizeVideoSsrc(uint32_t ssrc); private: std::shared_ptr _threads; std::unique_ptr> _internal; std::unique_ptr _logSink; }; } // namespace tgcalls #endif