Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1001)

Unified Diff: webrtc/modules/remote_bitrate_estimator/test/packet_sender.cc

Issue 2999073002: Tweaked version of BBR for WebRTC. (Closed)
Patch Set: Updated according to comments. Created 3 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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();

Powered by Google App Engine
This is Rietveld 408576698