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