Skip to content
This repository was archived by the owner on Oct 23, 2024. It is now read-only.

Commit 5960def

Browse files
authored
Fix Audio Ranker (#1025)
1 parent 18a5eec commit 5960def

File tree

1 file changed

+7
-1
lines changed

1 file changed

+7
-1
lines changed

source/core/owt_base/selector/AudioRanker.cpp

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,12 +162,18 @@ void AudioRanker::updateInputInternal(std::string streamId, int level, bool trig
162162
if (inTopK && level != audioProc->iter()->first) {
163163
ELOG_DEBUG("Top K internal change: %s %s",
164164
audioProc->streamId().c_str(), audioProc->ownerId().c_str());
165+
int sameLevelNum = 0;
165166
auto oldUp = m_topK.upper_bound(audioProc->iter()->first);
167+
auto oldLevel = audioProc->iter()->first;
168+
if (oldUp == m_topK.end()) {
169+
sameLevelNum = m_topK.count(oldLevel);
170+
}
166171
m_topK.erase(audioProc->iter());
167172
auto newIt = m_topK.emplace(level, audioProc);
173+
auto newLevel = level;
168174
audioProc->setIter(newIt);
169175
auto newUp = m_topK.upper_bound(level);
170-
if (oldUp != newUp && triggerChange) {
176+
if ((oldUp != newUp || (sameLevelNum > 1 && newLevel > oldLevel)) && triggerChange) {
171177
ELOG_DEBUG("Top K internal trigger");
172178
triggerRankChange();
173179
}

0 commit comments

Comments
 (0)