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 <stddef.h> | 7 #include <stddef.h> |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 | 9 |
10 #include "base/macros.h" | 10 #include "base/macros.h" |
(...skipping 18 matching lines...) Expand all Loading... |
29 } | 29 } |
30 | 30 |
31 class TestRtpPacketTransport : public PacketSender { | 31 class TestRtpPacketTransport : public PacketSender { |
32 public: | 32 public: |
33 explicit TestRtpPacketTransport(RtpPacketizerConfig config) | 33 explicit TestRtpPacketTransport(RtpPacketizerConfig config) |
34 : config_(config), | 34 : config_(config), |
35 sequence_number_(kSeqNum), | 35 sequence_number_(kSeqNum), |
36 packets_sent_(0), | 36 packets_sent_(0), |
37 expected_number_of_packets_(0), | 37 expected_number_of_packets_(0), |
38 expected_packet_id_(0), | 38 expected_packet_id_(0), |
39 expected_frame_id_(0), | 39 expected_frame_id_(0) {} |
40 expected_rtp_timestamp_(0) {} | |
41 | 40 |
42 void VerifyRtpHeader(const RtpCastHeader& rtp_header) { | 41 void VerifyRtpHeader(const RtpCastHeader& rtp_header) { |
43 VerifyCommonRtpHeader(rtp_header); | 42 VerifyCommonRtpHeader(rtp_header); |
44 VerifyCastRtpHeader(rtp_header); | 43 VerifyCastRtpHeader(rtp_header); |
45 } | 44 } |
46 | 45 |
47 void VerifyCommonRtpHeader(const RtpCastHeader& rtp_header) { | 46 void VerifyCommonRtpHeader(const RtpCastHeader& rtp_header) { |
48 EXPECT_EQ(kPayload, rtp_header.payload_type); | 47 EXPECT_EQ(kPayload, rtp_header.payload_type); |
49 EXPECT_EQ(sequence_number_, rtp_header.sequence_number); | 48 EXPECT_EQ(sequence_number_, rtp_header.sequence_number); |
50 EXPECT_EQ(expected_rtp_timestamp_, rtp_header.rtp_timestamp); | 49 EXPECT_EQ(expected_rtp_timestamp_, rtp_header.rtp_timestamp); |
(...skipping 29 matching lines...) Expand all Loading... |
80 } | 79 } |
81 | 80 |
82 int64_t GetBytesSent() final { return 0; } | 81 int64_t GetBytesSent() final { return 0; } |
83 | 82 |
84 size_t number_of_packets_received() const { return packets_sent_; } | 83 size_t number_of_packets_received() const { return packets_sent_; } |
85 | 84 |
86 void set_expected_number_of_packets(size_t expected_number_of_packets) { | 85 void set_expected_number_of_packets(size_t expected_number_of_packets) { |
87 expected_number_of_packets_ = expected_number_of_packets; | 86 expected_number_of_packets_ = expected_number_of_packets; |
88 } | 87 } |
89 | 88 |
90 void set_rtp_timestamp(uint32_t rtp_timestamp) { | 89 void set_rtp_timestamp(RtpTimeTicks rtp_timestamp) { |
91 expected_rtp_timestamp_ = rtp_timestamp; | 90 expected_rtp_timestamp_ = rtp_timestamp; |
92 } | 91 } |
93 | 92 |
94 RtpPacketizerConfig config_; | 93 RtpPacketizerConfig config_; |
95 uint32_t sequence_number_; | 94 uint32_t sequence_number_; |
96 size_t packets_sent_; | 95 size_t packets_sent_; |
97 size_t number_of_packets_; | 96 size_t number_of_packets_; |
98 size_t expected_number_of_packets_; | 97 size_t expected_number_of_packets_; |
99 // Assuming packets arrive in sequence. | 98 // Assuming packets arrive in sequence. |
100 int expected_packet_id_; | 99 int expected_packet_id_; |
101 uint32_t expected_frame_id_; | 100 uint32_t expected_frame_id_; |
102 uint32_t expected_rtp_timestamp_; | 101 RtpTimeTicks expected_rtp_timestamp_; |
103 | 102 |
104 private: | 103 private: |
105 DISALLOW_COPY_AND_ASSIGN(TestRtpPacketTransport); | 104 DISALLOW_COPY_AND_ASSIGN(TestRtpPacketTransport); |
106 }; | 105 }; |
107 | 106 |
108 class RtpPacketizerTest : public ::testing::Test { | 107 class RtpPacketizerTest : public ::testing::Test { |
109 protected: | 108 protected: |
110 RtpPacketizerTest() | 109 RtpPacketizerTest() |
111 : task_runner_(new test::FakeSingleThreadTaskRunner(&testing_clock_)) { | 110 : task_runner_(new test::FakeSingleThreadTaskRunner(&testing_clock_)) { |
112 config_.sequence_number = kSeqNum; | 111 config_.sequence_number = kSeqNum; |
113 config_.ssrc = kSsrc; | 112 config_.ssrc = kSsrc; |
114 config_.payload_type = kPayload; | 113 config_.payload_type = kPayload; |
115 config_.max_payload_length = kMaxPacketLength; | 114 config_.max_payload_length = kMaxPacketLength; |
116 transport_.reset(new TestRtpPacketTransport(config_)); | 115 transport_.reset(new TestRtpPacketTransport(config_)); |
117 pacer_.reset(new PacedSender(kTargetBurstSize, kMaxBurstSize, | 116 pacer_.reset(new PacedSender(kTargetBurstSize, kMaxBurstSize, |
118 &testing_clock_, nullptr, transport_.get(), | 117 &testing_clock_, nullptr, transport_.get(), |
119 task_runner_)); | 118 task_runner_)); |
120 pacer_->RegisterVideoSsrc(config_.ssrc); | 119 pacer_->RegisterVideoSsrc(config_.ssrc); |
121 rtp_packetizer_.reset(new RtpPacketizer( | 120 rtp_packetizer_.reset(new RtpPacketizer( |
122 pacer_.get(), &packet_storage_, config_)); | 121 pacer_.get(), &packet_storage_, config_)); |
123 video_frame_.dependency = EncodedFrame::DEPENDENT; | 122 video_frame_.dependency = EncodedFrame::DEPENDENT; |
124 video_frame_.frame_id = 0; | 123 video_frame_.frame_id = 0; |
125 video_frame_.referenced_frame_id = video_frame_.frame_id - 1; | 124 video_frame_.referenced_frame_id = video_frame_.frame_id - 1; |
126 video_frame_.data.assign(kFrameSize, 123); | 125 video_frame_.data.assign(kFrameSize, 123); |
127 video_frame_.rtp_timestamp = 0x0055aa11; | 126 video_frame_.rtp_timestamp = RtpTimeTicks().Expand(UINT32_C(0x0055aa11)); |
128 } | 127 } |
129 | 128 |
130 void RunTasks(int during_ms) { | 129 void RunTasks(int during_ms) { |
131 for (int i = 0; i < during_ms; ++i) { | 130 for (int i = 0; i < during_ms; ++i) { |
132 // Call process the timers every 1 ms. | 131 // Call process the timers every 1 ms. |
133 testing_clock_.Advance(base::TimeDelta::FromMilliseconds(1)); | 132 testing_clock_.Advance(base::TimeDelta::FromMilliseconds(1)); |
134 task_runner_->RunTasks(); | 133 task_runner_->RunTasks(); |
135 } | 134 } |
136 } | 135 } |
137 | 136 |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
185 video_frame_.reference_time = testing_clock_.NowTicks(); | 184 video_frame_.reference_time = testing_clock_.NowTicks(); |
186 rtp_packetizer_->SendFrameAsPackets(video_frame_); | 185 rtp_packetizer_->SendFrameAsPackets(video_frame_); |
187 RunTasks(33 + 1); | 186 RunTasks(33 + 1); |
188 EXPECT_EQ(expected_num_of_packets, rtp_packetizer_->send_packet_count()); | 187 EXPECT_EQ(expected_num_of_packets, rtp_packetizer_->send_packet_count()); |
189 EXPECT_EQ(kFrameSize, rtp_packetizer_->send_octet_count()); | 188 EXPECT_EQ(kFrameSize, rtp_packetizer_->send_octet_count()); |
190 EXPECT_EQ(expected_num_of_packets, transport_->number_of_packets_received()); | 189 EXPECT_EQ(expected_num_of_packets, transport_->number_of_packets_received()); |
191 } | 190 } |
192 | 191 |
193 } // namespace cast | 192 } // namespace cast |
194 } // namespace media | 193 } // namespace media |
OLD | NEW |