| 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..33209cab267debfaa9f4033fa1ce3139d52a533e 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.
|
| + 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();
|
|
|