| OLD | NEW |
| 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 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 121 GetSsrcs(&audio_config); | 121 GetSsrcs(&audio_config); |
| 122 GetPayloadtype(&audio_config); | 122 GetPayloadtype(&audio_config); |
| 123 | 123 |
| 124 audio_config.rtcp_c_name = "audio_sender@a.b.c.d"; | 124 audio_config.rtcp_c_name = "audio_sender@a.b.c.d"; |
| 125 | 125 |
| 126 VLOG(0) << "Using OPUS 48Khz stereo at 64kbit/s"; | 126 VLOG(0) << "Using OPUS 48Khz stereo at 64kbit/s"; |
| 127 audio_config.use_external_encoder = false; | 127 audio_config.use_external_encoder = false; |
| 128 audio_config.frequency = kAudioSamplingFrequency; | 128 audio_config.frequency = kAudioSamplingFrequency; |
| 129 audio_config.channels = kAudioChannels; | 129 audio_config.channels = kAudioChannels; |
| 130 audio_config.bitrate = 64000; | 130 audio_config.bitrate = 64000; |
| 131 audio_config.codec = transport::kOpus; | 131 audio_config.codec = kOpus; |
| 132 return audio_config; | 132 return audio_config; |
| 133 } | 133 } |
| 134 | 134 |
| 135 void GetPayloadtype(VideoSenderConfig* video_config) { | 135 void GetPayloadtype(VideoSenderConfig* video_config) { |
| 136 test::InputBuilder input("Choose video sender payload type.", | 136 test::InputBuilder input("Choose video sender payload type.", |
| 137 DEFAULT_VIDEO_PAYLOAD_TYPE, 96, 127); | 137 DEFAULT_VIDEO_PAYLOAD_TYPE, 96, 127); |
| 138 video_config->rtp_payload_type = input.GetIntInput(); | 138 video_config->rtp_payload_type = input.GetIntInput(); |
| 139 } | 139 } |
| 140 | 140 |
| 141 void GetVideoCodecSize(VideoSenderConfig* video_config) { | 141 void GetVideoCodecSize(VideoSenderConfig* video_config) { |
| (...skipping 29 matching lines...) Expand all Loading... |
| 171 GetVideoBitrates(&video_config); | 171 GetVideoBitrates(&video_config); |
| 172 | 172 |
| 173 video_config.rtcp_c_name = "video_sender@a.b.c.d"; | 173 video_config.rtcp_c_name = "video_sender@a.b.c.d"; |
| 174 | 174 |
| 175 video_config.use_external_encoder = false; | 175 video_config.use_external_encoder = false; |
| 176 | 176 |
| 177 VLOG(0) << "Using VP8 at 30 fps"; | 177 VLOG(0) << "Using VP8 at 30 fps"; |
| 178 video_config.min_qp = 4; | 178 video_config.min_qp = 4; |
| 179 video_config.max_qp = 40; | 179 video_config.max_qp = 40; |
| 180 video_config.max_frame_rate = 30; | 180 video_config.max_frame_rate = 30; |
| 181 video_config.codec = transport::kVp8; | 181 video_config.codec = kVp8; |
| 182 video_config.max_number_of_video_buffers_used = 1; | 182 video_config.max_number_of_video_buffers_used = 1; |
| 183 video_config.number_of_cores = 1; | 183 video_config.number_of_cores = 1; |
| 184 return video_config; | 184 return video_config; |
| 185 } | 185 } |
| 186 | 186 |
| 187 class SendProcess { | 187 class SendProcess { |
| 188 public: | 188 public: |
| 189 SendProcess(scoped_refptr<base::TaskRunner> thread_proxy, | 189 SendProcess(scoped_refptr<base::TaskRunner> thread_proxy, |
| 190 base::TickClock* clock, | 190 base::TickClock* clock, |
| 191 const VideoSenderConfig& video_config, | 191 const VideoSenderConfig& video_config, |
| (...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 308 | 308 |
| 309 // Enable main and send side threads only. Disable logging. | 309 // Enable main and send side threads only. Disable logging. |
| 310 scoped_refptr<media::cast::CastEnvironment> cast_environment(new | 310 scoped_refptr<media::cast::CastEnvironment> cast_environment(new |
| 311 media::cast::CastEnvironment( | 311 media::cast::CastEnvironment( |
| 312 &clock, | 312 &clock, |
| 313 main_thread.message_loop_proxy(), | 313 main_thread.message_loop_proxy(), |
| 314 audio_thread.message_loop_proxy(), | 314 audio_thread.message_loop_proxy(), |
| 315 NULL, | 315 NULL, |
| 316 video_thread.message_loop_proxy(), | 316 video_thread.message_loop_proxy(), |
| 317 NULL, | 317 NULL, |
| 318 main_thread.message_loop_proxy(), | |
| 319 media::cast::GetDefaultCastLoggingConfig())); | 318 media::cast::GetDefaultCastLoggingConfig())); |
| 320 | 319 |
| 321 media::cast::AudioSenderConfig audio_config = | 320 media::cast::AudioSenderConfig audio_config = |
| 322 media::cast::GetAudioSenderConfig(); | 321 media::cast::GetAudioSenderConfig(); |
| 323 media::cast::VideoSenderConfig video_config = | 322 media::cast::VideoSenderConfig video_config = |
| 324 media::cast::GetVideoSenderConfig(); | 323 media::cast::GetVideoSenderConfig(); |
| 325 | 324 |
| 326 scoped_ptr<media::cast::transport::Transport> transport( | 325 scoped_ptr<media::cast::transport::Transport> transport( |
| 327 new media::cast::transport::Transport( | 326 new media::cast::transport::Transport( |
| 328 io_message_loop.message_loop_proxy())); | 327 io_message_loop.message_loop_proxy())); |
| 329 scoped_ptr<media::cast::CastSender> cast_sender( | 328 scoped_ptr<media::cast::CastSender> cast_sender( |
| 330 media::cast::CastSender::CreateCastSender(cast_environment, | 329 media::cast::CastSender::CreateCastSender(cast_environment, |
| 331 audio_config, | 330 audio_config, |
| 332 video_config, | 331 video_config, |
| 333 NULL, // VideoEncoderController. | 332 NULL, // VideoEncoderController. |
| 334 transport->packet_sender())); | 333 transport->packet_sender())); |
| 335 | 334 |
| 336 media::cast::transport::PacketReceiver* packet_receiver = | 335 media::cast::PacketReceiver* packet_receiver = cast_sender->packet_receiver(); |
| 337 cast_sender->packet_receiver(); | |
| 338 | 336 |
| 339 int send_to_port, receive_port; | 337 int send_to_port, receive_port; |
| 340 media::cast::GetPorts(&send_to_port, &receive_port); | 338 media::cast::GetPorts(&send_to_port, &receive_port); |
| 341 std::string ip_address = media::cast::GetIpAddress("Enter destination IP."); | 339 std::string ip_address = media::cast::GetIpAddress("Enter destination IP."); |
| 342 std::string local_ip_address = media::cast::GetIpAddress("Enter local IP."); | 340 std::string local_ip_address = media::cast::GetIpAddress("Enter local IP."); |
| 343 | 341 |
| 344 transport->SetLocalReceiver(packet_receiver, ip_address, local_ip_address, | 342 transport->SetLocalReceiver(packet_receiver, ip_address, local_ip_address, |
| 345 receive_port); | 343 receive_port); |
| 346 transport->SetSendDestination(ip_address, send_to_port); | 344 transport->SetSendDestination(ip_address, send_to_port); |
| 347 | 345 |
| 348 media::cast::FrameInput* frame_input = cast_sender->frame_input(); | 346 media::cast::FrameInput* frame_input = cast_sender->frame_input(); |
| 349 scoped_ptr<media::cast::SendProcess> send_process(new | 347 scoped_ptr<media::cast::SendProcess> send_process(new |
| 350 media::cast::SendProcess(test_thread.message_loop_proxy(), | 348 media::cast::SendProcess(test_thread.message_loop_proxy(), |
| 351 cast_environment->Clock(), | 349 cast_environment->Clock(), |
| 352 video_config, | 350 video_config, |
| 353 frame_input)); | 351 frame_input)); |
| 354 | 352 |
| 355 send_process->SendFrame(); | 353 send_process->SendFrame(); |
| 356 io_message_loop.Run(); | 354 io_message_loop.Run(); |
| 357 transport->StopReceiving(); | 355 transport->StopReceiving(); |
| 358 return 0; | 356 return 0; |
| 359 } | 357 } |
| OLD | NEW |