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 de4d93def3f4b5c405191d11bb8c3b8dc6f7dd02..15b68c643509bdeee50d526b45f001394a1b3085 100644 |
--- a/webrtc/modules/remote_bitrate_estimator/test/packet_sender.cc |
+++ b/webrtc/modules/remote_bitrate_estimator/test/packet_sender.cc |
@@ -15,6 +15,8 @@ |
#include <sstream> |
#include "webrtc/modules/include/module_common_types.h" |
+#include "webrtc/modules/pacing/pacer.h" |
+#include "webrtc/modules/remote_bitrate_estimator/test/bbr_paced_sender.h" |
#include "webrtc/modules/remote_bitrate_estimator/test/bwe.h" |
#include "webrtc/modules/remote_bitrate_estimator/test/metric_recorder.h" |
#include "webrtc/rtc_base/checks.h" |
@@ -156,9 +158,12 @@ uint32_t VideoSender::TargetBitrateKbps() { |
PacedVideoSender::PacedVideoSender(PacketProcessorListener* listener, |
VideoSource* source, |
BandwidthEstimatorType estimator) |
- : VideoSender(listener, source, estimator), pacer_(&clock_, this, nullptr) { |
- modules_.push_back(&pacer_); |
- pacer_.SetEstimatedBitrate(source->bits_per_second()); |
+ : VideoSender(listener, source, estimator), |
+ // Ugly hack to use BBR's pacer. |
+ // TODO(gnish): make pacer choice dependant on the algorithm being used. |
terelius
2017/08/18 14:34:04
nit: Capital M
gnish1
2017/08/18 14:53:50
Done.
|
+ pacer_(new BbrPacedSender(&clock_, this, nullptr)) { |
+ modules_.push_back(pacer_.get()); |
+ pacer_->SetEstimatedBitrate(source->bits_per_second()); |
} |
PacedVideoSender::~PacedVideoSender() { |
@@ -204,10 +209,11 @@ void PacedVideoSender::RunFor(int64_t time_ms, Packets* in_out) { |
if (!generated_packets.empty()) { |
for (Packet* packet : generated_packets) { |
MediaPacket* media_packet = static_cast<MediaPacket*>(packet); |
- pacer_.InsertPacket( |
+ pacer_->InsertPacket( |
PacedSender::kNormalPriority, media_packet->header().ssrc, |
media_packet->header().sequenceNumber, media_packet->send_time_ms(), |
media_packet->payload_size(), false); |
+ pacer_queue_size_in_bytes_ += media_packet->payload_size(); |
pacer_queue_.push_back(packet); |
assert(pacer_queue_.size() < 10000); |
} |
@@ -284,11 +290,11 @@ bool PacedVideoSender::TimeToSendPacket(uint32_t ssrc, |
// Make sure a packet is never paced out earlier than when it was put into |
// the pacer. |
assert(pace_out_time_ms >= media_packet->send_time_ms()); |
- |
media_packet->SetAbsSendTimeMs(pace_out_time_ms); |
media_packet->set_send_time_us(1000 * pace_out_time_ms); |
media_packet->set_sender_timestamp_us(1000 * pace_out_time_ms); |
queue_.push_back(media_packet); |
+ pacer_queue_size_in_bytes_ -= media_packet->payload_size(); |
pacer_queue_.erase(it); |
return true; |
} |
@@ -305,7 +311,21 @@ void PacedVideoSender::OnNetworkChanged(uint32_t target_bitrate_bps, |
uint8_t fraction_lost, |
int64_t rtt) { |
VideoSender::OnNetworkChanged(target_bitrate_bps, fraction_lost, rtt); |
- pacer_.SetEstimatedBitrate(target_bitrate_bps); |
+ pacer_->SetEstimatedBitrate(target_bitrate_bps); |
+} |
+ |
+void PacedVideoSender::OnNetworkChanged(uint32_t bitrate_for_encoder_bps, |
+ uint32_t bitrate_for_pacer_bps, |
+ bool in_probe_rtt, |
+ int64_t target_set_time, |
+ uint64_t congestion_window) { |
+ VideoSender::OnNetworkChanged(bitrate_for_encoder_bps, 0u, 0u); |
+ pacer_->SetEstimatedBitrateAndCongestionWindow( |
+ bitrate_for_pacer_bps, in_probe_rtt, congestion_window); |
+} |
+ |
+void PacedVideoSender::OnBytesAcked(size_t bytes) { |
+ pacer_->OnBytesAcked(bytes); |
} |
const int kNoLimit = std::numeric_limits<int>::max(); |