diff options
Diffstat (limited to 'webrtc/modules/rtp_rtcp/source/nack_rtx_unittest.cc')
-rw-r--r-- | webrtc/modules/rtp_rtcp/source/nack_rtx_unittest.cc | 68 |
1 files changed, 29 insertions, 39 deletions
diff --git a/webrtc/modules/rtp_rtcp/source/nack_rtx_unittest.cc b/webrtc/modules/rtp_rtcp/source/nack_rtx_unittest.cc index 07a3693507..e19c31bfec 100644 --- a/webrtc/modules/rtp_rtcp/source/nack_rtx_unittest.cc +++ b/webrtc/modules/rtp_rtcp/source/nack_rtx_unittest.cc @@ -16,15 +16,15 @@ #include "testing/gtest/include/gtest/gtest.h" #include "webrtc/base/scoped_ptr.h" #include "webrtc/common_types.h" -#include "webrtc/modules/rtp_rtcp/interface/receive_statistics.h" -#include "webrtc/modules/rtp_rtcp/interface/rtp_header_parser.h" -#include "webrtc/modules/rtp_rtcp/interface/rtp_payload_registry.h" -#include "webrtc/modules/rtp_rtcp/interface/rtp_receiver.h" -#include "webrtc/modules/rtp_rtcp/interface/rtp_rtcp.h" -#include "webrtc/modules/rtp_rtcp/interface/rtp_rtcp_defines.h" +#include "webrtc/modules/rtp_rtcp/include/receive_statistics.h" +#include "webrtc/modules/rtp_rtcp/include/rtp_header_parser.h" +#include "webrtc/modules/rtp_rtcp/include/rtp_payload_registry.h" +#include "webrtc/modules/rtp_rtcp/include/rtp_receiver.h" +#include "webrtc/modules/rtp_rtcp/include/rtp_rtcp.h" +#include "webrtc/modules/rtp_rtcp/include/rtp_rtcp_defines.h" #include "webrtc/transport.h" -using namespace webrtc; +namespace webrtc { const int kVideoNackListSize = 30; const uint32_t kTestSsrc = 3456; @@ -35,8 +35,7 @@ const int kNumFrames = 30; const int kPayloadType = 123; const int kRtxPayloadType = 98; -class VerifyingRtxReceiver : public NullRtpData -{ +class VerifyingRtxReceiver : public NullRtpData { public: VerifyingRtxReceiver() {} @@ -54,7 +53,7 @@ class VerifyingRtxReceiver : public NullRtpData class TestRtpFeedback : public NullRtpFeedback { public: - TestRtpFeedback(RtpRtcp* rtp_rtcp) : rtp_rtcp_(rtp_rtcp) {} + explicit TestRtpFeedback(RtpRtcp* rtp_rtcp) : rtp_rtcp_(rtp_rtcp) {} virtual ~TestRtpFeedback() {} void OnIncomingSSRCChanged(const uint32_t ssrc) override { @@ -86,9 +85,7 @@ class RtxLoopBackTransport : public webrtc::Transport { rtp_receiver_ = receiver; } - void DropEveryNthPacket(int n) { - packet_loss_ = n; - } + void DropEveryNthPacket(int n) { packet_loss_ = n; } void DropConsecutivePackets(int start, int total) { consecutive_drop_start_ = start; @@ -100,15 +97,13 @@ class RtxLoopBackTransport : public webrtc::Transport { size_t len, const PacketOptions& options) override { count_++; - const unsigned char* ptr = static_cast<const unsigned char*>(data); + const unsigned char* ptr = static_cast<const unsigned char*>(data); uint32_t ssrc = (ptr[8] << 24) + (ptr[9] << 16) + (ptr[10] << 8) + ptr[11]; - if (ssrc == rtx_ssrc_) count_rtx_ssrc_++; + if (ssrc == rtx_ssrc_) + count_rtx_ssrc_++; uint16_t sequence_number = (ptr[2] << 8) + ptr[3]; size_t packet_length = len; - // TODO(pbos): Figure out why this needs to be initialized. Likely this - // is hiding a bug either in test setup or other code. - // https://code.google.com/p/webrtc/issues/detail?id=3183 - uint8_t restored_packet[1500] = {0}; + uint8_t restored_packet[1500]; RTPHeader header; rtc::scoped_ptr<RtpHeaderParser> parser(RtpHeaderParser::Create()); if (!parser->Parse(ptr, len, &header)) { @@ -136,21 +131,19 @@ class RtxLoopBackTransport : public webrtc::Transport { if (!parser->Parse(restored_packet, packet_length, &header)) { return false; } + ptr = restored_packet; } else { rtp_payload_registry_->SetIncomingPayloadType(header); } - const uint8_t* restored_packet_payload = - restored_packet + header.headerLength; - packet_length -= header.headerLength; PayloadUnion payload_specific; if (!rtp_payload_registry_->GetPayloadSpecifics(header.payloadType, &payload_specific)) { return false; } - if (!rtp_receiver_->IncomingRtpPacket(header, restored_packet_payload, - packet_length, payload_specific, - true)) { + if (!rtp_receiver_->IncomingRtpPacket(header, ptr + header.headerLength, + packet_length - header.headerLength, + payload_specific, true)) { return false; } return true; @@ -194,8 +187,7 @@ class RtpRtcpRtxNackTest : public ::testing::Test { rtp_feedback_.reset(new TestRtpFeedback(rtp_rtcp_module_)); rtp_receiver_.reset(RtpReceiver::CreateVideoReceiver( - &fake_clock, &receiver_, rtp_feedback_.get(), - &rtp_payload_registry_)); + &fake_clock, &receiver_, rtp_feedback_.get(), &rtp_payload_registry_)); rtp_rtcp_module_->SetSSRC(kTestSsrc); rtp_rtcp_module_->SetRTCPStatus(RtcpMode::kCompound); @@ -215,11 +207,9 @@ class RtpRtcpRtxNackTest : public ::testing::Test { EXPECT_EQ(0, rtp_rtcp_module_->RegisterSendPayload(video_codec)); rtp_rtcp_module_->SetRtxSendPayloadType(kRtxPayloadType, kPayloadType); - EXPECT_EQ(0, rtp_receiver_->RegisterReceivePayload(video_codec.plName, - video_codec.plType, - 90000, - 0, - video_codec.maxBitrate)); + EXPECT_EQ(0, rtp_receiver_->RegisterReceivePayload( + video_codec.plName, video_codec.plType, 90000, 0, + video_codec.maxBitrate)); rtp_payload_registry_.SetRtxPayloadType(kRtxPayloadType, kPayloadType); for (size_t n = 0; n < payload_data_length; n++) { @@ -230,8 +220,7 @@ class RtpRtcpRtxNackTest : public ::testing::Test { int BuildNackList(uint16_t* nack_list) { receiver_.sequence_numbers_.sort(); std::list<uint16_t> missing_sequence_numbers; - std::list<uint16_t>::iterator it = - receiver_.sequence_numbers_.begin(); + std::list<uint16_t>::iterator it = receiver_.sequence_numbers_.begin(); while (it != receiver_.sequence_numbers_.end()) { uint16_t sequence_number_1 = *it; @@ -239,15 +228,14 @@ class RtpRtcpRtxNackTest : public ::testing::Test { if (it != receiver_.sequence_numbers_.end()) { uint16_t sequence_number_2 = *it; // Add all missing sequence numbers to list - for (uint16_t i = sequence_number_1 + 1; i < sequence_number_2; - ++i) { + for (uint16_t i = sequence_number_1 + 1; i < sequence_number_2; ++i) { missing_sequence_numbers.push_back(i); } } } int n = 0; for (it = missing_sequence_numbers.begin(); - it != missing_sequence_numbers.end(); ++it) { + it != missing_sequence_numbers.end(); ++it) { nack_list[n++] = (*it); } return n; @@ -298,7 +286,7 @@ class RtpRtcpRtxNackTest : public ::testing::Test { rtc::scoped_ptr<TestRtpFeedback> rtp_feedback_; RtxLoopBackTransport transport_; VerifyingRtxReceiver receiver_; - uint8_t payload_data[65000]; + uint8_t payload_data[65000]; size_t payload_data_length; SimulatedClock fake_clock; }; @@ -345,8 +333,10 @@ TEST_F(RtpRtcpRtxNackTest, RtxNack) { RunRtxTest(kRtxRetransmitted, 10); EXPECT_EQ(kTestSequenceNumber, *(receiver_.sequence_numbers_.begin())); EXPECT_EQ(kTestSequenceNumber + kTestNumberOfPackets - 1, - *(receiver_.sequence_numbers_.rbegin())); + *(receiver_.sequence_numbers_.rbegin())); EXPECT_EQ(kTestNumberOfPackets, receiver_.sequence_numbers_.size()); EXPECT_EQ(kTestNumberOfRtxPackets, transport_.count_rtx_ssrc_); EXPECT_TRUE(ExpectedPacketsReceived()); } + +} // namespace webrtc |