From c5ad7c7c892ebb9372da3eb3855d705373e519cb Mon Sep 17 00:00:00 2001 From: John Preston Date: Fri, 18 Dec 2020 12:44:19 +0400 Subject: [PATCH] Add start/end/reconnecting sounds to voice chats. --- Telegram/Resources/qrc/telegram/sounds.qrc | 3 + .../Resources/sounds/group_call_connect.mp3 | Bin 0 -> 43200 bytes Telegram/Resources/sounds/group_call_end.mp3 | Bin 0 -> 9600 bytes .../Resources/sounds/group_call_start.mp3 | Bin 0 -> 18240 bytes Telegram/SourceFiles/calls/calls_call.cpp | 8 +-- Telegram/SourceFiles/calls/calls_call.h | 5 +- .../SourceFiles/calls/calls_group_call.cpp | 38 ++++++++-- Telegram/SourceFiles/calls/calls_group_call.h | 14 +++- Telegram/SourceFiles/calls/calls_instance.cpp | 66 ++++++++++-------- Telegram/SourceFiles/calls/calls_instance.h | 19 +++-- Telegram/lib_ui | 2 +- 11 files changed, 109 insertions(+), 46 deletions(-) create mode 100644 Telegram/Resources/sounds/group_call_connect.mp3 create mode 100644 Telegram/Resources/sounds/group_call_end.mp3 create mode 100644 Telegram/Resources/sounds/group_call_start.mp3 diff --git a/Telegram/Resources/qrc/telegram/sounds.qrc b/Telegram/Resources/qrc/telegram/sounds.qrc index 6135e0050..69d1427e5 100644 --- a/Telegram/Resources/qrc/telegram/sounds.qrc +++ b/Telegram/Resources/qrc/telegram/sounds.qrc @@ -6,5 +6,8 @@ ../../sounds/call_end.mp3 ../../sounds/call_incoming.mp3 ../../sounds/call_outgoing.mp3 + ../../sounds/group_call_start.mp3 + ../../sounds/group_call_connect.mp3 + ../../sounds/group_call_end.mp3 diff --git a/Telegram/Resources/sounds/group_call_connect.mp3 b/Telegram/Resources/sounds/group_call_connect.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..4e0f60b4f1ea81e3f6549ec95f909fd5543f317c GIT binary patch literal 43200 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 literal 0 HcmV?d00001 diff --git a/Telegram/Resources/sounds/group_call_end.mp3 b/Telegram/Resources/sounds/group_call_end.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..c03390958786c2c626c8b339a6bea2648f8567fe GIT binary patch literal 9600 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

