| 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 |