Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(176)

Side by Side Diff: media/cast/sender/video_sender_unittest.cc

Issue 388663003: Cast: Reshuffle files under media/cast (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: missing includes Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « media/cast/sender/video_sender.cc ('k') | media/cast/sender/vp8_encoder.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 <stdint.h> 5 #include <stdint.h>
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
11 #include "base/test/simple_test_tick_clock.h" 11 #include "base/test/simple_test_tick_clock.h"
12 #include "media/base/video_frame.h" 12 #include "media/base/video_frame.h"
13 #include "media/cast/cast_environment.h" 13 #include "media/cast/cast_environment.h"
14 #include "media/cast/logging/simple_event_subscriber.h" 14 #include "media/cast/logging/simple_event_subscriber.h"
15 #include "media/cast/net/cast_transport_config.h"
16 #include "media/cast/net/cast_transport_sender_impl.h"
17 #include "media/cast/net/pacing/paced_sender.h"
18 #include "media/cast/sender/video_sender.h"
15 #include "media/cast/test/fake_single_thread_task_runner.h" 19 #include "media/cast/test/fake_single_thread_task_runner.h"
16 #include "media/cast/test/fake_video_encode_accelerator.h" 20 #include "media/cast/test/fake_video_encode_accelerator.h"
17 #include "media/cast/test/utility/default_config.h" 21 #include "media/cast/test/utility/default_config.h"
18 #include "media/cast/test/utility/video_utility.h" 22 #include "media/cast/test/utility/video_utility.h"
19 #include "media/cast/transport/cast_transport_config.h"
20 #include "media/cast/transport/cast_transport_sender_impl.h"
21 #include "media/cast/transport/pacing/paced_sender.h"
22 #include "media/cast/video_sender/video_sender.h"
23 #include "testing/gmock/include/gmock/gmock.h" 23 #include "testing/gmock/include/gmock/gmock.h"
24 #include "testing/gtest/include/gtest/gtest.h" 24 #include "testing/gtest/include/gtest/gtest.h"
25 25
26 namespace media { 26 namespace media {
27 namespace cast { 27 namespace cast {
28 28
29 namespace { 29 namespace {
30 static const uint8 kPixelValue = 123; 30 static const uint8 kPixelValue = 123;
31 static const int kWidth = 320; 31 static const int kWidth = 320;
32 static const int kHeight = 240; 32 static const int kHeight = 240;
(...skipping 11 matching lines...) Expand all
44 void CreateSharedMemory( 44 void CreateSharedMemory(
45 size_t size, const ReceiveVideoEncodeMemoryCallback& callback) { 45 size_t size, const ReceiveVideoEncodeMemoryCallback& callback) {
46 scoped_ptr<base::SharedMemory> shm(new base::SharedMemory()); 46 scoped_ptr<base::SharedMemory> shm(new base::SharedMemory());
47 if (!shm->CreateAndMapAnonymous(size)) { 47 if (!shm->CreateAndMapAnonymous(size)) {
48 NOTREACHED(); 48 NOTREACHED();
49 return; 49 return;
50 } 50 }
51 callback.Run(shm.Pass()); 51 callback.Run(shm.Pass());
52 } 52 }
53 53
54 class TestPacketSender : public transport::PacketSender { 54 class TestPacketSender : public PacketSender {
55 public: 55 public:
56 TestPacketSender() 56 TestPacketSender()
57 : number_of_rtp_packets_(0), 57 : number_of_rtp_packets_(0),
58 number_of_rtcp_packets_(0), 58 number_of_rtcp_packets_(0),
59 paused_(false) {} 59 paused_(false) {}
60 60
61 // A singular packet implies a RTCP packet. 61 // A singular packet implies a RTCP packet.
62 virtual bool SendPacket(transport::PacketRef packet, 62 virtual bool SendPacket(PacketRef packet,
63 const base::Closure& cb) OVERRIDE { 63 const base::Closure& cb) OVERRIDE {
64 if (paused_) { 64 if (paused_) {
65 stored_packet_ = packet; 65 stored_packet_ = packet;
66 callback_ = cb; 66 callback_ = cb;
67 return false; 67 return false;
68 } 68 }
69 if (Rtcp::IsRtcpPacket(&packet->data[0], packet->data.size())) { 69 if (Rtcp::IsRtcpPacket(&packet->data[0], packet->data.size())) {
70 ++number_of_rtcp_packets_; 70 ++number_of_rtcp_packets_;
71 } else { 71 } else {
72 // Check that at least one RTCP packet was sent before the first RTP 72 // Check that at least one RTCP packet was sent before the first RTP
(...skipping 17 matching lines...) Expand all
90 SendPacket(stored_packet_, callback_); 90 SendPacket(stored_packet_, callback_);
91 callback_.Run(); 91 callback_.Run();
92 } 92 }
93 } 93 }
94 94
95 private: 95 private:
96 int number_of_rtp_packets_; 96 int number_of_rtp_packets_;
97 int number_of_rtcp_packets_; 97 int number_of_rtcp_packets_;
98 bool paused_; 98 bool paused_;
99 base::Closure callback_; 99 base::Closure callback_;
100 transport::PacketRef stored_packet_; 100 PacketRef stored_packet_;
101 101
102 DISALLOW_COPY_AND_ASSIGN(TestPacketSender); 102 DISALLOW_COPY_AND_ASSIGN(TestPacketSender);
103 }; 103 };
104 104
105 class PeerVideoSender : public VideoSender { 105 class PeerVideoSender : public VideoSender {
106 public: 106 public:
107 PeerVideoSender( 107 PeerVideoSender(
108 scoped_refptr<CastEnvironment> cast_environment, 108 scoped_refptr<CastEnvironment> cast_environment,
109 const VideoSenderConfig& video_config, 109 const VideoSenderConfig& video_config,
110 const CreateVideoEncodeAcceleratorCallback& create_vea_cb, 110 const CreateVideoEncodeAcceleratorCallback& create_vea_cb,
111 const CreateVideoEncodeMemoryCallback& create_video_encode_mem_cb, 111 const CreateVideoEncodeMemoryCallback& create_video_encode_mem_cb,
112 transport::CastTransportSender* const transport_sender) 112 CastTransportSender* const transport_sender)
113 : VideoSender(cast_environment, 113 : VideoSender(cast_environment,
114 video_config, 114 video_config,
115 create_vea_cb, 115 create_vea_cb,
116 create_video_encode_mem_cb, 116 create_video_encode_mem_cb,
117 transport_sender) {} 117 transport_sender) {}
118 using VideoSender::OnReceivedCastFeedback; 118 using VideoSender::OnReceivedCastFeedback;
119 }; 119 };
120 } // namespace 120 } // namespace
121 121
122 class VideoSenderTest : public ::testing::Test { 122 class VideoSenderTest : public ::testing::Test {
123 protected: 123 protected:
124 VideoSenderTest() { 124 VideoSenderTest() {
125 testing_clock_ = new base::SimpleTestTickClock(); 125 testing_clock_ = new base::SimpleTestTickClock();
126 testing_clock_->Advance(base::TimeTicks::Now() - base::TimeTicks()); 126 testing_clock_->Advance(base::TimeTicks::Now() - base::TimeTicks());
127 task_runner_ = new test::FakeSingleThreadTaskRunner(testing_clock_); 127 task_runner_ = new test::FakeSingleThreadTaskRunner(testing_clock_);
128 cast_environment_ = 128 cast_environment_ =
129 new CastEnvironment(scoped_ptr<base::TickClock>(testing_clock_).Pass(), 129 new CastEnvironment(scoped_ptr<base::TickClock>(testing_clock_).Pass(),
130 task_runner_, 130 task_runner_,
131 task_runner_, 131 task_runner_,
132 task_runner_); 132 task_runner_);
133 last_pixel_value_ = kPixelValue; 133 last_pixel_value_ = kPixelValue;
134 net::IPEndPoint dummy_endpoint; 134 net::IPEndPoint dummy_endpoint;
135 transport_sender_.reset(new transport::CastTransportSenderImpl( 135 transport_sender_.reset(new CastTransportSenderImpl(
136 NULL, 136 NULL,
137 testing_clock_, 137 testing_clock_,
138 dummy_endpoint, 138 dummy_endpoint,
139 base::Bind(&UpdateCastTransportStatus), 139 base::Bind(&UpdateCastTransportStatus),
140 transport::BulkRawEventsCallback(), 140 BulkRawEventsCallback(),
141 base::TimeDelta(), 141 base::TimeDelta(),
142 task_runner_, 142 task_runner_,
143 &transport_)); 143 &transport_));
144 } 144 }
145 145
146 virtual ~VideoSenderTest() {} 146 virtual ~VideoSenderTest() {}
147 147
148 virtual void TearDown() OVERRIDE { 148 virtual void TearDown() OVERRIDE {
149 video_sender_.reset(); 149 video_sender_.reset();
150 task_runner_->RunTasks(); 150 task_runner_->RunTasks();
151 } 151 }
152 152
153 static void UpdateCastTransportStatus(transport::CastTransportStatus status) { 153 static void UpdateCastTransportStatus(CastTransportStatus status) {
154 EXPECT_EQ(transport::TRANSPORT_VIDEO_INITIALIZED, status); 154 EXPECT_EQ(TRANSPORT_VIDEO_INITIALIZED, status);
155 } 155 }
156 156
157 void InitEncoder(bool external) { 157 void InitEncoder(bool external) {
158 VideoSenderConfig video_config; 158 VideoSenderConfig video_config;
159 video_config.ssrc = 1; 159 video_config.ssrc = 1;
160 video_config.incoming_feedback_ssrc = 2; 160 video_config.incoming_feedback_ssrc = 2;
161 video_config.rtcp_c_name = "video_test@10.1.1.1"; 161 video_config.rtcp_c_name = "video_test@10.1.1.1";
162 video_config.rtp_payload_type = 127; 162 video_config.rtp_payload_type = 127;
163 video_config.use_external_encoder = external; 163 video_config.use_external_encoder = external;
164 video_config.width = kWidth; 164 video_config.width = kWidth;
165 video_config.height = kHeight; 165 video_config.height = kHeight;
166 video_config.max_bitrate = 5000000; 166 video_config.max_bitrate = 5000000;
167 video_config.min_bitrate = 1000000; 167 video_config.min_bitrate = 1000000;
168 video_config.start_bitrate = 1000000; 168 video_config.start_bitrate = 1000000;
169 video_config.max_qp = 56; 169 video_config.max_qp = 56;
170 video_config.min_qp = 0; 170 video_config.min_qp = 0;
171 video_config.max_frame_rate = 30; 171 video_config.max_frame_rate = 30;
172 video_config.max_number_of_video_buffers_used = 1; 172 video_config.max_number_of_video_buffers_used = 1;
173 video_config.codec = transport::CODEC_VIDEO_VP8; 173 video_config.codec = CODEC_VIDEO_VP8;
174 174
175 if (external) { 175 if (external) {
176 scoped_ptr<VideoEncodeAccelerator> fake_vea( 176 scoped_ptr<VideoEncodeAccelerator> fake_vea(
177 new test::FakeVideoEncodeAccelerator(task_runner_)); 177 new test::FakeVideoEncodeAccelerator(task_runner_));
178 video_sender_.reset( 178 video_sender_.reset(
179 new PeerVideoSender(cast_environment_, 179 new PeerVideoSender(cast_environment_,
180 video_config, 180 video_config,
181 base::Bind(&CreateVideoEncodeAccelerator, 181 base::Bind(&CreateVideoEncodeAccelerator,
182 task_runner_, 182 task_runner_,
183 base::Passed(&fake_vea)), 183 base::Passed(&fake_vea)),
(...skipping 27 matching lines...) Expand all
211 PopulateVideoFrameWithNoise(video_frame); 211 PopulateVideoFrameWithNoise(video_frame);
212 return video_frame; 212 return video_frame;
213 } 213 }
214 214
215 void RunTasks(int during_ms) { 215 void RunTasks(int during_ms) {
216 task_runner_->Sleep(base::TimeDelta::FromMilliseconds(during_ms)); 216 task_runner_->Sleep(base::TimeDelta::FromMilliseconds(during_ms));
217 } 217 }
218 218
219 base::SimpleTestTickClock* testing_clock_; // Owned by CastEnvironment. 219 base::SimpleTestTickClock* testing_clock_; // Owned by CastEnvironment.
220 TestPacketSender transport_; 220 TestPacketSender transport_;
221 scoped_ptr<transport::CastTransportSenderImpl> transport_sender_; 221 scoped_ptr<CastTransportSenderImpl> transport_sender_;
222 scoped_refptr<test::FakeSingleThreadTaskRunner> task_runner_; 222 scoped_refptr<test::FakeSingleThreadTaskRunner> task_runner_;
223 scoped_ptr<PeerVideoSender> video_sender_; 223 scoped_ptr<PeerVideoSender> video_sender_;
224 scoped_refptr<CastEnvironment> cast_environment_; 224 scoped_refptr<CastEnvironment> cast_environment_;
225 int last_pixel_value_; 225 int last_pixel_value_;
226 226
227 DISALLOW_COPY_AND_ASSIGN(VideoSenderTest); 227 DISALLOW_COPY_AND_ASSIGN(VideoSenderTest);
228 }; 228 };
229 229
230 TEST_F(VideoSenderTest, BuiltInEncoder) { 230 TEST_F(VideoSenderTest, BuiltInEncoder) {
231 InitEncoder(false); 231 InitEncoder(false);
(...skipping 284 matching lines...) Expand 10 before | Expand all | Expand 10 after
516 video_sender_->OnReceivedCastFeedback(cast_feedback); 516 video_sender_->OnReceivedCastFeedback(cast_feedback);
517 517
518 transport_.SetPause(false); 518 transport_.SetPause(false);
519 RunTasks(33); 519 RunTasks(33);
520 // Only one packet should be retransmitted. 520 // Only one packet should be retransmitted.
521 EXPECT_EQ(1, transport_.number_of_rtp_packets()); 521 EXPECT_EQ(1, transport_.number_of_rtp_packets());
522 } 522 }
523 523
524 } // namespace cast 524 } // namespace cast
525 } // namespace media 525 } // namespace media
OLDNEW
« no previous file with comments | « media/cast/sender/video_sender.cc ('k') | media/cast/sender/vp8_encoder.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698