Stop raising QP as soon as measured bitrate returns to target
This commit is contained in:
1 parent
fae794d39e
commit
aff8a21ae4
2 files changed
+2
-2
No files matched your search
@@ -24,7 +24,7 @@ public:
|
||||
m_bitrate = m_sampled ? (m_bitrate + measured) / 2 : measured;
|
||||
m_sampled = true; m_bytes = 0; m_at = now;
|
||||
if (!m_adaptive || m_base < 0 || m_target <= 0) return m_limit;
|
||||
if (m_bitrate > uint64_t(m_target) * 108 / 100 && m_limit < 51) ++m_limit;
|
||||
if (measured > uint64_t(m_target) * 108 / 100 && m_bitrate > uint64_t(m_target) * 108 / 100 && m_limit < 51) ++m_limit;
|
||||
else if (m_bitrate < uint64_t(m_target) * 90 / 100 && m_limit > m_base) --m_limit;
|
||||
return m_limit;
|
||||
}
|
||||
|
||||
@@ -300,7 +300,7 @@ private slots:
|
||||
QCOMPARE(qp.update(0, 2000000), 29);
|
||||
QCOMPARE(qp.update(1000000, 4000000), 30); // Не более одного пункта за интервал.
|
||||
for (int64_t now = 6000000; now <= 12000000; now += 2000000) qp.update(250000, now);
|
||||
QCOMPARE(qp.limit(), 31); // Сглаживание не дёргает QP около целевого битрейта.
|
||||
QCOMPARE(qp.limit(), 30); // Запаздывание среднего не повышает QP, когда фактический битрейт уже в норме.
|
||||
for (int64_t now = 14000000; now <= 30000000; now += 2000000) qp.update(10000, now);
|
||||
QCOMPARE(qp.limit(), 28); // Возвращаем выбранный потолок, не снижаем его дальше.
|
||||
qp.reset(28, 1000000, false, 0); QCOMPARE(qp.update(10000000, 2000000), 28);
|
||||
|
||||
Reference in new issue
Block a user