Keep decoder reserve based on paced probe rather than transient burst depth
This commit is contained in:
1 parent
895cdd5ac2
commit
4bb2e42a7e
2 files changed
+5
-2
No files matched your search
@@ -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;
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in new issue
Block a user