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

Unified Diff: media/cast/audio_sender/audio_sender.cc

Issue 343523005: Cast: Avoid retransmit if we sent the same packet recently (less than RTT) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: bugfix Created 6 years, 6 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
« no previous file with comments | « chrome/renderer/media/cast_transport_sender_ipc.cc ('k') | media/cast/logging/logging_defines.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/cast/audio_sender/audio_sender.cc
diff --git a/media/cast/audio_sender/audio_sender.cc b/media/cast/audio_sender/audio_sender.cc
index ea44218d25b127a0c316642f600698f0138751f0..878f3456c8766a80447ad5268b0bded293997445 100644
--- a/media/cast/audio_sender/audio_sender.cc
+++ b/media/cast/audio_sender/audio_sender.cc
@@ -252,9 +252,15 @@ void AudioSender::OnReceivedCastFeedback(const RtcpCastMessage& cast_feedback) {
// This is to avoid aggresive resend.
duplicate_ack_counter_ = 0;
+ base::TimeDelta rtt;
+ base::TimeDelta avg_rtt;
+ base::TimeDelta min_rtt;
+ base::TimeDelta max_rtt;
+ rtcp_.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt);
+
// A NACK is also used to cancel pending re-transmissions.
transport_sender_->ResendPackets(
- true, cast_feedback.missing_frames_and_packets_, true);
+ true, cast_feedback.missing_frames_and_packets_, false, min_rtt);
}
const base::TimeTicks now = cast_environment_->Clock()->NowTicks();
@@ -280,7 +286,8 @@ void AudioSender::OnReceivedCastFeedback(const RtcpCastMessage& cast_feedback) {
latest_acked_frame_id_++;
missing_frames_and_packets[latest_acked_frame_id_] = missing;
}
- transport_sender_->ResendPackets(true, missing_frames_and_packets, true);
+ transport_sender_->ResendPackets(
+ true, missing_frames_and_packets, true, base::TimeDelta());
latest_acked_frame_id_ = cast_feedback.ack_frame_id_;
}
}
@@ -313,10 +320,16 @@ void AudioSender::ResendForKickstart() {
std::make_pair(last_sent_frame_id_, missing));
last_send_time_ = cast_environment_->Clock()->NowTicks();
+ base::TimeDelta rtt;
+ base::TimeDelta avg_rtt;
+ base::TimeDelta min_rtt;
+ base::TimeDelta max_rtt;
+ rtcp_.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt);
+
// Sending this extra packet is to kick-start the session. There is
// no need to optimize re-transmission for this case.
- transport_sender_->ResendPackets(true, missing_frames_and_packets,
- false);
+ transport_sender_->ResendPackets(
+ true, missing_frames_and_packets, false, min_rtt);
}
} // namespace cast
« no previous file with comments | « chrome/renderer/media/cast_transport_sender_ipc.cc ('k') | media/cast/logging/logging_defines.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698