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

Unified Diff: webrtc/modules/rtp_rtcp/source/rtp_sender.cc

Issue 1635093002: Add transport sequence number on the non-pacer path of the rtp sender. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Also make sure padding can be sent prior to video in the transport seq num case. Created 4 years, 11 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/rtp_rtcp/source/rtp_sender.cc
diff --git a/webrtc/modules/rtp_rtcp/source/rtp_sender.cc b/webrtc/modules/rtp_rtcp/source/rtp_sender.cc
index bd9314d5d768b6e2d30c5be2a4ef2287b9c35ef5..707b6013d0293367195662948a5dce2828eae834 100644
--- a/webrtc/modules/rtp_rtcp/source/rtp_sender.cc
+++ b/webrtc/modules/rtp_rtcp/source/rtp_sender.cc
@@ -642,11 +642,13 @@ size_t RTPSender::SendPadData(size_t bytes,
payload_type = payload_type_;
over_rtx = false;
} else {
- // Without abs-send-time a media packet must be sent before padding so
- // that the timestamps used for estimation are correct.
- if (!media_has_been_sent_ && !rtp_header_extension_map_.IsRegistered(
- kRtpExtensionAbsoluteSendTime))
+ // Without abs-send-time or transport sequence number a media packet
+ // must be sent before padding so that the timestamps used for
+ // estimation are correct.
+ if (!media_has_been_sent_ && !(rtp_header_extension_map_.IsRegistered(
+ kRtpExtensionAbsoluteSendTime) || using_transport_seq)) {
return 0;
+ }
// Only change change the timestamp of padding packets sent over RTX.
// Padding only packets over RTP has to be sent as part of a media
// frame (and therefore the same timestamp).
@@ -1079,7 +1081,22 @@ int32_t RTPSender::SendToNetwork(uint8_t* buffer,
UpdateDelayStatistics(capture_time_ms, now_ms);
}
- bool sent = SendPacketToNetwork(buffer, length, PacketOptions());
+ // TODO(sprang): Potentially too much overhead in IsRegistered()?
+ bool using_transport_seq = rtp_header_extension_map_.IsRegistered(
+ kRtpExtensionTransportSequenceNumber) &&
+ transport_sequence_number_allocator_;
+
+ PacketOptions options;
+ if (using_transport_seq) {
+ options.packet_id =
+ UpdateTransportSequenceNumber(buffer, length, rtp_header);
+ }
+
+ if (using_transport_seq && transport_feedback_observer_) {
sprang_webrtc 2016/01/27 11:32:17 Nit: Wrap in same if-block as if (using_transport_
stefan-webrtc 2016/01/27 11:39:41 Done.
+ transport_feedback_observer_->AddPacket(options.packet_id, length, true);
+ }
+
+ bool sent = SendPacketToNetwork(buffer, length, options);
// Mark the packet as sent in the history even if send failed. Dropping a
// packet here should be treated as any other packet drop so we should be

Powered by Google App Engine
This is Rietveld 408576698