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

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

Issue 125713002: Implement UdpTransport for Cast (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: merged Created 6 years, 11 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/test/receiver.cc ('k') | media/cast/transport/cast_transport.gyp » ('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 // Test application that simulates a cast sender - Data can be either generated 5 // Test application that simulates a cast sender - Data can be either generated
6 // or read from a file. 6 // or read from a file.
7 7
8 #include "base/at_exit.h" 8 #include "base/at_exit.h"
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
11 #include "base/threading/thread.h" 11 #include "base/threading/thread.h"
12 #include "base/time/default_tick_clock.h" 12 #include "base/time/default_tick_clock.h"
13 #include "media/base/video_frame.h" 13 #include "media/base/video_frame.h"
14 #include "media/cast/cast_config.h" 14 #include "media/cast/cast_config.h"
15 #include "media/cast/cast_environment.h" 15 #include "media/cast/cast_environment.h"
16 #include "media/cast/cast_sender.h" 16 #include "media/cast/cast_sender.h"
17 #include "media/cast/logging/logging_defines.h" 17 #include "media/cast/logging/logging_defines.h"
18 #include "media/cast/test/audio_utility.h" 18 #include "media/cast/test/audio_utility.h"
19 #include "media/cast/test/utility/input_helper.h" 19 #include "media/cast/test/utility/input_helper.h"
20 #include "media/cast/test/video_utility.h" 20 #include "media/cast/test/video_utility.h"
21 #include "media/cast/transport/transport/transport.h" 21 #include "media/cast/transport/transport/udp_transport.h"
22 #include "ui/gfx/size.h" 22 #include "ui/gfx/size.h"
23 23
24 namespace media { 24 namespace media {
25 namespace cast { 25 namespace cast {
26 // Settings chosen to match default receiver settings. 26 // Settings chosen to match default receiver settings.
27 #define DEFAULT_SEND_PORT "2344" 27 #define DEFAULT_SEND_PORT "2344"
28 #define DEFAULT_RECEIVE_PORT "2346" 28 #define DEFAULT_RECEIVE_PORT "2346"
29 #define DEFAULT_SEND_IP "127.0.0.1" 29 #define DEFAULT_SEND_IP "127.0.0.1"
30 #define DEFAULT_READ_FROM_FILE "0" 30 #define DEFAULT_READ_FROM_FILE "0"
31 #define DEFAULT_AUDIO_SENDER_SSRC "1" 31 #define DEFAULT_AUDIO_SENDER_SSRC "1"
(...skipping 256 matching lines...) Expand 10 before | Expand all | Expand 10 after
288 }; 288 };
289 289
290 } // namespace cast 290 } // namespace cast
291 } // namespace media 291 } // namespace media
292 292
293 293
294 int main(int argc, char** argv) { 294 int main(int argc, char** argv) {
295 base::AtExitManager at_exit; 295 base::AtExitManager at_exit;
296 VLOG(1) << "Cast Sender"; 296 VLOG(1) << "Cast Sender";
297 base::Thread test_thread("Cast sender test app thread"); 297 base::Thread test_thread("Cast sender test app thread");
298 base::Thread main_thread("Cast main send thread");
299 base::Thread audio_thread("Cast audio encoder thread"); 298 base::Thread audio_thread("Cast audio encoder thread");
300 base::Thread video_thread("Cast video encoder thread"); 299 base::Thread video_thread("Cast video encoder thread");
301 test_thread.Start(); 300 test_thread.Start();
302 main_thread.Start();
303 audio_thread.Start(); 301 audio_thread.Start();
304 video_thread.Start(); 302 video_thread.Start();
305 303
306 base::DefaultTickClock clock; 304 base::DefaultTickClock clock;
307 base::MessageLoopForIO io_message_loop; 305 base::MessageLoopForIO io_message_loop;
308 306
309 // Enable main and send side threads only. Disable logging. 307 // Enable main and send side threads only. Disable logging.
310 scoped_refptr<media::cast::CastEnvironment> cast_environment(new 308 scoped_refptr<media::cast::CastEnvironment> cast_environment(new
311 media::cast::CastEnvironment( 309 media::cast::CastEnvironment(
312 &clock, 310 &clock,
313 main_thread.message_loop_proxy(), 311 io_message_loop.message_loop_proxy(),
314 audio_thread.message_loop_proxy(), 312 audio_thread.message_loop_proxy(),
315 NULL, 313 NULL,
316 video_thread.message_loop_proxy(), 314 video_thread.message_loop_proxy(),
317 NULL, 315 NULL,
318 main_thread.message_loop_proxy(), 316 io_message_loop.message_loop_proxy(),
319 media::cast::GetDefaultCastLoggingConfig())); 317 media::cast::GetDefaultCastLoggingConfig()));
320 318
321 media::cast::AudioSenderConfig audio_config = 319 media::cast::AudioSenderConfig audio_config =
322 media::cast::GetAudioSenderConfig(); 320 media::cast::GetAudioSenderConfig();
323 media::cast::VideoSenderConfig video_config = 321 media::cast::VideoSenderConfig video_config =
324 media::cast::GetVideoSenderConfig(); 322 media::cast::GetVideoSenderConfig();
325 323
326 scoped_ptr<media::cast::transport::Transport> transport( 324 int remote_port, local_port;
327 new media::cast::transport::Transport( 325 media::cast::GetPorts(&remote_port, &local_port);
328 io_message_loop.message_loop_proxy())); 326
327 std::string remote_ip_address =
328 media::cast::GetIpAddress("Enter receiver IP.");
329 std::string local_ip_address = media::cast::GetIpAddress("Enter local IP.");
330 net::IPAddressNumber remote_ip_number;
331 net::IPAddressNumber local_ip_number;
332
333 if (!net::ParseIPLiteralToNumber(remote_ip_address, &remote_ip_number)) {
334 LOG(ERROR) << "Invalid remote IP address.";
335 return 1;
336 }
337
338 if (!net::ParseIPLiteralToNumber(local_ip_address, &local_ip_number)) {
339 LOG(ERROR) << "Invalid local IP address.";
340 return 1;
341 }
342
343 net::IPEndPoint remote_end_point(remote_ip_number, remote_port);
344 net::IPEndPoint local_end_point(local_ip_number, local_port);
345 scoped_ptr<media::cast::transport::UdpTransport> transport(
346 new media::cast::transport::UdpTransport(
347 io_message_loop.message_loop_proxy(),
348 local_end_point,
349 remote_end_point));
329 scoped_ptr<media::cast::CastSender> cast_sender( 350 scoped_ptr<media::cast::CastSender> cast_sender(
330 media::cast::CastSender::CreateCastSender(cast_environment, 351 media::cast::CastSender::CreateCastSender(cast_environment,
331 audio_config, 352 audio_config,
332 video_config, 353 video_config,
333 NULL, // VideoEncoderController. 354 NULL, // VideoEncoderController.
334 transport->packet_sender())); 355 transport.get()));
335 356 transport->StartReceiving(cast_sender->packet_receiver());
336 media::cast::transport::PacketReceiver* packet_receiver =
337 cast_sender->packet_receiver();
338
339 int send_to_port, receive_port;
340 media::cast::GetPorts(&send_to_port, &receive_port);
341 std::string ip_address = media::cast::GetIpAddress("Enter destination IP.");
342 std::string local_ip_address = media::cast::GetIpAddress("Enter local IP.");
343
344 transport->SetLocalReceiver(packet_receiver, ip_address, local_ip_address,
345 receive_port);
346 transport->SetSendDestination(ip_address, send_to_port);
347 357
348 media::cast::FrameInput* frame_input = cast_sender->frame_input(); 358 media::cast::FrameInput* frame_input = cast_sender->frame_input();
349 scoped_ptr<media::cast::SendProcess> send_process(new 359 scoped_ptr<media::cast::SendProcess> send_process(new
350 media::cast::SendProcess(test_thread.message_loop_proxy(), 360 media::cast::SendProcess(test_thread.message_loop_proxy(),
351 cast_environment->Clock(), 361 cast_environment->Clock(),
352 video_config, 362 video_config,
353 frame_input)); 363 frame_input));
354 364
355 send_process->SendFrame(); 365 send_process->SendFrame();
356 io_message_loop.Run(); 366 io_message_loop.Run();
357 transport->StopReceiving();
358 return 0; 367 return 0;
359 } 368 }
OLDNEW
« no previous file with comments | « media/cast/test/receiver.cc ('k') | media/cast/transport/cast_transport.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698