| Index: webrtc/video/video_quality_test.cc
|
| diff --git a/webrtc/video/video_quality_test.cc b/webrtc/video/video_quality_test.cc
|
| index ce40c5fbb32dbca7d330a6d2b034decb265aa3e0..e1afcdb8767ee042003d7804b6b35da9eaa0dcd1 100644
|
| --- a/webrtc/video/video_quality_test.cc
|
| +++ b/webrtc/video/video_quality_test.cc
|
| @@ -371,6 +371,7 @@ class VideoAnalyzer : public PacketReceiver,
|
| struct FrameComparison {
|
| FrameComparison()
|
| : dropped(false),
|
| + input_time_ms(0),
|
| send_time_ms(0),
|
| recv_time_ms(0),
|
| render_time_ms(0),
|
| @@ -379,6 +380,7 @@ class VideoAnalyzer : public PacketReceiver,
|
| FrameComparison(const VideoFrame& reference,
|
| const VideoFrame& render,
|
| bool dropped,
|
| + int64_t input_time_ms,
|
| int64_t send_time_ms,
|
| int64_t recv_time_ms,
|
| int64_t render_time_ms,
|
| @@ -386,14 +388,29 @@ class VideoAnalyzer : public PacketReceiver,
|
| : reference(reference),
|
| render(render),
|
| dropped(dropped),
|
| + input_time_ms(input_time_ms),
|
| send_time_ms(send_time_ms),
|
| recv_time_ms(recv_time_ms),
|
| render_time_ms(render_time_ms),
|
| encoded_frame_size(encoded_frame_size) {}
|
|
|
| - VideoFrame reference;
|
| - VideoFrame render;
|
| + FrameComparison(bool dropped,
|
| + int64_t input_time_ms,
|
| + int64_t send_time_ms,
|
| + int64_t recv_time_ms,
|
| + int64_t render_time_ms,
|
| + size_t encoded_frame_size)
|
| + : dropped(dropped),
|
| + input_time_ms(input_time_ms),
|
| + send_time_ms(send_time_ms),
|
| + recv_time_ms(recv_time_ms),
|
| + render_time_ms(render_time_ms),
|
| + encoded_frame_size(encoded_frame_size) {}
|
| +
|
| + rtc::Optional<VideoFrame> reference;
|
| + rtc::Optional<VideoFrame> render;
|
| bool dropped;
|
| + int64_t input_time_ms;
|
| int64_t send_time_ms;
|
| int64_t recv_time_ms;
|
| int64_t render_time_ms;
|
| @@ -476,21 +493,18 @@ class VideoAnalyzer : public PacketReceiver,
|
| if (it != encoded_frame_sizes_.end())
|
| encoded_frame_sizes_.erase(it);
|
|
|
| - VideoFrame reference_copy;
|
| - VideoFrame render_copy;
|
| -
|
| rtc::CritScope crit(&comparison_lock_);
|
| if (comparisons_.size() < kMaxComparisons) {
|
| - reference_copy = reference;
|
| - render_copy = render;
|
| + comparisons_.push_back(FrameComparison(reference, render, dropped,
|
| + reference.ntp_time_ms(),
|
| + send_time_ms, recv_time_ms,
|
| + render_time_ms, encoded_size));
|
| } else {
|
| - // Copy the time to ensure that delay calculations can still be made.
|
| - reference_copy.set_ntp_time_ms(reference.ntp_time_ms());
|
| - render_copy.set_ntp_time_ms(render.ntp_time_ms());
|
| + comparisons_.push_back(FrameComparison(dropped,
|
| + reference.ntp_time_ms(),
|
| + send_time_ms, recv_time_ms,
|
| + render_time_ms, encoded_size));
|
| }
|
| - comparisons_.push_back(FrameComparison(reference_copy, render_copy, dropped,
|
| - send_time_ms, recv_time_ms,
|
| - render_time_ms, encoded_size));
|
| comparison_available_event_.Set();
|
| }
|
|
|
| @@ -527,8 +541,6 @@ class VideoAnalyzer : public PacketReceiver,
|
| if (AllFramesRecorded())
|
| return false;
|
|
|
| - VideoFrame reference;
|
| - VideoFrame render;
|
| FrameComparison comparison;
|
|
|
| if (!PopComparison(&comparison)) {
|
| @@ -624,19 +636,17 @@ class VideoAnalyzer : public PacketReceiver,
|
| // Perform expensive psnr and ssim calculations while not holding lock.
|
| double psnr = -1.0;
|
| double ssim = -1.0;
|
| - if (!comparison.reference.IsZeroSize()) {
|
| - psnr = I420PSNR(&comparison.reference, &comparison.render);
|
| - ssim = I420SSIM(&comparison.reference, &comparison.render);
|
| + if (comparison.reference) {
|
| + psnr = I420PSNR(&*comparison.reference, &*comparison.render);
|
| + ssim = I420SSIM(&*comparison.reference, &*comparison.render);
|
| }
|
|
|
| - int64_t input_time_ms = comparison.reference.ntp_time_ms();
|
| -
|
| rtc::CritScope crit(&comparison_lock_);
|
| if (graph_data_output_file_) {
|
| - samples_.push_back(
|
| - Sample(comparison.dropped, input_time_ms, comparison.send_time_ms,
|
| - comparison.recv_time_ms, comparison.render_time_ms,
|
| - comparison.encoded_frame_size, psnr, ssim));
|
| + samples_.push_back(Sample(
|
| + comparison.dropped, comparison.input_time_ms, comparison.send_time_ms,
|
| + comparison.recv_time_ms, comparison.render_time_ms,
|
| + comparison.encoded_frame_size, psnr, ssim));
|
| }
|
| if (psnr >= 0.0)
|
| psnr_.AddSample(psnr);
|
| @@ -651,10 +661,10 @@ class VideoAnalyzer : public PacketReceiver,
|
| rendered_delta_.AddSample(comparison.render_time_ms - last_render_time_);
|
| last_render_time_ = comparison.render_time_ms;
|
|
|
| - sender_time_.AddSample(comparison.send_time_ms - input_time_ms);
|
| + sender_time_.AddSample(comparison.send_time_ms - comparison.input_time_ms);
|
| receiver_time_.AddSample(comparison.render_time_ms -
|
| comparison.recv_time_ms);
|
| - end_to_end_.AddSample(comparison.render_time_ms - input_time_ms);
|
| + end_to_end_.AddSample(comparison.render_time_ms - comparison.input_time_ms);
|
| encoded_frame_size_.AddSample(comparison.encoded_frame_size);
|
| }
|
|
|
|
|