54 lines
1.4 KiB
C++
54 lines
1.4 KiB
C++
/*
|
|
This file is part of Telegram Desktop,
|
|
the official desktop application for the Telegram messaging service.
|
|
|
|
For license and copyright information please follow this link:
|
|
https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
|
*/
|
|
#include "calls/calls_controller.h"
|
|
|
|
#include "calls/calls_controller_tgvoip.h"
|
|
#include "calls/calls_controller_webrtc.h"
|
|
|
|
namespace Calls {
|
|
|
|
[[nodiscard]] std::unique_ptr<Controller> MakeController(
|
|
const std::string &version,
|
|
const TgVoipConfig &config,
|
|
const TgVoipPersistentState &persistentState,
|
|
const std::vector<TgVoipEndpoint> &endpoints,
|
|
const TgVoipProxy *proxy,
|
|
TgVoipNetworkType initialNetworkType,
|
|
const TgVoipEncryptionKey &encryptionKey,
|
|
Fn<void(QByteArray)> sendSignalingData,
|
|
Fn<void(QImage)> displayNextFrame) {
|
|
if (version == WebrtcController::Version()) {
|
|
return std::make_unique<WebrtcController>(
|
|
config,
|
|
persistentState,
|
|
endpoints,
|
|
proxy,
|
|
initialNetworkType,
|
|
encryptionKey,
|
|
std::move(sendSignalingData),
|
|
std::move(displayNextFrame));
|
|
}
|
|
return std::make_unique<TgVoipController>(
|
|
config,
|
|
persistentState,
|
|
endpoints,
|
|
proxy,
|
|
initialNetworkType,
|
|
encryptionKey);
|
|
}
|
|
|
|
std::vector<std::string> CollectControllerVersions() {
|
|
return { WebrtcController::Version(), TgVoipController::Version() };
|
|
}
|
|
|
|
int ControllerMaxLayer() {
|
|
return TgVoip::getConnectionMaxLayer();
|
|
}
|
|
|
|
} // namespace Calls
|