Keep decoder reserve based on paced probe rather than transient burst depth

This commit is contained in:
evgeny committed 2026-10-19 19:09:17 +02:00
1 parent 895cdd5ac2
commit 4bb2e42a7e
2 files changed
+5 -2

No files matched your search

+4 -1
View File
@@ -177,7 +177,10 @@ int CallVideoDecoder::receive(call_video_frame& f, QImage& image) {
}
av_frame_free(&copied); av_frame_free(&decoded);
if (result < 0) return m->failed("output PTS/profile/geometry/transfer", result);
if (!m->outputSeen) { m->pipeline = static_cast<unsigned>(m->pending.size() - 1); m->outputSeen = true; }
if (!m->outputSeen) {
if (m->backend == Backend::HardwareOnly) m->pipeline = static_cast<unsigned>(m->pending.size() - 1);
m->outputSeen = true;
}
m->pending.pop_front(); return 1;
#else
Q_UNUSED(f); Q_UNUSED(image); return -1;
+1 -1
View File
@@ -398,7 +398,7 @@ void CallVideoEngine::receive() {
}
int64_t now = nowUs(); call_clock_snapshot clock{};
call_audio_get_clock(m->id, now, &clock);
call_video_port_status status{}; call_video_port_status(m->id, &status);
struct call_video_port_status status{}; call_video_port_status(m->id, &status);
unsigned total = status.rx_frames + (input.data != nullptr) + decoder.pendingFrames()
+ static_cast<unsigned>(pictures.size()) + playout.awaiting;
auto action = call_video_playout_poll(&playout, pictures.empty() ? nullptr : &pictures.front().timing,