#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: static int customAudioBitrate; explicit GroupInstanceCustomImpl(GroupInstanceDescriptor &&descriptor); ~GroupInstanceCustomImpl(); void stop(); void setConnectionMode(GroupConnectionMode connectionMode, bool keepBroadcastIfWasEnabled, bool isUnifiedBroadcast); void emitJoinPayload(std::function completion); void setJoinResponsePayload(std::string const &payload); void removeSsrcs(std::vector ssrcs); void removeIncomingVideoSource(uint32_t ssrc); void setIsMuted(bool isMuted); void setIsNoiseSuppressionEnabled(bool isNoiseSuppressionEnabled); void setVideoCapture(std::shared_ptr videoCapture); void setVideoSource(std::function getVideoSource); void setAudioOutputDevice(std::string id); void setAudioInputDevice(std::string id); void addExternalAudioSamples(std::vector &&samples); void addOutgoingVideoOutput(std::weak_ptr> sink); void addIncomingVideoOutput(std::string const &endpointId, std::weak_ptr> sink); void setVolume(uint32_t ssrc, double volume); void setRequestedVideoChannels(std::vector &&requestedVideoChannels); void getStats(std::function completion); private: std::shared_ptr _threads; std::unique_ptr> _internal; std::unique_ptr _logSink; }; } // namespace tgcalls #endif