diff --git a/webrtc/modules/rtp_rtcp/source/rtp_sender.cc b/webrtc/modules/rtp_rtcp/source/rtp_sender.cc index 9d134afbcc..252ffb2a3e 100644 --- a/webrtc/modules/rtp_rtcp/source/rtp_sender.cc +++ b/webrtc/modules/rtp_rtcp/source/rtp_sender.cc @@ -695,7 +695,6 @@ int32_t RTPSender::ReSendPacket(uint16_t packet_id, int64_t min_resend_time) { size_t length = IP_PACKET_SIZE; uint8_t data_buffer[IP_PACKET_SIZE]; int64_t capture_time_ms; - if (!packet_history_.GetPacketAndSetSendTime(packet_id, min_resend_time, true, data_buffer, &length, &capture_time_ms)) { @@ -923,8 +922,8 @@ bool RTPSender::PrepareAndSendPacket(uint8_t* buffer, // TODO(sprang): Potentially too much overhead in IsRegistered()? bool using_transport_seq = rtp_header_extension_map_.IsRegistered( kRtpExtensionTransportSequenceNumber) && - transport_sequence_number_allocator_; - + transport_sequence_number_allocator_ && + !is_retransmit; PacketOptions options; if (using_transport_seq) { options.packet_id = diff --git a/webrtc/video/end_to_end_tests.cc b/webrtc/video/end_to_end_tests.cc index 715399adbe..305dcb0aaf 100644 --- a/webrtc/video/end_to_end_tests.cc +++ b/webrtc/video/end_to_end_tests.cc @@ -20,7 +20,6 @@ #include "webrtc/call.h" #include "webrtc/call/transport_adapter.h" #include "webrtc/frame_callback.h" -#include "webrtc/modules/rtp_rtcp/source/byte_io.h" #include "webrtc/modules/rtp_rtcp/source/rtcp_utility.h" #include "webrtc/modules/video_coding/codecs/vp8/include/vp8.h" #include "webrtc/modules/video_coding/codecs/vp9/include/vp9.h" @@ -1336,6 +1335,9 @@ TEST_F(EndToEndTest, SendsAndReceivesMultipleStreams) { } TEST_F(EndToEndTest, AssignsTransportSequenceNumbers) { + // TODO(sprang): Extend this to verify received values once send-side BWE + // is in place. + static const int kExtensionId = 5; class RtpExtensionHeaderObserver : public test::DirectTransport { @@ -1345,8 +1347,7 @@ TEST_F(EndToEndTest, AssignsTransportSequenceNumbers) { parser_(RtpHeaderParser::Create()), last_seq_(0), padding_observed_(false), - rtx_padding_observed_(false), - retransmit_observed_(false) { + rtx_padding_observed_(false) { parser_->RegisterRtpHeaderExtension(kRtpExtensionTransportSequenceNumber, kExtensionId); } @@ -1360,8 +1361,6 @@ TEST_F(EndToEndTest, AssignsTransportSequenceNumbers) { RTPHeader header; EXPECT_TRUE(parser_->Parse(data, length, &header)); - bool drop_packet = false; - if (header.extension.hasTransportSequenceNumber) { EXPECT_EQ(options.packet_id, header.extension.transportSequenceNumber); @@ -1371,25 +1370,12 @@ TEST_F(EndToEndTest, AssignsTransportSequenceNumbers) { } last_seq_ = header.extension.transportSequenceNumber; - // Drop every 20th packet, so we get retransmits. - if (header.sequenceNumber % 20 == 0) { - dropped_seq_.insert(header.sequenceNumber); - drop_packet = true; - } - size_t payload_length = length - (header.headerLength + header.paddingLength); if (payload_length == 0) { padding_observed_ = true; } else if (header.payloadType == kSendRtxPayloadType) { - uint16_t original_sequence_number = - ByteReader::ReadBigEndian(&data[header.headerLength]); - if (dropped_seq_.find(original_sequence_number) != - dropped_seq_.end()) { - retransmit_observed_ = true; - } else { - rtx_padding_observed_ = true; - } + rtx_padding_observed_ = true; } else { streams_observed_.insert(header.ssrc); } @@ -1397,14 +1383,12 @@ TEST_F(EndToEndTest, AssignsTransportSequenceNumbers) { if (IsDone()) done_->Set(); } - if (drop_packet) - return true; return test::DirectTransport::SendRtp(data, length, options); } bool IsDone() { return streams_observed_.size() == MultiStreamTest::kNumStreams && - padding_observed_ && retransmit_observed_ && rtx_padding_observed_; + padding_observed_ && rtx_padding_observed_; } EventTypeWrapper Wait() { return done_->Wait(kDefaultTimeoutMs); } @@ -1413,10 +1397,8 @@ TEST_F(EndToEndTest, AssignsTransportSequenceNumbers) { rtc::scoped_ptr parser_; uint16_t last_seq_; std::set streams_observed_; - std::set dropped_seq_; bool padding_observed_; bool rtx_padding_observed_; - bool retransmit_observed_; }; class TransportSequenceNumberTester : public MultiStreamTest {