wUPqn} z%pL{z7^xeEm`U<1yis~ODMlz6KQu`ZKvgttg6Fs;7G1K-p(^r+;#O*nqyE4#yHWkSg>NtN=fiBCl+Pt9AYbyNOurAVa<-3~5je&ahSH|t zraGGpy>cv|>H>@CDhGxT>ha8LY}6CtJzstOES`CEgX%qPFSSQzc$HCzBBd$X`>U3Q z?2Fkl)a5tgZRvXB$V_6Fs^PnbpgknTcirAm29u{^5}m^?asEpRY$=#cuZ$^CY8bcD ziyF?J7bJj5;092K7%19K)lcl@^XoCxpoXz|6b#BIv~IcT-SA*uWxp$=nG^Ga!e0

f86I&FQ?Z$1a|MGb)7W3TyN1<)@T&%HCEaK!^F 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::Sound::Connecting); + _delegate->callPlaySound(Delegate::CallSound::Connecting); break; case State::Ended: - _delegate->playSound(Delegate::Sound::Ended); + _delegate->callPlaySound(Delegate::CallSound::Ended); [[fallthrough]]; case State::EndedByOtherDevice: _delegate->callFinished(this); break; case State::Failed: - _delegate->playSound(Delegate::Sound::Ended); + _delegate->callPlaySound(Delegate::CallSound::Ended); _delegate->callFailed(this); break; case State::Busy: - _delegate->playSound(Delegate::Sound::Busy); + _delegate->callPlaySound(Delegate::CallSound::Busy); break; } } diff --git a/Telegram/SourceFiles/calls/calls_call.h b/Telegram/SourceFiles/calls/calls_call.h index 531397c1d..e4dcf2d65 100644 --- a/Telegram/SourceFiles/calls/calls_call.h +++ b/Telegram/SourceFiles/calls/calls_call.h @@ -62,15 +62,16 @@ public: virtual void callFailed(not_null call) = 0; virtual void callRedial(not_null call) = 0; - enum class Sound { + enum class CallSound { Connecting, Busy, Ended, }; - virtual void playSound(Sound sound) = 0; + virtual void callPlaySound(CallSound sound) = 0; virtual void callRequestPermissionsOrFail( Fn onSuccess, bool video) = 0; + virtual auto getVideoCapture() -> std::shared_ptr = 0; diff --git a/Telegram/SourceFiles/calls/calls_group_call.cpp b/Telegram/SourceFiles/calls/calls_group_call.cpp index 5ee162687..e705c4377 100644 --- a/Telegram/SourceFiles/calls/calls_group_call.cpp +++ b/Telegram/SourceFiles/calls/calls_group_call.cpp @@ -42,6 +42,7 @@ constexpr auto kMaxInvitePerSlice = 10; constexpr auto kCheckLastSpokeInterval = crl::time(1000); constexpr auto kCheckJoinedTimeout = 4 * crl::time(1000); constexpr auto kUpdateSendActionEach = crl::time(500); +constexpr auto kPlayConnectingEach = crl::time(1056) + 2 * crl::time(1000); } // namespace @@ -55,7 +56,8 @@ GroupCall::GroupCall( , _api(&peer->session().mtp()) , _lastSpokeCheckTimer([=] { checkLastSpoke(); }) , _checkJoinedTimer([=] { checkJoined(); }) -, _pushToTalkCancelTimer([=] { pushToTalkCancel(); }) { +, _pushToTalkCancelTimer([=] { pushToTalkCancel(); }) +, _connectingSoundTimer([=] { playConnectingSoundOnce(); }) { _muted.value( ) | rpl::combine_previous( ) | rpl::start_with_next([=](MuteState previous, MuteState state) { @@ -109,14 +111,22 @@ void GroupCall::setState(State state) { } _state = state; - if (_state.current() == State::Joined) { - if (!_pushToTalkStarted) { - _pushToTalkStarted = true; + if (state == State::Joined) { + stopConnectingSound(); + if (!_hadJoinedState) { + _hadJoinedState = true; applyGlobalShortcutChanges(); + _delegate->groupCallPlaySound(Delegate::GroupCallSound::Started); } if (const auto call = _peer->groupCall(); call && call->id() == _id) { call->setInCall(); } + } else if (state == State::Connecting || state == State::Joining) { + if (_hadJoinedState) { + playConnectingSound(); + } + } else { + stopConnectingSound(); } if (false @@ -127,6 +137,10 @@ void GroupCall::setState(State state) { destroyController(); } switch (state) { + case State::HangingUp: + case State::FailedHangingUp: + _delegate->groupCallPlaySound(Delegate::GroupCallSound::Ended); + break; case State::Ended: _delegate->groupCallFinished(this); break; @@ -141,6 +155,22 @@ void GroupCall::setState(State state) { } } +void GroupCall::playConnectingSound() { + if (_connectingSoundTimer.isActive()) { + return; + } + playConnectingSoundOnce(); + _connectingSoundTimer.callEach(kPlayConnectingEach); +} + +void GroupCall::stopConnectingSound() { + _connectingSoundTimer.cancel(); +} + +void GroupCall::playConnectingSoundOnce() { + _delegate->groupCallPlaySound(Delegate::GroupCallSound::Connecting); +} + void GroupCall::start() { _createRequestId = _api.request(MTPphone_CreateGroupCall( _peer->input, diff --git a/Telegram/SourceFiles/calls/calls_group_call.h b/Telegram/SourceFiles/calls/calls_group_call.h index 0ad338c41..8af623cee 100644 --- a/Telegram/SourceFiles/calls/calls_group_call.h +++ b/Telegram/SourceFiles/calls/calls_group_call.h @@ -61,6 +61,13 @@ public: virtual void groupCallFailed(not_null call) = 0; virtual void groupCallRequestPermissionsOrFail( Fn onSuccess) = 0; + + enum class GroupCallSound { + Started, + Connecting, + Ended, + }; + virtual void groupCallPlaySound(GroupCallSound sound) = 0; }; using GlobalShortcutManager = base::GlobalShortcutManager; @@ -162,6 +169,10 @@ private: void checkGlobalShortcutAvailability(); void checkJoined(); + void playConnectingSound(); + void stopConnectingSound(); + void playConnectingSoundOnce(); + [[nodiscard]] MTPInputGroupCall inputCall() const; const not_null _delegate; @@ -191,7 +202,8 @@ private: std::shared_ptr _shortcutManager; std::shared_ptr _pushToTalk; base::Timer _pushToTalkCancelTimer; - bool _pushToTalkStarted = false; + base::Timer _connectingSoundTimer; + bool _hadJoinedState = false; rpl::lifetime _lifetime; diff --git a/Telegram/SourceFiles/calls/calls_instance.cpp b/Telegram/SourceFiles/calls/calls_instance.cpp index 93ffbb202..7ce5ede23 100644 --- a/Telegram/SourceFiles/calls/calls_instance.cpp +++ b/Telegram/SourceFiles/calls/calls_instance.cpp @@ -98,35 +98,45 @@ void Instance::groupCallFailed(not_null call) { }); } -void Instance::playSound(Sound sound) { - switch (sound) { - case Sound::Busy: { - if (!_callBusyTrack) { - _callBusyTrack = Media::Audio::Current().createTrack(); - _callBusyTrack->fillFromFile( - Core::App().settings().getSoundPath(qsl("call_busy"))); - } - _callBusyTrack->playOnce(); - } break; - - case Sound::Ended: { - if (!_callEndedTrack) { - _callEndedTrack = Media::Audio::Current().createTrack(); - _callEndedTrack->fillFromFile( - Core::App().settings().getSoundPath(qsl("call_end"))); - } - _callEndedTrack->playOnce(); - } break; - - case Sound::Connecting: { - if (!_callConnectingTrack) { - _callConnectingTrack = Media::Audio::Current().createTrack(); - _callConnectingTrack->fillFromFile( - Core::App().settings().getSoundPath(qsl("call_connect"))); - } - _callConnectingTrack->playOnce(); - } break; +not_null Instance::ensureSoundLoaded( + const QString &key) { + const auto i = _tracks.find(key); + if (i != end(_tracks)) { + return i->second.get(); } + const auto result = _tracks.emplace( + key, + Media::Audio::Current().createTrack()).first->second.get(); + result->fillFromFile(Core::App().settings().getSoundPath(key)); + return result; +} + +void Instance::playSoundOnce(const QString &key) { + ensureSoundLoaded(key)->playOnce(); +} + +void Instance::callPlaySound(CallSound sound) { + playSoundOnce([&] { + switch (sound) { + case CallSound::Busy: return "call_busy"; + case CallSound::Ended: return "call_end"; + case CallSound::Connecting: return "call_connect"; + } + Unexpected("CallSound in Instance::callPlaySound."); + return ""; + }()); +} + +void Instance::groupCallPlaySound(GroupCallSound sound) { + playSoundOnce([&] { + switch (sound) { + case GroupCallSound::Started: return "group_call_start"; + case GroupCallSound::Ended: return "group_call_end"; + case GroupCallSound::Connecting: return "group_call_connect"; + } + Unexpected("GroupCallSound in Instance::groupCallPlaySound."); + return ""; + }()); } void Instance::destroyCall(not_null call) { diff --git a/Telegram/SourceFiles/calls/calls_instance.h b/Telegram/SourceFiles/calls/calls_instance.h index 0e2820800..73844d24f 100644 --- a/Telegram/SourceFiles/calls/calls_instance.h +++ b/Telegram/SourceFiles/calls/calls_instance.h @@ -64,6 +64,9 @@ public: [[nodiscard]] bool isQuitPrevent(); private: + using CallSound = Call::Delegate::CallSound; + using GroupCallSound = GroupCall::Delegate::GroupCallSound; + [[nodiscard]] not_null getCallDelegate() { return static_cast(this); } @@ -73,6 +76,10 @@ private: [[nodiscard]] DhConfig getDhConfig() const override { return _dhConfig; } + + not_null ensureSoundLoaded(const QString &key); + void playSoundOnce(const QString &key); + void callFinished(not_null call) override; void callFailed(not_null call) override; void callRedial(not_null call) override; @@ -81,15 +88,15 @@ private: bool video) override { requestPermissionsOrFail(std::move(onSuccess), video); } + void callPlaySound(CallSound sound) override; void groupCallFinished(not_null call) override; void groupCallFailed(not_null call) override; void groupCallRequestPermissionsOrFail(Fn onSuccess) override { requestPermissionsOrFail(std::move(onSuccess), false); } + void groupCallPlaySound(GroupCallSound sound) override; - using Sound = Call::Delegate::Sound; - void playSound(Sound sound) override; void createCall(not_null user, Call::Type type, bool video); void destroyCall(not_null call); @@ -98,7 +105,9 @@ private: const MTPInputGroupCall &inputCall); void destroyGroupCall(not_null call); - void requestPermissionOrFail(Platform::PermissionType type, Fn onSuccess); + void requestPermissionOrFail( + Platform::PermissionType type, + Fn onSuccess); void refreshDhConfig(); void refreshServerConfig(not_null session); @@ -132,9 +141,7 @@ private: rpl::event_stream _currentGroupCallChanges; std::unique_ptr _currentGroupCallPanel; - std::unique_ptr _callConnectingTrack; - std::unique_ptr _callEndedTrack; - std::unique_ptr _callBusyTrack; + base::flat_map> _tracks; }; diff --git a/Telegram/lib_ui b/Telegram/lib_ui index 407079e5b..abb615a7c 160000 --- a/Telegram/lib_ui +++ b/Telegram/lib_ui @@ -1 +1 @@ -Subproject commit 407079e5b1cffdad2a08b0e00eafb78a175680c0 +Subproject commit abb615a7c9cb3a3992f67637592b481ccc50f17a