| Index: webrtc/test/fake_network_pipe_unittest.cc | 
| diff --git a/webrtc/test/fake_network_pipe_unittest.cc b/webrtc/test/fake_network_pipe_unittest.cc | 
| index c19b0014bb9f6cac21ce2a9d2bb1aa11bebb69e2..99d33dbe18b7ffc4a1fc9f98860fd3027d1fc0af 100644 | 
| --- a/webrtc/test/fake_network_pipe_unittest.cc | 
| +++ b/webrtc/test/fake_network_pipe_unittest.cc | 
| @@ -11,6 +11,7 @@ | 
| #include <memory> | 
|  | 
| #include "webrtc/call/call.h" | 
| +#include "webrtc/modules/rtp_rtcp/include/rtp_header_parser.h" | 
| #include "webrtc/system_wrappers/include/clock.h" | 
| #include "webrtc/test/fake_network_pipe.h" | 
| #include "webrtc/test/gmock.h" | 
| @@ -23,6 +24,17 @@ using ::testing::Invoke; | 
|  | 
| namespace webrtc { | 
|  | 
| +namespace { | 
| + | 
| +constexpr uint8_t kDefaultVideoPayloadType = 102; | 
| + | 
| +constexpr size_t kMiniHeaderSize = 2; | 
| + | 
| +const std::map<uint8_t, MediaType> default_payload_type_map = { | 
| +    {kDefaultVideoPayloadType, MediaType::VIDEO}}; | 
| + | 
| +}  // namespace | 
| + | 
| class TestReceiver : public PacketReceiver { | 
| public: | 
| TestReceiver() {} | 
| @@ -47,8 +59,9 @@ class ReorderTestReceiver : public TestReceiver { | 
| const uint8_t* packet, | 
| size_t length, | 
| const PacketTime& packet_time) override { | 
| +    RTC_DCHECK_GE(length, kMiniHeaderSize + sizeof(int)); | 
| int seq_num; | 
| -    memcpy(&seq_num, packet, sizeof(int)); | 
| +    memcpy(&seq_num, &packet[kMiniHeaderSize], sizeof(int)); | 
| delivered_sequence_numbers_.push_back(seq_num); | 
| return PacketReceiver::DELIVERY_OK; | 
| } | 
| @@ -69,13 +82,19 @@ class FakeNetworkPipeTest : public ::testing::Test { | 
| virtual void TearDown() { | 
| } | 
|  | 
| -  void SendPackets(FakeNetworkPipe* pipe, int number_packets, int packet_size) { | 
| -    RTC_DCHECK_GE(packet_size, sizeof(int)); | 
| +  void SendPackets(FakeNetworkPipe* pipe, | 
| +                   int number_packets, | 
| +                   int packet_size, | 
| +                   uint8_t payload_type) { | 
| +    RTC_DCHECK_GE(packet_size, kMiniHeaderSize + sizeof(int)); | 
| +    RTC_DCHECK_LE(payload_type, 0x7f); | 
| +    // packet[0 .. 1] is reserved for header. | 
| std::unique_ptr<uint8_t[]> packet(new uint8_t[packet_size]); | 
| +    RTC_DCHECK(!RtpHeaderParser::IsRtcp(packet.get(), packet_size)); | 
| +    packet[1] = payload_type; | 
| for (int i = 0; i < number_packets; ++i) { | 
| -      // Set a sequence number for the packets by | 
| -      // using the first bytes in the packet. | 
| -      memcpy(packet.get(), &i, sizeof(int)); | 
| +      // Insert a sequence number for the packets. | 
| +      memcpy(&packet[kMiniHeaderSize], &i, sizeof(int)); | 
| pipe->SendPacket(packet.get(), packet_size); | 
| } | 
| } | 
| @@ -96,14 +115,14 @@ TEST_F(FakeNetworkPipeTest, CapacityTest) { | 
| config.queue_length_packets = 20; | 
| config.link_capacity_kbps = 80; | 
| std::unique_ptr<FakeNetworkPipe> pipe( | 
| -      new FakeNetworkPipe(&fake_clock_, config, MediaType::VIDEO)); | 
| +      new FakeNetworkPipe(&fake_clock_, config, default_payload_type_map)); | 
| pipe->SetReceiver(receiver_.get()); | 
|  | 
| // Add 10 packets of 1000 bytes, = 80 kb, and verify it takes one second to | 
| // get through the pipe. | 
| const int kNumPackets = 10; | 
| const int kPacketSize = 1000; | 
| -  SendPackets(pipe.get(), kNumPackets , kPacketSize); | 
| +  SendPackets(pipe.get(), kNumPackets, kPacketSize, kDefaultVideoPayloadType); | 
|  | 
| // Time to get one packet through the link. | 
| const int kPacketTimeMs = PacketTimeMs(config.link_capacity_kbps, | 
| @@ -135,13 +154,14 @@ TEST_F(FakeNetworkPipeTest, ExtraDelayTest) { | 
| config.queue_length_packets = 20; | 
| config.queue_delay_ms = 100; | 
| config.link_capacity_kbps = 80; | 
| -  std::unique_ptr<FakeNetworkPipe> pipe( | 
| -      new FakeNetworkPipe(&fake_clock_, config, MediaType::AUDIO)); | 
| +  constexpr uint8_t kDefaultAudioPayloadType = 120; | 
| +  std::unique_ptr<FakeNetworkPipe> pipe(new FakeNetworkPipe( | 
| +      &fake_clock_, config, {{kDefaultAudioPayloadType, MediaType::AUDIO}})); | 
| pipe->SetReceiver(receiver_.get()); | 
|  | 
| const int kNumPackets = 2; | 
| const int kPacketSize = 1000; | 
| -  SendPackets(pipe.get(), kNumPackets , kPacketSize); | 
| +  SendPackets(pipe.get(), kNumPackets, kPacketSize, kDefaultAudioPayloadType); | 
|  | 
| // Time to get one packet through the link. | 
| const int kPacketTimeMs = PacketTimeMs(config.link_capacity_kbps, | 
| @@ -170,7 +190,7 @@ TEST_F(FakeNetworkPipeTest, QueueLengthTest) { | 
| config.queue_length_packets = 2; | 
| config.link_capacity_kbps = 80; | 
| std::unique_ptr<FakeNetworkPipe> pipe( | 
| -      new FakeNetworkPipe(&fake_clock_, config, MediaType::VIDEO)); | 
| +      new FakeNetworkPipe(&fake_clock_, config, default_payload_type_map)); | 
| pipe->SetReceiver(receiver_.get()); | 
|  | 
| const int kPacketSize = 1000; | 
| @@ -178,7 +198,7 @@ TEST_F(FakeNetworkPipeTest, QueueLengthTest) { | 
| kPacketSize); | 
|  | 
| // Send three packets and verify only 2 are delivered. | 
| -  SendPackets(pipe.get(), 3, kPacketSize); | 
| +  SendPackets(pipe.get(), 3, kPacketSize, kDefaultVideoPayloadType); | 
|  | 
| // Increase time enough to deliver all three packets, verify only two are | 
| // delivered. | 
| @@ -194,7 +214,7 @@ TEST_F(FakeNetworkPipeTest, StatisticsTest) { | 
| config.queue_delay_ms = 20; | 
| config.link_capacity_kbps = 80; | 
| std::unique_ptr<FakeNetworkPipe> pipe( | 
| -      new FakeNetworkPipe(&fake_clock_, config, MediaType::VIDEO)); | 
| +      new FakeNetworkPipe(&fake_clock_, config, default_payload_type_map)); | 
| pipe->SetReceiver(receiver_.get()); | 
|  | 
| const int kPacketSize = 1000; | 
| @@ -202,7 +222,7 @@ TEST_F(FakeNetworkPipeTest, StatisticsTest) { | 
| kPacketSize); | 
|  | 
| // Send three packets and verify only 2 are delivered. | 
| -  SendPackets(pipe.get(), 3, kPacketSize); | 
| +  SendPackets(pipe.get(), 3, kPacketSize, kDefaultVideoPayloadType); | 
| fake_clock_.AdvanceTimeMilliseconds(3 * kPacketTimeMs + | 
| config.queue_delay_ms); | 
|  | 
| @@ -224,14 +244,14 @@ TEST_F(FakeNetworkPipeTest, ChangingCapacityWithEmptyPipeTest) { | 
| config.queue_length_packets = 20; | 
| config.link_capacity_kbps = 80; | 
| std::unique_ptr<FakeNetworkPipe> pipe( | 
| -      new FakeNetworkPipe(&fake_clock_, config, MediaType::VIDEO)); | 
| +      new FakeNetworkPipe(&fake_clock_, config, default_payload_type_map)); | 
| pipe->SetReceiver(receiver_.get()); | 
|  | 
| // Add 10 packets of 1000 bytes, = 80 kb, and verify it takes one second to | 
| // get through the pipe. | 
| const int kNumPackets = 10; | 
| const int kPacketSize = 1000; | 
| -  SendPackets(pipe.get(), kNumPackets, kPacketSize); | 
| +  SendPackets(pipe.get(), kNumPackets, kPacketSize, kDefaultVideoPayloadType); | 
|  | 
| // Time to get one packet through the link. | 
| int packet_time_ms = PacketTimeMs(config.link_capacity_kbps, kPacketSize); | 
| @@ -253,7 +273,7 @@ TEST_F(FakeNetworkPipeTest, ChangingCapacityWithEmptyPipeTest) { | 
|  | 
| // Add another 10 packets of 1000 bytes, = 80 kb, and verify it takes two | 
| // seconds to get them through the pipe. | 
| -  SendPackets(pipe.get(), kNumPackets, kPacketSize); | 
| +  SendPackets(pipe.get(), kNumPackets, kPacketSize, kDefaultVideoPayloadType); | 
|  | 
| // Time to get one packet through the link. | 
| packet_time_ms = PacketTimeMs(config.link_capacity_kbps, kPacketSize); | 
| @@ -282,14 +302,15 @@ TEST_F(FakeNetworkPipeTest, ChangingCapacityWithPacketsInPipeTest) { | 
| FakeNetworkPipe::Config config; | 
| config.queue_length_packets = 20; | 
| config.link_capacity_kbps = 80; | 
| -  std::unique_ptr<FakeNetworkPipe> pipe( | 
| -      new FakeNetworkPipe(&fake_clock_, config, MediaType::AUDIO)); | 
| +  constexpr uint8_t kDefaultAudioPayloadType = 120; | 
| +  std::unique_ptr<FakeNetworkPipe> pipe(new FakeNetworkPipe( | 
| +      &fake_clock_, config, {{kDefaultAudioPayloadType, MediaType::AUDIO}})); | 
| pipe->SetReceiver(receiver_.get()); | 
|  | 
| // Add 10 packets of 1000 bytes, = 80 kb. | 
| const int kNumPackets = 10; | 
| const int kPacketSize = 1000; | 
| -  SendPackets(pipe.get(), kNumPackets, kPacketSize); | 
| +  SendPackets(pipe.get(), kNumPackets, kPacketSize, kDefaultAudioPayloadType); | 
|  | 
| // Time to get one packet through the link at the initial speed. | 
| int packet_time_1_ms = PacketTimeMs(config.link_capacity_kbps, kPacketSize); | 
| @@ -300,7 +321,7 @@ TEST_F(FakeNetworkPipeTest, ChangingCapacityWithPacketsInPipeTest) { | 
|  | 
| // Add another 10 packets of 1000 bytes, = 80 kb, and verify it takes two | 
| // seconds to get them through the pipe. | 
| -  SendPackets(pipe.get(), kNumPackets, kPacketSize); | 
| +  SendPackets(pipe.get(), kNumPackets, kPacketSize, kDefaultAudioPayloadType); | 
|  | 
| // Time to get one packet through the link at the new capacity. | 
| int packet_time_2_ms = PacketTimeMs(config.link_capacity_kbps, kPacketSize); | 
| @@ -337,15 +358,15 @@ TEST_F(FakeNetworkPipeTest, DisallowReorderingThenAllowReordering) { | 
| config.link_capacity_kbps = 800; | 
| config.queue_delay_ms = 100; | 
| config.delay_standard_deviation_ms = 10; | 
| -  std::unique_ptr<FakeNetworkPipe> pipe( | 
| -      new FakeNetworkPipe(&fake_clock_, config, MediaType::VIDEO)); | 
| +  std::unique_ptr<FakeNetworkPipe> pipe(new FakeNetworkPipe( | 
| +      &fake_clock_, config, {{kDefaultVideoPayloadType, MediaType::VIDEO}})); | 
| ReorderTestReceiver* receiver = new ReorderTestReceiver(); | 
| receiver_.reset(receiver); | 
| pipe->SetReceiver(receiver_.get()); | 
|  | 
| const uint32_t kNumPackets = 100; | 
| const int kPacketSize = 10; | 
| -  SendPackets(pipe.get(), kNumPackets, kPacketSize); | 
| +  SendPackets(pipe.get(), kNumPackets, kPacketSize, kDefaultVideoPayloadType); | 
| fake_clock_.AdvanceTimeMilliseconds(1000); | 
| pipe->Process(); | 
|  | 
| @@ -359,7 +380,7 @@ TEST_F(FakeNetworkPipeTest, DisallowReorderingThenAllowReordering) { | 
|  | 
| config.allow_reordering = true; | 
| pipe->SetConfig(config); | 
| -  SendPackets(pipe.get(), kNumPackets, kPacketSize); | 
| +  SendPackets(pipe.get(), kNumPackets, kPacketSize, kDefaultVideoPayloadType); | 
| fake_clock_.AdvanceTimeMilliseconds(1000); | 
| receiver->delivered_sequence_numbers_.clear(); | 
| pipe->Process(); | 
| @@ -389,13 +410,13 @@ TEST_F(FakeNetworkPipeTest, BurstLoss) { | 
| config.queue_length_packets = kNumPackets; | 
| config.loss_percent = kLossPercent; | 
| config.avg_burst_loss_length = kAvgBurstLength; | 
| -  std::unique_ptr<FakeNetworkPipe> pipe( | 
| -      new FakeNetworkPipe(&fake_clock_, config, MediaType::VIDEO)); | 
| +  std::unique_ptr<FakeNetworkPipe> pipe(new FakeNetworkPipe( | 
| +      &fake_clock_, config, {{kDefaultVideoPayloadType, MediaType::VIDEO}})); | 
| ReorderTestReceiver* receiver = new ReorderTestReceiver(); | 
| receiver_.reset(receiver); | 
| pipe->SetReceiver(receiver_.get()); | 
|  | 
| -  SendPackets(pipe.get(), kNumPackets, kPacketSize); | 
| +  SendPackets(pipe.get(), kNumPackets, kPacketSize, kDefaultVideoPayloadType); | 
| fake_clock_.AdvanceTimeMilliseconds(1000); | 
| pipe->Process(); | 
|  | 
|  |