Fixing null rtc::Optional dereference in VideoQualityObserver.

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 <ilnik@webrtc.org>
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23463}
This commit is contained in:
Taylor Brandstetter
2018-05-30 12:40:10 -07:00
committed by Commit Bot
parent 750efbe5ce
commit f0b83c5e87

View File

@ -128,7 +128,7 @@ void VideoQualityObserver::OnDecodedFrame(rtc::Optional<uint8_t> qp,
rtc::Optional<int> 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)) {