OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "media/cast/net/rtp/rtp_packetizer.h" | 5 #include "media/cast/net/rtp/rtp_packetizer.h" |
6 | 6 |
7 #include <stdint.h> | 7 #include <stdint.h> |
8 | 8 |
9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
10 #include "base/test/simple_test_tick_clock.h" | 10 #include "base/test/simple_test_tick_clock.h" |
(...skipping 16 matching lines...) Expand all Loading... |
27 } | 27 } |
28 | 28 |
29 class TestRtpPacketTransport : public PacketSender { | 29 class TestRtpPacketTransport : public PacketSender { |
30 public: | 30 public: |
31 explicit TestRtpPacketTransport(RtpPacketizerConfig config) | 31 explicit TestRtpPacketTransport(RtpPacketizerConfig config) |
32 : config_(config), | 32 : config_(config), |
33 sequence_number_(kSeqNum), | 33 sequence_number_(kSeqNum), |
34 packets_sent_(0), | 34 packets_sent_(0), |
35 expected_number_of_packets_(0), | 35 expected_number_of_packets_(0), |
36 expected_packet_id_(0), | 36 expected_packet_id_(0), |
37 expected_frame_id_(0), | 37 expected_frame_id_(0) {} |
38 expected_rtp_timestamp_(0) {} | |
39 | 38 |
40 void VerifyRtpHeader(const RtpCastHeader& rtp_header) { | 39 void VerifyRtpHeader(const RtpCastHeader& rtp_header) { |
41 VerifyCommonRtpHeader(rtp_header); | 40 VerifyCommonRtpHeader(rtp_header); |
42 VerifyCastRtpHeader(rtp_header); | 41 VerifyCastRtpHeader(rtp_header); |
43 } | 42 } |
44 | 43 |
45 void VerifyCommonRtpHeader(const RtpCastHeader& rtp_header) { | 44 void VerifyCommonRtpHeader(const RtpCastHeader& rtp_header) { |
46 EXPECT_EQ(kPayload, rtp_header.payload_type); | 45 EXPECT_EQ(kPayload, rtp_header.payload_type); |
47 EXPECT_EQ(sequence_number_, rtp_header.sequence_number); | 46 EXPECT_EQ(sequence_number_, rtp_header.sequence_number); |
48 EXPECT_EQ(expected_rtp_timestamp_, rtp_header.rtp_timestamp); | 47 EXPECT_EQ(expected_rtp_timestamp_, rtp_header.rtp_timestamp); |
(...skipping 29 matching lines...) Expand all Loading... |
78 } | 77 } |
79 | 78 |
80 int64 GetBytesSent() final { return 0; } | 79 int64 GetBytesSent() final { return 0; } |
81 | 80 |
82 size_t number_of_packets_received() const { return packets_sent_; } | 81 size_t number_of_packets_received() const { return packets_sent_; } |
83 | 82 |
84 void set_expected_number_of_packets(size_t expected_number_of_packets) { | 83 void set_expected_number_of_packets(size_t expected_number_of_packets) { |
85 expected_number_of_packets_ = expected_number_of_packets; | 84 expected_number_of_packets_ = expected_number_of_packets; |
86 } | 85 } |
87 | 86 |
88 void set_rtp_timestamp(uint32 rtp_timestamp) { | 87 void set_rtp_timestamp(RtpTimeTicks rtp_timestamp) { |
89 expected_rtp_timestamp_ = rtp_timestamp; | 88 expected_rtp_timestamp_ = rtp_timestamp; |
90 } | 89 } |
91 | 90 |
92 RtpPacketizerConfig config_; | 91 RtpPacketizerConfig config_; |
93 uint32 sequence_number_; | 92 uint32 sequence_number_; |
94 size_t packets_sent_; | 93 size_t packets_sent_; |
95 size_t number_of_packets_; | 94 size_t number_of_packets_; |
96 size_t expected_number_of_packets_; | 95 size_t expected_number_of_packets_; |
97 // Assuming packets arrive in sequence. | 96 // Assuming packets arrive in sequence. |
98 int expected_packet_id_; | 97 int expected_packet_id_; |
99 uint32 expected_frame_id_; | 98 uint32 expected_frame_id_; |
100 uint32 expected_rtp_timestamp_; | 99 RtpTimeTicks expected_rtp_timestamp_; |
101 | 100 |
102 private: | 101 private: |
103 DISALLOW_COPY_AND_ASSIGN(TestRtpPacketTransport); | 102 DISALLOW_COPY_AND_ASSIGN(TestRtpPacketTransport); |
104 }; | 103 }; |
105 | 104 |
106 class RtpPacketizerTest : public ::testing::Test { | 105 class RtpPacketizerTest : public ::testing::Test { |
107 protected: | 106 protected: |
108 RtpPacketizerTest() | 107 RtpPacketizerTest() |
109 : task_runner_(new test::FakeSingleThreadTaskRunner(&testing_clock_)) { | 108 : task_runner_(new test::FakeSingleThreadTaskRunner(&testing_clock_)) { |
110 config_.sequence_number = kSeqNum; | 109 config_.sequence_number = kSeqNum; |
111 config_.ssrc = kSsrc; | 110 config_.ssrc = kSsrc; |
112 config_.payload_type = kPayload; | 111 config_.payload_type = kPayload; |
113 config_.max_payload_length = kMaxPacketLength; | 112 config_.max_payload_length = kMaxPacketLength; |
114 transport_.reset(new TestRtpPacketTransport(config_)); | 113 transport_.reset(new TestRtpPacketTransport(config_)); |
115 pacer_.reset(new PacedSender(kTargetBurstSize, kMaxBurstSize, | 114 pacer_.reset(new PacedSender(kTargetBurstSize, kMaxBurstSize, |
116 &testing_clock_, nullptr, transport_.get(), | 115 &testing_clock_, nullptr, transport_.get(), |
117 task_runner_)); | 116 task_runner_)); |
118 pacer_->RegisterVideoSsrc(config_.ssrc); | 117 pacer_->RegisterVideoSsrc(config_.ssrc); |
119 rtp_packetizer_.reset(new RtpPacketizer( | 118 rtp_packetizer_.reset(new RtpPacketizer( |
120 pacer_.get(), &packet_storage_, config_)); | 119 pacer_.get(), &packet_storage_, config_)); |
121 video_frame_.dependency = EncodedFrame::DEPENDENT; | 120 video_frame_.dependency = EncodedFrame::DEPENDENT; |
122 video_frame_.frame_id = 0; | 121 video_frame_.frame_id = 0; |
123 video_frame_.referenced_frame_id = video_frame_.frame_id - 1; | 122 video_frame_.referenced_frame_id = video_frame_.frame_id - 1; |
124 video_frame_.data.assign(kFrameSize, 123); | 123 video_frame_.data.assign(kFrameSize, 123); |
125 video_frame_.rtp_timestamp = 0x0055aa11; | 124 video_frame_.rtp_timestamp = RtpTimeTicks().Expand(UINT32_C(0x0055aa11)); |
126 } | 125 } |
127 | 126 |
128 void RunTasks(int during_ms) { | 127 void RunTasks(int during_ms) { |
129 for (int i = 0; i < during_ms; ++i) { | 128 for (int i = 0; i < during_ms; ++i) { |
130 // Call process the timers every 1 ms. | 129 // Call process the timers every 1 ms. |
131 testing_clock_.Advance(base::TimeDelta::FromMilliseconds(1)); | 130 testing_clock_.Advance(base::TimeDelta::FromMilliseconds(1)); |
132 task_runner_->RunTasks(); | 131 task_runner_->RunTasks(); |
133 } | 132 } |
134 } | 133 } |
135 | 134 |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
183 video_frame_.reference_time = testing_clock_.NowTicks(); | 182 video_frame_.reference_time = testing_clock_.NowTicks(); |
184 rtp_packetizer_->SendFrameAsPackets(video_frame_); | 183 rtp_packetizer_->SendFrameAsPackets(video_frame_); |
185 RunTasks(33 + 1); | 184 RunTasks(33 + 1); |
186 EXPECT_EQ(expected_num_of_packets, rtp_packetizer_->send_packet_count()); | 185 EXPECT_EQ(expected_num_of_packets, rtp_packetizer_->send_packet_count()); |
187 EXPECT_EQ(kFrameSize, rtp_packetizer_->send_octet_count()); | 186 EXPECT_EQ(kFrameSize, rtp_packetizer_->send_octet_count()); |
188 EXPECT_EQ(expected_num_of_packets, transport_->number_of_packets_received()); | 187 EXPECT_EQ(expected_num_of_packets, transport_->number_of_packets_received()); |
189 } | 188 } |
190 | 189 |
191 } // namespace cast | 190 } // namespace cast |
192 } // namespace media | 191 } // namespace media |
OLD | NEW |