Index: webrtc/modules/remote_bitrate_estimator/test/packet_sender.cc |
diff --git a/webrtc/modules/remote_bitrate_estimator/test/packet_sender.cc b/webrtc/modules/remote_bitrate_estimator/test/packet_sender.cc |
index a7a68aa28bc261ca55a5e168248e4f25467ee546..85cbdef8cf3cb056e1dd178b135133a218799763 100644 |
--- a/webrtc/modules/remote_bitrate_estimator/test/packet_sender.cc |
+++ b/webrtc/modules/remote_bitrate_estimator/test/packet_sender.cc |
@@ -17,11 +17,39 @@ |
#include "webrtc/base/checks.h" |
#include "webrtc/modules/interface/module_common_types.h" |
#include "webrtc/modules/remote_bitrate_estimator/test/bwe.h" |
+#include "webrtc/modules/remote_bitrate_estimator/test/metric_recorder.h" |
namespace webrtc { |
namespace testing { |
namespace bwe { |
+void PacketSender::Pause() { |
+ running_ = false; |
+ if (metric_recorder_ != nullptr) { |
+ metric_recorder_->PauseFlow(); |
+ } |
+} |
+ |
+void PacketSender::Resume(int64_t paused_time_ms) { |
+ running_ = true; |
+ if (metric_recorder_ != nullptr) { |
+ metric_recorder_->ResumeFlow(paused_time_ms); |
+ } |
+} |
+ |
+void PacketSender::set_metric_recorder(MetricRecorder* metric_recorder) { |
+ metric_recorder_ = metric_recorder; |
+} |
+ |
+void PacketSender::RecordBitrate() { |
+ if (metric_recorder_ != nullptr) { |
+ BWE_TEST_LOGGING_CONTEXT("Sender"); |
+ BWE_TEST_LOGGING_CONTEXT(*flow_ids().begin()); |
+ metric_recorder_->UpdateTimeMs(clock_.TimeInMilliseconds()); |
+ metric_recorder_->UpdateSendingEstimateKbps(TargetBitrateKbps()); |
+ } |
+} |
+ |
std::list<FeedbackPacket*> GetFeedbackPackets(Packets* in_out, |
int64_t end_time_ms, |
int flow_id) { |
@@ -44,7 +72,6 @@ VideoSender::VideoSender(PacketProcessorListener* listener, |
VideoSource* source, |
BandwidthEstimatorType estimator_type) |
: PacketSender(listener, source->flow_id()), |
- running_(true), |
source_(source), |
bwe_(CreateBweSender(estimator_type, |
source_->bits_per_second() / 1000, |
@@ -57,6 +84,16 @@ VideoSender::VideoSender(PacketProcessorListener* listener, |
VideoSender::~VideoSender() { |
} |
+void VideoSender::Pause() { |
+ previous_sending_bitrate_ = TargetBitrateKbps(); |
+ PacketSender::Pause(); |
+} |
+ |
+void VideoSender::Resume(int64_t paused_time_ms) { |
+ source_->SetBitrateBps(previous_sending_bitrate_); |
+ PacketSender::Resume(paused_time_ms); |
+} |
+ |
void VideoSender::RunFor(int64_t time_ms, Packets* in_out) { |
std::list<FeedbackPacket*> feedbacks = GetFeedbackPackets( |
in_out, clock_.TimeInMilliseconds() + time_ms, source_->flow_id()); |
@@ -109,16 +146,7 @@ void VideoSender::OnNetworkChanged(uint32_t target_bitrate_bps, |
uint8_t fraction_lost, |
int64_t rtt) { |
source_->SetBitrateBps(target_bitrate_bps); |
-} |
- |
-void VideoSender::Pause() { |
- running_ = false; |
- previous_sending_bitrate_ = TargetBitrateKbps(); |
-} |
- |
-void VideoSender::Resume() { |
- running_ = true; |
- source_->SetBitrateBps(previous_sending_bitrate_); |
+ RecordBitrate(); |
} |
uint32_t VideoSender::TargetBitrateKbps() { |
@@ -309,7 +337,6 @@ TcpSender::TcpSender(PacketProcessorListener* listener, |
last_rtt_ms_(0), |
total_sent_bytes_(0), |
send_limit_bytes_(send_limit_bytes), |
- running_(true), |
last_generated_packets_ms_(0), |
num_recent_sent_packets_(0), |
bitrate_kbps_(0) { |
@@ -319,18 +346,16 @@ void TcpSender::RunFor(int64_t time_ms, Packets* in_out) { |
if (clock_.TimeInMilliseconds() + time_ms < offset_ms_) { |
clock_.AdvanceTimeMilliseconds(time_ms); |
if (running_) { |
- running_ = false; |
+ Pause(); |
} |
return; |
} |
- if (!running_) { |
- running_ = true; |
+ if (!running_ && total_sent_bytes_ == 0) { |
+ Resume(offset_ms_); |
} |
int64_t start_time_ms = clock_.TimeInMilliseconds(); |
- BWE_TEST_LOGGING_CONTEXT("Sender"); |
- BWE_TEST_LOGGING_CONTEXT(*flow_ids().begin()); |
std::list<FeedbackPacket*> feedbacks = GetFeedbackPackets( |
in_out, clock_.TimeInMilliseconds() + time_ms, *flow_ids().begin()); |
@@ -426,7 +451,7 @@ Packets TcpSender::GeneratePackets(size_t num_packets) { |
for (size_t i = 0; i < num_packets; ++i) { |
if ((total_sent_bytes_ + kPacketSizeBytes) > send_limit_bytes_) { |
if (running_) { |
- running_ = false; |
+ Pause(); |
} |
break; |
} |
@@ -454,6 +479,8 @@ void TcpSender::UpdateSendBitrateEstimate(size_t num_packets) { |
last_generated_packets_ms_ = clock_.TimeInMilliseconds(); |
num_recent_sent_packets_ = 0; |
} |
+ |
+ RecordBitrate(); |
} |
uint32_t TcpSender::TargetBitrateKbps() { |