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

Unified Diff: webrtc/modules/pacing/paced_sender.cc

Issue 2235373004: Probing: Add support for exponential startup probing (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@fix_probing2
Patch Set: Addressed comments Created 4 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/pacing/paced_sender.cc
diff --git a/webrtc/modules/pacing/paced_sender.cc b/webrtc/modules/pacing/paced_sender.cc
index bb071f16561e6f4ddffcd4926e44c0e8feb5d42f..b954677204516d72c8ec6f2524d9df33780c18ee 100644
--- a/webrtc/modules/pacing/paced_sender.cc
+++ b/webrtc/modules/pacing/paced_sender.cc
@@ -261,8 +261,6 @@ PacedSender::PacedSender(Clock* clock, PacketSender* packet_sender)
packets_(new paced_sender::PacketQueue(clock)),
packet_counter_(0) {
UpdateBytesPerInterval(kMinPacketLimitMs);
- prober_->ProbeAtBitrate(900000, 6);
- prober_->ProbeAtBitrate(1800000, 5);
}
PacedSender::~PacedSender() {}
@@ -285,7 +283,7 @@ void PacedSender::SetProbingEnabled(bool enabled) {
prober_->SetEnabled(enabled);
}
-void PacedSender::SetEstimatedBitrate(uint32_t bitrate_bps) {
+void PacedSender::SetEstimatedBitrate(int bitrate_bps) {
if (bitrate_bps == 0)
LOG(LS_ERROR) << "PacedSender is not designed to handle 0 bitrate.";
CriticalSectionScoped cs(critsect_.get());
@@ -295,6 +293,7 @@ void PacedSender::SetEstimatedBitrate(uint32_t bitrate_bps) {
pacing_bitrate_kbps_ =
std::max(min_send_bitrate_kbps_, estimated_bitrate_bps_ / 1000) *
kDefaultPaceMultiplier;
+ prober_->SetEstimatedBitrate(bitrate_bps);
}
void PacedSender::SetSendBitrateLimits(int min_send_bitrate_bps,
@@ -320,7 +319,7 @@ void PacedSender::InsertPacket(RtpPacketSender::Priority priority,
<< "SetEstimatedBitrate must be called before InsertPacket.";
int64_t now_ms = clock_->TimeInMilliseconds();
- prober_->OnIncomingPacket(bytes);
+ prober_->OnIncomingPacket(now_ms, bytes);
if (capture_time_ms < 0)
capture_time_ms = now_ms;
@@ -332,7 +331,7 @@ void PacedSender::InsertPacket(RtpPacketSender::Priority priority,
int64_t PacedSender::ExpectedQueueTimeMs() const {
CriticalSectionScoped cs(critsect_.get());
- RTC_DCHECK_GT(pacing_bitrate_kbps_, 0u);
+ RTC_DCHECK_GT(pacing_bitrate_kbps_, 0);
return static_cast<int64_t>(packets_->SizeInBytes() * 8 /
pacing_bitrate_kbps_);
}
@@ -370,6 +369,11 @@ int64_t PacedSender::TimeUntilNextProcess() {
return std::max<int64_t>(kMinPacketLimitMs - elapsed_time_ms, 0);
}
+bool PacedSender::IsExpectingProbingResults() const {
+ CriticalSectionScoped cs(critsect_.get());
+ return prober_->IsExpectingProbingResults();
+}
+
void PacedSender::Process() {
int64_t now_us = clock_->TimeInMicroseconds();
CriticalSectionScoped cs(critsect_.get());
@@ -455,7 +459,9 @@ bool PacedSender::SendPacket(const paced_sender::Packet& packet,
critsect_->Enter();
if (success) {
- prober_->PacketSent(clock_->TimeInMilliseconds(), packet.bytes);
+ // Is this a probe ?
+ if (probe_cluster_id != PacketInfo::kNotAProbe)
+ prober_->PacketSent(clock_->TimeInMilliseconds(), packet.bytes);
// TODO(holmer): High priority packets should only be accounted for if we
// are allocating bandwidth for audio.
if (packet.priority != kHighPriority) {
@@ -475,7 +481,9 @@ void PacedSender::SendPadding(size_t padding_needed, int probe_cluster_id) {
critsect_->Enter();
if (bytes_sent > 0) {
- prober_->PacketSent(clock_->TimeInMilliseconds(), bytes_sent);
+ // Is this a probe ?
+ if (probe_cluster_id != PacketInfo::kNotAProbe)
+ prober_->PacketSent(clock_->TimeInMilliseconds(), bytes_sent);
media_budget_->UseBudget(bytes_sent);
padding_budget_->UseBudget(bytes_sent);
}

Powered by Google App Engine
This is Rietveld 408576698