increase bitrate precision of the network tester.

Recreation of issue 2851463002.

BUG=webrtc:7426

Review-Url: https://codereview.webrtc.org/2894673004
Cr-Commit-Position: refs/heads/master@{#18219}
This commit is contained in:
tschumim 2017-05-22 00:04:30 -07:00 committed by Commit bot
parent b2c001a795
commit d4aebb0d1f
2 changed files with 10 additions and 5 deletions

View File

@ -10,6 +10,7 @@
#include "webrtc/tools/network_tester/packet_sender.h"
#include <algorithm>
#include <string>
#include <utility>
@ -24,20 +25,23 @@ namespace {
class SendPacketTask : public rtc::QueuedTask {
public:
explicit SendPacketTask(PacketSender* packet_sender)
: packet_sender_(packet_sender) {}
: target_time_ms_(rtc::TimeMillis()), packet_sender_(packet_sender) {}
private:
bool Run() override {
if (packet_sender_->IsSending()) {
packet_sender_->SendPacket();
target_time_ms_ += packet_sender_->GetSendIntervalMs();
int64_t delay_ms = std::max(static_cast<int64_t>(0),
target_time_ms_ - rtc::TimeMillis());
rtc::TaskQueue::Current()->PostDelayedTask(
std::unique_ptr<QueuedTask>(this),
packet_sender_->GetSendIntervalMs());
std::unique_ptr<QueuedTask>(this), delay_ms);
return false;
} else {
return true;
}
}
int64_t target_time_ms_;
PacketSender* const packet_sender_;
};

View File

@ -22,8 +22,8 @@ TestController::TestController(int min_port,
local_test_done_(false),
remote_test_done_(false) {
RTC_DCHECK_RUN_ON(&test_controller_thread_checker_);
send_data_.fill(42);
packet_sender_checker_.Detach();
send_data_.fill(42);
auto socket =
std::unique_ptr<rtc::AsyncPacketSocket>(socket_factory_.CreateUdpSocket(
rtc::SocketAddress(rtc::GetAnyIP(AF_INET), 0), min_port, max_port));
@ -53,10 +53,11 @@ void TestController::SendData(const NetworkTesterPacket& packet,
// Can be call from packet_sender or from test_controller thread.
size_t packet_size = packet.ByteSize();
send_data_[0] = packet_size;
packet_size++;
packet.SerializeToArray(&send_data_[1], std::numeric_limits<char>::max());
if (data_size && *data_size > packet_size)
packet_size = *data_size;
udp_transport_->SendPacket(send_data_.data(), packet_size + 1,
udp_transport_->SendPacket(send_data_.data(), packet_size,
rtc::PacketOptions(), 0);
}