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

Unified Diff: webrtc/video/end_to_end_tests.cc

Issue 1385563005: Transport sequence number should be set also for retransmissions. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Created 5 years, 2 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 | « webrtc/modules/rtp_rtcp/source/rtp_sender.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/video/end_to_end_tests.cc
diff --git a/webrtc/video/end_to_end_tests.cc b/webrtc/video/end_to_end_tests.cc
index 305dcb0aaf8f3029c2f0d254fcbd83388265ac38..715399adbe54d481cf2996e5c1f21e475f0a1e92 100644
--- a/webrtc/video/end_to_end_tests.cc
+++ b/webrtc/video/end_to_end_tests.cc
@@ -20,6 +20,7 @@
#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"
@@ -1335,9 +1336,6 @@ 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 {
@@ -1347,7 +1345,8 @@ TEST_F(EndToEndTest, AssignsTransportSequenceNumbers) {
parser_(RtpHeaderParser::Create()),
last_seq_(0),
padding_observed_(false),
- rtx_padding_observed_(false) {
+ rtx_padding_observed_(false),
+ retransmit_observed_(false) {
parser_->RegisterRtpHeaderExtension(kRtpExtensionTransportSequenceNumber,
kExtensionId);
}
@@ -1361,6 +1360,8 @@ 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);
@@ -1370,12 +1371,25 @@ 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) {
- rtx_padding_observed_ = true;
+ uint16_t original_sequence_number =
+ ByteReader<uint16_t>::ReadBigEndian(&data[header.headerLength]);
+ if (dropped_seq_.find(original_sequence_number) !=
+ dropped_seq_.end()) {
+ retransmit_observed_ = true;
+ } else {
+ rtx_padding_observed_ = true;
+ }
} else {
streams_observed_.insert(header.ssrc);
}
@@ -1383,12 +1397,14 @@ 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_ && rtx_padding_observed_;
+ padding_observed_ && retransmit_observed_ && rtx_padding_observed_;
}
EventTypeWrapper Wait() { return done_->Wait(kDefaultTimeoutMs); }
@@ -1397,8 +1413,10 @@ TEST_F(EndToEndTest, AssignsTransportSequenceNumbers) {
rtc::scoped_ptr<RtpHeaderParser> parser_;
uint16_t last_seq_;
std::set<uint32_t> streams_observed_;
+ std::set<uint16_t> dropped_seq_;
bool padding_observed_;
bool rtx_padding_observed_;
+ bool retransmit_observed_;
};
class TransportSequenceNumberTester : public MultiStreamTest {
« no previous file with comments | « webrtc/modules/rtp_rtcp/source/rtp_sender.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698