calls_controller_webrtc.h 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. /*
  2. This file is part of Telegram Desktop,
  3. the official desktop application for the Telegram messaging service.
  4. For license and copyright information please follow this link:
  5. https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
  6. */
  7. #pragma once
  8. #include "calls/calls_controller.h"
  9. namespace Webrtc {
  10. class CallContext;
  11. } // namespace Webrtc
  12. namespace Calls {
  13. class WebrtcController final : public Controller {
  14. public:
  15. WebrtcController(
  16. const TgVoipConfig &config,
  17. const TgVoipPersistentState &persistentState,
  18. const std::vector<TgVoipEndpoint> &endpoints,
  19. const TgVoipProxy *proxy,
  20. TgVoipNetworkType initialNetworkType,
  21. const TgVoipEncryptionKey &encryptionKey,
  22. Fn<void(QByteArray)> sendSignalingData,
  23. Fn<void(QImage)> displayNextFrame);
  24. ~WebrtcController();
  25. [[nodiscard]] static std::string Version();
  26. std::string version() override;
  27. void setNetworkType(TgVoipNetworkType networkType) override;
  28. void setMuteMicrophone(bool muteMicrophone) override;
  29. void setAudioOutputGainControlEnabled(bool enabled) override;
  30. void setEchoCancellationStrength(int strength) override;
  31. void setAudioInputDevice(std::string id) override;
  32. void setAudioOutputDevice(std::string id) override;
  33. void setInputVolume(float level) override;
  34. void setOutputVolume(float level) override;
  35. void setAudioOutputDuckingEnabled(bool enabled) override;
  36. bool receiveSignalingData(const QByteArray &data) override;
  37. std::string getLastError() override;
  38. std::string getDebugInfo() override;
  39. int64_t getPreferredRelayId() override;
  40. TgVoipTrafficStats getTrafficStats() override;
  41. TgVoipPersistentState getPersistentState() override;
  42. void setOnStateUpdated(Fn<void(TgVoipState)> onStateUpdated) override;
  43. void setOnSignalBarsUpdated(Fn<void(int)> onSignalBarsUpdated) override;
  44. TgVoipFinalState stop() override;
  45. private:
  46. const std::unique_ptr<Webrtc::CallContext> _impl;
  47. rpl::lifetime _stateUpdatedLifetime;
  48. };
  49. } // namespace Calls