From: Andreas Pehrson Date: Thu, 6 Jan 2022 00:16:00 +0000 Subject: Bug 1748478 - Propagate calculated discarded packets to stats. r=bwc Differential Revision: https://phabricator.services.mozilla.com/D135061 Mercurial Revision: https://hg.mozilla.org/mozilla-central/rev/56fbf0469e25fa0d589c51ca112ce534a7c0ab91 --- video/receive_statistics_proxy.cc | 9 +++++++-- video/rtp_video_stream_receiver2.cc | 4 +++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/video/receive_statistics_proxy.cc b/video/receive_statistics_proxy.cc index 8ef4d553ad..a0f19999d8 100644 --- a/video/receive_statistics_proxy.cc +++ b/video/receive_statistics_proxy.cc @@ -800,8 +800,13 @@ void ReceiveStatisticsProxy::OnDroppedFrames(uint32_t frames_dropped) { } void ReceiveStatisticsProxy::OnDiscardedPackets(uint32_t packets_discarded) { - RTC_DCHECK_RUN_ON(&main_thread_); - stats_.packets_discarded += packets_discarded; + // Can be called on either the decode queue or the worker thread + // See FrameBuffer2 for more details. + worker_thread_->PostTask( + SafeTask(task_safety_.flag(), [packets_discarded, this]() { + RTC_DCHECK_RUN_ON(&main_thread_); + stats_.packets_discarded += packets_discarded; + })); } void ReceiveStatisticsProxy::OnPreDecode(VideoCodecType codec_type, int qp) { diff --git a/video/rtp_video_stream_receiver2.cc b/video/rtp_video_stream_receiver2.cc index 65e45e38f7..49b7d06419 100644 --- a/video/rtp_video_stream_receiver2.cc +++ b/video/rtp_video_stream_receiver2.cc @@ -1258,7 +1258,9 @@ void RtpVideoStreamReceiver2::FrameDecoded(int64_t picture_id) { packet_infos_.erase(packet_infos_.begin(), packet_infos_.upper_bound(unwrapped_rtp_seq_num)); uint32_t num_packets_cleared = packet_buffer_.ClearTo(seq_num); - vcm_receive_statistics_->OnDiscardedPackets(num_packets_cleared); + if (num_packets_cleared > 0) { + vcm_receive_statistics_->OnDiscardedPackets(num_packets_cleared); + } reference_finder_->ClearTo(seq_num); } }