| 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 <stddef.h> | 5 #include <stddef.h> |
| 6 #include <stdint.h> | 6 #include <stdint.h> |
| 7 | 7 |
| 8 #include <deque> | 8 #include <deque> |
| 9 #include <utility> | |
| 10 | 9 |
| 11 #include "base/bind.h" | 10 #include "base/bind.h" |
| 12 #include "base/macros.h" | 11 #include "base/macros.h" |
| 13 #include "base/memory/ref_counted.h" | 12 #include "base/memory/ref_counted.h" |
| 14 #include "base/memory/scoped_ptr.h" | 13 #include "base/memory/scoped_ptr.h" |
| 15 #include "base/test/simple_test_tick_clock.h" | 14 #include "base/test/simple_test_tick_clock.h" |
| 16 #include "media/cast/cast_environment.h" | 15 #include "media/cast/cast_environment.h" |
| 17 #include "media/cast/logging/simple_event_subscriber.h" | 16 #include "media/cast/logging/simple_event_subscriber.h" |
| 18 #include "media/cast/net/cast_transport_sender_impl.h" | 17 #include "media/cast/net/cast_transport_sender_impl.h" |
| 19 #include "media/cast/net/mock_cast_transport_sender.h" | 18 #include "media/cast/net/mock_cast_transport_sender.h" |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 69 | 68 |
| 70 class FrameReceiverTest : public ::testing::Test { | 69 class FrameReceiverTest : public ::testing::Test { |
| 71 protected: | 70 protected: |
| 72 FrameReceiverTest() { | 71 FrameReceiverTest() { |
| 73 testing_clock_ = new base::SimpleTestTickClock(); | 72 testing_clock_ = new base::SimpleTestTickClock(); |
| 74 testing_clock_->Advance(base::TimeTicks::Now() - base::TimeTicks()); | 73 testing_clock_->Advance(base::TimeTicks::Now() - base::TimeTicks()); |
| 75 start_time_ = testing_clock_->NowTicks(); | 74 start_time_ = testing_clock_->NowTicks(); |
| 76 task_runner_ = new test::FakeSingleThreadTaskRunner(testing_clock_); | 75 task_runner_ = new test::FakeSingleThreadTaskRunner(testing_clock_); |
| 77 | 76 |
| 78 cast_environment_ = | 77 cast_environment_ = |
| 79 new CastEnvironment(scoped_ptr<base::TickClock>(testing_clock_).Pass(), | 78 new CastEnvironment(scoped_ptr<base::TickClock>(testing_clock_), |
| 80 task_runner_, | 79 task_runner_, task_runner_, task_runner_); |
| 81 task_runner_, | |
| 82 task_runner_); | |
| 83 } | 80 } |
| 84 | 81 |
| 85 ~FrameReceiverTest() override {} | 82 ~FrameReceiverTest() override {} |
| 86 | 83 |
| 87 void SetUp() final { | 84 void SetUp() final { |
| 88 payload_.assign(kPacketSize, 0); | 85 payload_.assign(kPacketSize, 0); |
| 89 | 86 |
| 90 // Always start with a key frame. | 87 // Always start with a key frame. |
| 91 rtp_header_.is_key_frame = true; | 88 rtp_header_.is_key_frame = true; |
| 92 rtp_header_.frame_id = kFirstFrameId; | 89 rtp_header_.frame_id = kFirstFrameId; |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 125 const base::TimeTicks now = testing_clock_->NowTicks(); | 122 const base::TimeTicks now = testing_clock_->NowTicks(); |
| 126 const int64_t rtp_timestamp = (now - start_time_) * config_.rtp_timebase / | 123 const int64_t rtp_timestamp = (now - start_time_) * config_.rtp_timebase / |
| 127 base::TimeDelta::FromSeconds(1); | 124 base::TimeDelta::FromSeconds(1); |
| 128 CHECK_LE(0, rtp_timestamp); | 125 CHECK_LE(0, rtp_timestamp); |
| 129 uint32_t ntp_seconds; | 126 uint32_t ntp_seconds; |
| 130 uint32_t ntp_fraction; | 127 uint32_t ntp_fraction; |
| 131 ConvertTimeTicksToNtp(now, &ntp_seconds, &ntp_fraction); | 128 ConvertTimeTicksToNtp(now, &ntp_seconds, &ntp_fraction); |
| 132 TestRtcpPacketBuilder rtcp_packet; | 129 TestRtcpPacketBuilder rtcp_packet; |
| 133 rtcp_packet.AddSrWithNtp(config_.sender_ssrc, ntp_seconds, ntp_fraction, | 130 rtcp_packet.AddSrWithNtp(config_.sender_ssrc, ntp_seconds, ntp_fraction, |
| 134 static_cast<uint32_t>(rtp_timestamp)); | 131 static_cast<uint32_t>(rtp_timestamp)); |
| 135 ASSERT_TRUE(receiver_->ProcessPacket(rtcp_packet.GetPacket().Pass())); | 132 ASSERT_TRUE(receiver_->ProcessPacket(rtcp_packet.GetPacket())); |
| 136 } | 133 } |
| 137 | 134 |
| 138 FrameReceiverConfig config_; | 135 FrameReceiverConfig config_; |
| 139 std::vector<uint8_t> payload_; | 136 std::vector<uint8_t> payload_; |
| 140 RtpCastHeader rtp_header_; | 137 RtpCastHeader rtp_header_; |
| 141 base::SimpleTestTickClock* testing_clock_; // Owned by CastEnvironment. | 138 base::SimpleTestTickClock* testing_clock_; // Owned by CastEnvironment. |
| 142 base::TimeTicks start_time_; | 139 base::TimeTicks start_time_; |
| 143 MockCastTransportSender mock_transport_; | 140 MockCastTransportSender mock_transport_; |
| 144 scoped_refptr<test::FakeSingleThreadTaskRunner> task_runner_; | 141 scoped_refptr<test::FakeSingleThreadTaskRunner> task_runner_; |
| 145 scoped_refptr<CastEnvironment> cast_environment_; | 142 scoped_refptr<CastEnvironment> cast_environment_; |
| 146 FakeFrameClient frame_client_; | 143 FakeFrameClient frame_client_; |
| 147 | 144 |
| 148 // Important for the FrameReceiver to be declared last, since its dependencies | 145 // Important for the FrameReceiver to be declared last, since its dependencies |
| 149 // must remain alive until after its destruction. | 146 // must remain alive until after its destruction. |
| 150 scoped_ptr<FrameReceiver> receiver_; | 147 scoped_ptr<FrameReceiver> receiver_; |
| 151 | 148 |
| 152 private: | 149 private: |
| 153 DISALLOW_COPY_AND_ASSIGN(FrameReceiverTest); | 150 DISALLOW_COPY_AND_ASSIGN(FrameReceiverTest); |
| 154 }; | 151 }; |
| 155 | 152 |
| 156 TEST_F(FrameReceiverTest, RejectsUnparsablePackets) { | 153 TEST_F(FrameReceiverTest, RejectsUnparsablePackets) { |
| 157 CreateFrameReceiverOfVideo(); | 154 CreateFrameReceiverOfVideo(); |
| 158 | 155 |
| 159 SimpleEventSubscriber event_subscriber; | 156 SimpleEventSubscriber event_subscriber; |
| 160 cast_environment_->logger()->Subscribe(&event_subscriber); | 157 cast_environment_->logger()->Subscribe(&event_subscriber); |
| 161 | 158 |
| 162 const bool success = receiver_->ProcessPacket( | 159 const bool success = receiver_->ProcessPacket( |
| 163 scoped_ptr<Packet>(new Packet(kPacketSize, 0xff)).Pass()); | 160 scoped_ptr<Packet>(new Packet(kPacketSize, 0xff))); |
| 164 EXPECT_FALSE(success); | 161 EXPECT_FALSE(success); |
| 165 | 162 |
| 166 // Confirm no log events. | 163 // Confirm no log events. |
| 167 std::vector<FrameEvent> frame_events; | 164 std::vector<FrameEvent> frame_events; |
| 168 event_subscriber.GetFrameEventsAndReset(&frame_events); | 165 event_subscriber.GetFrameEventsAndReset(&frame_events); |
| 169 EXPECT_TRUE(frame_events.empty()); | 166 EXPECT_TRUE(frame_events.empty()); |
| 170 cast_environment_->logger()->Unsubscribe(&event_subscriber); | 167 cast_environment_->logger()->Unsubscribe(&event_subscriber); |
| 171 } | 168 } |
| 172 | 169 |
| 173 TEST_F(FrameReceiverTest, ReceivesOneFrame) { | 170 TEST_F(FrameReceiverTest, ReceivesOneFrame) { |
| (...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 415 EXPECT_GE(kFirstFrameId + 3, frame_events[i].frame_id); | 412 EXPECT_GE(kFirstFrameId + 3, frame_events[i].frame_id); |
| 416 const int frame_offset = frame_events[i].frame_id - kFirstFrameId; | 413 const int frame_offset = frame_events[i].frame_id - kFirstFrameId; |
| 417 EXPECT_EQ(frame_offset * rtp_advance_per_frame, | 414 EXPECT_EQ(frame_offset * rtp_advance_per_frame, |
| 418 frame_events[i].rtp_timestamp); | 415 frame_events[i].rtp_timestamp); |
| 419 } | 416 } |
| 420 cast_environment_->logger()->Unsubscribe(&event_subscriber); | 417 cast_environment_->logger()->Unsubscribe(&event_subscriber); |
| 421 } | 418 } |
| 422 | 419 |
| 423 } // namespace cast | 420 } // namespace cast |
| 424 } // namespace media | 421 } // namespace media |
| OLD | NEW |