From f0b83c5e875d2f1b04c6454594118b1faa9da354 Mon Sep 17 00:00:00 2001 From: Taylor Brandstetter Date: Wed, 30 May 2018 12:40:10 -0700 Subject: [PATCH] Fixing null rtc::Optional dereference in VideoQualityObserver. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Was crashing if |is_paused_| is true for the first few frames, resulting in |interframe_delays_| being given fewer samples than |num_frames_decoded_|. So checking |num_frames_decoded_| wasn't sufficient; really should just check if |interframe_delays_.Avg| returns a nullopt or not. Bug: webrtc:9338 Change-Id: Ie74e88f7ec5ecef85a07145b9576f54b2a089f63 Reviewed-on: https://webrtc-review.googlesource.com/80040 Reviewed-by: Ilya Nikolaevskiy Reviewed-by: Åsa Persson Commit-Queue: Ilya Nikolaevskiy Cr-Commit-Position: refs/heads/master@{#23463} --- video/video_quality_observer.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/video/video_quality_observer.cc b/video/video_quality_observer.cc index bcadb642d3..c6663fa8c4 100644 --- a/video/video_quality_observer.cc +++ b/video/video_quality_observer.cc @@ -128,7 +128,7 @@ void VideoQualityObserver::OnDecodedFrame(rtc::Optional qp, rtc::Optional avg_interframe_delay = interframe_delays_.Avg(kMinFrameSamplesToDetectFreeze); // Check if it was a freeze. - if (num_frames_decoded_ > kMinFrameSamplesToDetectFreeze && + if (avg_interframe_delay && interframe_delay_ms >= std::max(3 * *avg_interframe_delay, *avg_interframe_delay + kMinIncreaseForFreezeMs)) {