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:
parent
b2c001a795
commit
d4aebb0d1f
@ -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_;
|
||||
};
|
||||
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user