From 02f0396aa1604563b27d1372cdfea09325b95d73 Mon Sep 17 00:00:00 2001 From: philipel Date: Thu, 11 Jan 2018 17:28:35 +0100 Subject: [PATCH] Fix video_replay tool to not accumulate error. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bug: None Change-Id: I825f971d92ff0185450450434d94441544727700 Reviewed-on: https://webrtc-review.googlesource.com/39040 Reviewed-by: Björn Terelius Reviewed-by: Erik Språng Commit-Queue: Philip Eliasson Cr-Commit-Position: refs/heads/master@{#21596} --- video/replay.cc | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/video/replay.cc b/video/replay.cc index ff40122d44..a79c3f984f 100644 --- a/video/replay.cc +++ b/video/replay.cc @@ -22,6 +22,7 @@ #include "rtc_base/checks.h" #include "rtc_base/flags.h" #include "rtc_base/string_to_number.h" +#include "rtc_base/timeutils.h" #include "system_wrappers/include/clock.h" #include "system_wrappers/include/sleep.h" #include "test/call_test.h" @@ -289,13 +290,22 @@ void RtpReplay() { } receive_stream->Start(); - uint32_t last_time_ms = 0; + int64_t replay_start_ms = -1; int num_packets = 0; std::map unknown_packets; while (true) { + int64_t now_ms = rtc::TimeMillis(); + if (replay_start_ms == -1) + replay_start_ms = now_ms; + test::RtpPacket packet; if (!rtp_reader->NextPacket(&packet)) break; + + int64_t deliver_in_ms = replay_start_ms + packet.time_ms - now_ms; + if (deliver_in_ms > 0) + SleepMs(deliver_in_ms); + ++num_packets; switch (call->Receiver()->DeliverPacket( webrtc::MediaType::VIDEO, @@ -322,10 +332,6 @@ void RtpReplay() { break; } } - if (last_time_ms != 0 && last_time_ms != packet.time_ms) { - SleepMs(packet.time_ms - last_time_ms); - } - last_time_ms = packet.time_ms; } fprintf(stderr, "num_packets: %d\n", num_packets);