diff --git a/tools/chatgui/src/call_video_decoder.cpp b/tools/chatgui/src/call_video_decoder.cpp index 6ad23031..205c7631 100644 --- a/tools/chatgui/src/call_video_decoder.cpp +++ b/tools/chatgui/src/call_video_decoder.cpp @@ -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(m->pending.size() - 1); m->outputSeen = true; } + if (!m->outputSeen) { + if (m->backend == Backend::HardwareOnly) m->pipeline = static_cast(m->pending.size() - 1); + m->outputSeen = true; + } m->pending.pop_front(); return 1; #else Q_UNUSED(f); Q_UNUSED(image); return -1; diff --git a/tools/chatgui/src/call_video_engine.cpp b/tools/chatgui/src/call_video_engine.cpp index 19995122..626b6b9b 100644 --- a/tools/chatgui/src/call_video_engine.cpp +++ b/tools/chatgui/src/call_video_engine.cpp @@ -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(pictures.size()) + playout.awaiting; auto action = call_video_playout_poll(&playout, pictures.empty() ? nullptr : &pictures.front().timing,