Index: webrtc/video/video_quality_test.cc |
diff --git a/webrtc/video/video_quality_test.cc b/webrtc/video/video_quality_test.cc |
index 5a8c4db731008d26963027619888212e6957d5fb..4d25557b218d3cd71b812002109d4307e133f3ae 100644 |
--- a/webrtc/video/video_quality_test.cc |
+++ b/webrtc/video/video_quality_test.cc |
@@ -22,6 +22,7 @@ |
#include "webrtc/base/event.h" |
#include "webrtc/base/format_macros.h" |
#include "webrtc/base/scoped_ptr.h" |
+#include "webrtc/base/timeutils.h" |
#include "webrtc/call.h" |
#include "webrtc/common_video/libyuv/include/webrtc_libyuv.h" |
#include "webrtc/modules/rtp_rtcp/include/rtp_header_parser.h" |
@@ -120,7 +121,8 @@ class VideoAnalyzer : public PacketReceiver, |
parser.Parse(&header); |
{ |
rtc::CritScope lock(&crit_); |
- recv_times_[header.timestamp - rtp_timestamp_delta_] = |
+ int64_t timestamp = wrap_handler_.Unwrap(header.timestamp); |
+ recv_times_[timestamp - rtp_timestamp_delta_] = |
Clock::GetRealTimeClock()->CurrentNtpInMilliseconds(); |
} |
@@ -160,11 +162,13 @@ class VideoAnalyzer : public PacketReceiver, |
bool result = transport_->SendRtp(packet, length, options); |
{ |
rtc::CritScope lock(&crit_); |
+ int64_t timestamp = wrap_handler_.Unwrap(header.timestamp); |
+ |
if (rtp_timestamp_delta_ == 0) { |
- rtp_timestamp_delta_ = header.timestamp - first_send_frame_.timestamp(); |
+ rtp_timestamp_delta_ = timestamp - first_send_frame_.timestamp(); |
first_send_frame_.Reset(); |
} |
- uint32_t timestamp = header.timestamp - rtp_timestamp_delta_; |
+ timestamp -= rtp_timestamp_delta_; |
send_times_[timestamp] = current_time; |
if (!transport_->DiscardedLastPacket() && |
header.ssrc == ssrc_to_analyze_) { |
@@ -330,15 +334,16 @@ class VideoAnalyzer : public PacketReceiver, |
bool dropped, |
int64_t render_time_ms) |
EXCLUSIVE_LOCKS_REQUIRED(crit_) { |
- int64_t send_time_ms = send_times_[reference.timestamp()]; |
- send_times_.erase(reference.timestamp()); |
- int64_t recv_time_ms = recv_times_[reference.timestamp()]; |
- recv_times_.erase(reference.timestamp()); |
+ int64_t reference_timestamp = wrap_handler_.Unwrap(reference.timestamp()); |
+ int64_t send_time_ms = send_times_[reference_timestamp]; |
+ send_times_.erase(reference_timestamp); |
+ int64_t recv_time_ms = recv_times_[reference_timestamp]; |
+ recv_times_.erase(reference_timestamp); |
// TODO(ivica): Make this work for > 2 streams. |
- auto it = encoded_frame_sizes_.find(reference.timestamp()); |
+ auto it = encoded_frame_sizes_.find(reference_timestamp); |
if (it == encoded_frame_sizes_.end()) |
- it = encoded_frame_sizes_.find(reference.timestamp() - 1); |
+ it = encoded_frame_sizes_.find(reference_timestamp - 1); |
size_t encoded_size = it == encoded_frame_sizes_.end() ? 0 : it->second; |
if (it != encoded_frame_sizes_.end()) |
encoded_frame_sizes_.erase(it); |
@@ -585,9 +590,10 @@ class VideoAnalyzer : public PacketReceiver, |
rtc::CriticalSection crit_; |
std::deque<VideoFrame> frames_ GUARDED_BY(crit_); |
VideoFrame last_rendered_frame_ GUARDED_BY(crit_); |
- std::map<uint32_t, int64_t> send_times_ GUARDED_BY(crit_); |
- std::map<uint32_t, int64_t> recv_times_ GUARDED_BY(crit_); |
- std::map<uint32_t, size_t> encoded_frame_sizes_ GUARDED_BY(crit_); |
+ rtc::TimestampWrapAroundHandler wrap_handler_ GUARDED_BY(crit_); |
+ std::map<int64_t, int64_t> send_times_ GUARDED_BY(crit_); |
+ std::map<int64_t, int64_t> recv_times_ GUARDED_BY(crit_); |
+ std::map<int64_t, size_t> encoded_frame_sizes_ GUARDED_BY(crit_); |
VideoFrame first_send_frame_ GUARDED_BY(crit_); |
const double avg_psnr_threshold_; |
const double avg_ssim_threshold_; |