Index: webrtc/video/video_quality_test.cc |
diff --git a/webrtc/video/video_quality_test.cc b/webrtc/video/video_quality_test.cc |
index 66210d08643e62fc93bccff52f0eea2ba70f8b04..8d63b79d556e010242912633a3a049f03f706258 100644 |
--- a/webrtc/video/video_quality_test.cc |
+++ b/webrtc/video/video_quality_test.cc |
@@ -41,6 +41,7 @@ static const int kSendStatsPollingIntervalMs = 1000; |
static const int kPayloadTypeH264 = 122; |
static const int kPayloadTypeVP8 = 123; |
static const int kPayloadTypeVP9 = 124; |
+static const size_t kMaxComparisons = 10; |
class VideoAnalyzer : public PacketReceiver, |
public Transport, |
@@ -408,10 +409,12 @@ class VideoAnalyzer : public PacketReceiver, |
VideoFrame reference_copy; |
VideoFrame render_copy; |
- reference_copy.CopyFrame(reference); |
- render_copy.CopyFrame(render); |
rtc::CritScope crit(&comparison_lock_); |
+ if (comparisons_.size() < kMaxComparisons) { |
+ reference_copy.CopyFrame(reference); |
+ render_copy.CopyFrame(render); |
+ } |
sprang_webrtc
2016/08/11 10:43:50
else {
reference_copy.set_ntp_time_ms(reference.
stefan-webrtc
2016/08/11 10:49:47
Done.
|
comparisons_.push_back(FrameComparison(reference_copy, render_copy, dropped, |
send_time_ms, recv_time_ms, |
render_time_ms, encoded_size)); |
@@ -546,8 +549,12 @@ class VideoAnalyzer : public PacketReceiver, |
void PerformFrameComparison(const FrameComparison& comparison) { |
// Perform expensive psnr and ssim calculations while not holding lock. |
- double psnr = I420PSNR(&comparison.reference, &comparison.render); |
- double ssim = I420SSIM(&comparison.reference, &comparison.render); |
+ double psnr = -1.0; |
+ double ssim = -1.0; |
+ if (!comparison.reference.IsZeroSize()) { |
+ psnr = I420PSNR(&comparison.reference, &comparison.render); |
+ ssim = I420SSIM(&comparison.reference, &comparison.render); |
+ } |
int64_t input_time_ms = comparison.reference.ntp_time_ms(); |
@@ -558,8 +565,10 @@ class VideoAnalyzer : public PacketReceiver, |
comparison.recv_time_ms, comparison.render_time_ms, |
comparison.encoded_frame_size, psnr, ssim)); |
} |
- psnr_.AddSample(psnr); |
- ssim_.AddSample(ssim); |
+ if (psnr >= 0.0) |
+ psnr_.AddSample(psnr); |
+ if (ssim >= 0.0) |
+ ssim_.AddSample(ssim); |
if (comparison.dropped) { |
++dropped_frames_; |