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

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: 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
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"
(...skipping 277 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 media::cast::GetDefaultCastLoggingConfig())); 316 media::cast::GetDefaultCastLoggingConfig()));
319 317
320 media::cast::AudioSenderConfig audio_config = 318 media::cast::AudioSenderConfig audio_config =
321 media::cast::GetAudioSenderConfig(); 319 media::cast::GetAudioSenderConfig();
322 media::cast::VideoSenderConfig video_config = 320 media::cast::VideoSenderConfig video_config =
323 media::cast::GetVideoSenderConfig(); 321 media::cast::GetVideoSenderConfig();
324 322
325 scoped_ptr<media::cast::transport::Transport> transport( 323 int remote_port, local_port;
326 new media::cast::transport::Transport( 324 media::cast::GetPorts(&remote_port, &local_port);
327 io_message_loop.message_loop_proxy())); 325
326 std::string remote_ip_address =
327 media::cast::GetIpAddress("Enter receiver IP.");
328 std::string local_ip_address = media::cast::GetIpAddress("Enter local IP.");
329 net::IPAddressNumber remote_ip_number;
330 net::IPAddressNumber local_ip_number;
331
332 if (!net::ParseIPLiteralToNumber(remote_ip_address, &remote_ip_number)) {
333 LOG(ERROR) << "Invalid remote IP address.";
334 return 1;
335 }
336
337 if (!net::ParseIPLiteralToNumber(local_ip_address, &local_ip_number)) {
338 LOG(ERROR) << "Invalid local IP address.";
339 return 1;
340 }
341
342 net::IPEndPoint remote_end_point(remote_ip_number, remote_port);
343 net::IPEndPoint local_end_point(local_ip_number, local_port);
344 scoped_ptr<media::cast::transport::UdpTransport> transport(
345 new media::cast::transport::UdpTransport(
346 io_message_loop.message_loop_proxy(),
347 local_end_point,
348 remote_end_point));
328 scoped_ptr<media::cast::CastSender> cast_sender( 349 scoped_ptr<media::cast::CastSender> cast_sender(
329 media::cast::CastSender::CreateCastSender(cast_environment, 350 media::cast::CastSender::CreateCastSender(cast_environment,
330 audio_config, 351 audio_config,
331 video_config, 352 video_config,
332 NULL, // VideoEncoderController. 353 NULL, // VideoEncoderController.
333 transport->packet_sender())); 354 transport.get()));
334 355 transport->StartReceiving(cast_sender->packet_receiver());
335 media::cast::PacketReceiver* packet_receiver = cast_sender->packet_receiver();
336
337 int send_to_port, receive_port;
338 media::cast::GetPorts(&send_to_port, &receive_port);
339 std::string ip_address = media::cast::GetIpAddress("Enter destination IP.");
340 std::string local_ip_address = media::cast::GetIpAddress("Enter local IP.");
341
342 transport->SetLocalReceiver(packet_receiver, ip_address, local_ip_address,
343 receive_port);
344 transport->SetSendDestination(ip_address, send_to_port);
345 356
346 media::cast::FrameInput* frame_input = cast_sender->frame_input(); 357 media::cast::FrameInput* frame_input = cast_sender->frame_input();
347 scoped_ptr<media::cast::SendProcess> send_process(new 358 scoped_ptr<media::cast::SendProcess> send_process(new
348 media::cast::SendProcess(test_thread.message_loop_proxy(), 359 media::cast::SendProcess(test_thread.message_loop_proxy(),
349 cast_environment->Clock(), 360 cast_environment->Clock(),
350 video_config, 361 video_config,
351 frame_input)); 362 frame_input));
352 363
353 send_process->SendFrame(); 364 send_process->SendFrame();
354 io_message_loop.Run(); 365 io_message_loop.Run();
355 transport->StopReceiving();
356 return 0; 366 return 0;
357 } 367 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698