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

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

Issue 2347023002: BitrateProber: Support higher probing bitrates (Closed)
Patch Set: BitrateProber: Support higher probing bitrates Created 4 years, 3 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 b0b86ee40e73cce3af346a12876613484059cce4..f8ca07720ab46ec5b9a402270651f6844bbcb7d4 100644
--- a/webrtc/modules/pacing/paced_sender.cc
+++ b/webrtc/modules/pacing/paced_sender.cc
@@ -402,8 +402,13 @@ void PacedSender::Process() {
}
bool is_probing = prober_->IsProbing();
- int probe_cluster_id = is_probing ? prober_->CurrentClusterId()
- : PacketInfo::kNotAProbe;
+ int probe_cluster_id = PacketInfo::kNotAProbe;
+ size_t bytes_sent = 0;
+ size_t recommended_probe_size = 0;
+ if (is_probing) {
+ probe_cluster_id = prober_->CurrentClusterId();
+ recommended_probe_size = prober_->RecommendedProbeSize();
+ }
while (!packets_->Empty()) {
// Since we need to release the lock in order to send, we first pop the
// element from the priority queue but keep it in storage, so that we can
@@ -412,9 +417,12 @@ void PacedSender::Process() {
if (SendPacket(packet, probe_cluster_id)) {
// Send succeeded, remove it from the queue.
+ bytes_sent += packet.bytes;
packets_->FinalizePop(packet);
- if (is_probing)
+ if (is_probing && bytes_sent > recommended_probe_size) {
stefan-webrtc 2016/09/16 07:42:53 This may look like a bug to the reader as it seems
Irfan 2016/09/19 06:05:11 Not sure I follow. The is_probing flag indicates w
stefan-webrtc 2016/09/19 07:24:56 I'm thinking of the case where we have paced out,
Irfan 2016/09/19 18:23:30 We report once the aggregate bytes is above the re
+ prober_->ProbeSent(clock_->TimeInMilliseconds(), bytes_sent);
return;
+ }
} else {
// Send failed, put it back into the queue.
packets_->CancelPop(packet);
@@ -430,12 +438,14 @@ void PacedSender::Process() {
// We can not send padding unless a normal packet has first been sent. If we
// do, timestamps get messed up.
if (packet_counter_ > 0) {
- size_t padding_needed = is_probing ? prober_->RecommendedPacketSize()
+ size_t padding_needed = is_probing ? (recommended_probe_size - bytes_sent)
: padding_budget_->bytes_remaining();
if (padding_needed > 0)
- SendPadding(padding_needed, probe_cluster_id);
+ bytes_sent += SendPadding(padding_needed, probe_cluster_id);
}
+ if (is_probing)
+ prober_->ProbeSent(clock_->TimeInMilliseconds(), bytes_sent);
}
bool PacedSender::SendPacket(const paced_sender::Packet& packet,
@@ -458,7 +468,6 @@ bool PacedSender::SendPacket(const paced_sender::Packet& packet,
critsect_->Enter();
if (success) {
- 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) {
@@ -471,17 +480,17 @@ bool PacedSender::SendPacket(const paced_sender::Packet& packet,
return success;
}
-void PacedSender::SendPadding(size_t padding_needed, int probe_cluster_id) {
+size_t PacedSender::SendPadding(size_t padding_needed, int probe_cluster_id) {
critsect_->Leave();
size_t bytes_sent =
packet_sender_->TimeToSendPadding(padding_needed, probe_cluster_id);
critsect_->Enter();
if (bytes_sent > 0) {
- prober_->PacketSent(clock_->TimeInMilliseconds(), bytes_sent);
media_budget_->UseBudget(bytes_sent);
padding_budget_->UseBudget(bytes_sent);
}
+ return bytes_sent;
}
void PacedSender::UpdateBytesPerInterval(int64_t delta_time_ms) {
« webrtc/modules/pacing/bitrate_prober.cc ('K') | « webrtc/modules/pacing/paced_sender.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698