From a800b82cffde7de52ea3139dcbfe2ad60ad6e968 Mon Sep 17 00:00:00 2001 From: Green Sky Date: Fri, 4 Apr 2025 14:19:39 +0200 Subject: [PATCH] honor toxav bitrate suggestions --- src/tox_av_voip_model.cpp | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/src/tox_av_voip_model.cpp b/src/tox_av_voip_model.cpp index 2feced3..92b07b3 100644 --- a/src/tox_av_voip_model.cpp +++ b/src/tox_av_voip_model.cpp @@ -759,11 +759,34 @@ bool ToxAVVoIPModel::onEvent(const Events::FriendAudioBitrate&) { } bool ToxAVVoIPModel::onEvent(const Events::FriendVideoBitrate& e) { - std::cout << "TAVVOIP: event suggests new video bitrate: " << e.video_bit_rate << " for " << e.friend_number << "\n"; + Object oo{entt::null}; + { + std::lock_guard lg{_video_sinks_mutex}; - //_video_sinks.front()->_video_bitrate + // find the sink + auto it = std::find_if(_video_sinks.cbegin(), _video_sinks.cend(), [e](const auto& a){ return a->_fid == e.friend_number; }); + if (it == _video_sinks.cend()) { + return false; + } + + // TODO: unlock before search? + // find the object + for (auto&& [ov, tavcvs, bitrate] : _os.registry().view().each()) { + if (tavcvs != *it) { + continue; + } + + // found it + oo = ov; + + bitrate.rate = e.video_bit_rate; + } + } + + if (_os.registry().valid(oo)) { + _os.throwEventUpdate(oo); + } - // TODO: use this info return false; }