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

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

Issue 306783002: [Cast] Clean-up: Merge AudioReceiverConfig+VideoReceiverConfig-->FrameReceiverConfig. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Removed kFakeSoftwareAudio in AudioCodec enum, per hclam@. Created 6 years, 6 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/end2end_unittest.cc ('k') | media/cast/test/utility/default_config.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 <algorithm> 5 #include <algorithm>
6 #include <climits> 6 #include <climits>
7 #include <cstdarg> 7 #include <cstdarg>
8 #include <cstdio> 8 #include <cstdio>
9 #include <deque> 9 #include <deque>
10 #include <map> 10 #include <map>
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
79 test::InputBuilder input(display_text, DEFAULT_SEND_IP, INT_MIN, INT_MAX); 79 test::InputBuilder input(display_text, DEFAULT_SEND_IP, INT_MIN, INT_MAX);
80 std::string ip_address = input.GetStringInput(); 80 std::string ip_address = input.GetStringInput();
81 // Ensure IP address is either the default value or in correct form. 81 // Ensure IP address is either the default value or in correct form.
82 while (ip_address != DEFAULT_SEND_IP && 82 while (ip_address != DEFAULT_SEND_IP &&
83 std::count(ip_address.begin(), ip_address.end(), '.') != 3) { 83 std::count(ip_address.begin(), ip_address.end(), '.') != 3) {
84 ip_address = input.GetStringInput(); 84 ip_address = input.GetStringInput();
85 } 85 }
86 return ip_address; 86 return ip_address;
87 } 87 }
88 88
89 void GetSsrcs(AudioReceiverConfig* audio_config) { 89 void GetAudioSsrcs(FrameReceiverConfig* audio_config) {
90 test::InputBuilder input_tx( 90 test::InputBuilder input_tx(
91 "Choose audio sender SSRC.", DEFAULT_AUDIO_FEEDBACK_SSRC, 1, INT_MAX); 91 "Choose audio sender SSRC.", DEFAULT_AUDIO_FEEDBACK_SSRC, 1, INT_MAX);
92 audio_config->feedback_ssrc = input_tx.GetIntInput(); 92 audio_config->feedback_ssrc = input_tx.GetIntInput();
93 93
94 test::InputBuilder input_rx( 94 test::InputBuilder input_rx(
95 "Choose audio receiver SSRC.", DEFAULT_AUDIO_INCOMING_SSRC, 1, INT_MAX); 95 "Choose audio receiver SSRC.", DEFAULT_AUDIO_INCOMING_SSRC, 1, INT_MAX);
96 audio_config->incoming_ssrc = input_rx.GetIntInput(); 96 audio_config->incoming_ssrc = input_rx.GetIntInput();
97 } 97 }
98 98
99 void GetSsrcs(VideoReceiverConfig* video_config) { 99 void GetVideoSsrcs(FrameReceiverConfig* video_config) {
100 test::InputBuilder input_tx( 100 test::InputBuilder input_tx(
101 "Choose video sender SSRC.", DEFAULT_VIDEO_FEEDBACK_SSRC, 1, INT_MAX); 101 "Choose video sender SSRC.", DEFAULT_VIDEO_FEEDBACK_SSRC, 1, INT_MAX);
102 video_config->feedback_ssrc = input_tx.GetIntInput(); 102 video_config->feedback_ssrc = input_tx.GetIntInput();
103 103
104 test::InputBuilder input_rx( 104 test::InputBuilder input_rx(
105 "Choose video receiver SSRC.", DEFAULT_VIDEO_INCOMING_SSRC, 1, INT_MAX); 105 "Choose video receiver SSRC.", DEFAULT_VIDEO_INCOMING_SSRC, 1, INT_MAX);
106 video_config->incoming_ssrc = input_rx.GetIntInput(); 106 video_config->incoming_ssrc = input_rx.GetIntInput();
107 } 107 }
108 108
109 #if defined(OS_LINUX) 109 #if defined(OS_LINUX)
110 void GetWindowSize(int* width, int* height) { 110 void GetWindowSize(int* width, int* height) {
111 // Resolution values based on sender settings 111 // Resolution values based on sender settings
112 test::InputBuilder input_w( 112 test::InputBuilder input_w(
113 "Choose window width.", kVideoWindowWidth, 144, 1920); 113 "Choose window width.", kVideoWindowWidth, 144, 1920);
114 *width = input_w.GetIntInput(); 114 *width = input_w.GetIntInput();
115 115
116 test::InputBuilder input_h( 116 test::InputBuilder input_h(
117 "Choose window height.", kVideoWindowHeight, 176, 1080); 117 "Choose window height.", kVideoWindowHeight, 176, 1080);
118 *height = input_h.GetIntInput(); 118 *height = input_h.GetIntInput();
119 } 119 }
120 #endif // OS_LINUX 120 #endif // OS_LINUX
121 121
122 void GetPayloadtype(AudioReceiverConfig* audio_config) { 122 void GetAudioPayloadtype(FrameReceiverConfig* audio_config) {
123 test::InputBuilder input("Choose audio receiver payload type.", 123 test::InputBuilder input("Choose audio receiver payload type.",
124 DEFAULT_AUDIO_PAYLOAD_TYPE, 124 DEFAULT_AUDIO_PAYLOAD_TYPE,
125 96, 125 96,
126 127); 126 127);
127 audio_config->rtp_payload_type = input.GetIntInput(); 127 audio_config->rtp_payload_type = input.GetIntInput();
128 } 128 }
129 129
130 AudioReceiverConfig GetAudioReceiverConfig() { 130 FrameReceiverConfig GetAudioReceiverConfig() {
131 AudioReceiverConfig audio_config = GetDefaultAudioReceiverConfig(); 131 FrameReceiverConfig audio_config = GetDefaultAudioReceiverConfig();
132 GetSsrcs(&audio_config); 132 GetAudioSsrcs(&audio_config);
133 GetPayloadtype(&audio_config); 133 GetAudioPayloadtype(&audio_config);
134 audio_config.rtp_max_delay_ms = 300; 134 audio_config.rtp_max_delay_ms = 300;
135 return audio_config; 135 return audio_config;
136 } 136 }
137 137
138 void GetPayloadtype(VideoReceiverConfig* video_config) { 138 void GetVideoPayloadtype(FrameReceiverConfig* video_config) {
139 test::InputBuilder input("Choose video receiver payload type.", 139 test::InputBuilder input("Choose video receiver payload type.",
140 DEFAULT_VIDEO_PAYLOAD_TYPE, 140 DEFAULT_VIDEO_PAYLOAD_TYPE,
141 96, 141 96,
142 127); 142 127);
143 video_config->rtp_payload_type = input.GetIntInput(); 143 video_config->rtp_payload_type = input.GetIntInput();
144 } 144 }
145 145
146 VideoReceiverConfig GetVideoReceiverConfig() { 146 FrameReceiverConfig GetVideoReceiverConfig() {
147 VideoReceiverConfig video_config = GetDefaultVideoReceiverConfig(); 147 FrameReceiverConfig video_config = GetDefaultVideoReceiverConfig();
148 GetSsrcs(&video_config); 148 GetVideoSsrcs(&video_config);
149 GetPayloadtype(&video_config); 149 GetVideoPayloadtype(&video_config);
150 video_config.rtp_max_delay_ms = 300; 150 video_config.rtp_max_delay_ms = 300;
151 return video_config; 151 return video_config;
152 } 152 }
153 153
154 AudioParameters ToAudioParameters(const AudioReceiverConfig& config) { 154 AudioParameters ToAudioParameters(const FrameReceiverConfig& config) {
155 const int samples_in_10ms = config.frequency / 100; 155 const int samples_in_10ms = config.frequency / 100;
156 return AudioParameters(AudioParameters::AUDIO_PCM_LOW_LATENCY, 156 return AudioParameters(AudioParameters::AUDIO_PCM_LOW_LATENCY,
157 GuessChannelLayout(config.channels), 157 GuessChannelLayout(config.channels),
158 config.frequency, 32, samples_in_10ms); 158 config.frequency, 32, samples_in_10ms);
159 } 159 }
160 160
161 // An InProcessReceiver that renders video frames to a LinuxOutputWindow and 161 // An InProcessReceiver that renders video frames to a LinuxOutputWindow and
162 // audio frames via Chromium's audio stack. 162 // audio frames via Chromium's audio stack.
163 // 163 //
164 // InProcessReceiver pushes audio and video frames to this subclass, and these 164 // InProcessReceiver pushes audio and video frames to this subclass, and these
(...skipping 10 matching lines...) Expand all
175 // 2. It makes no attempt to synchronize the timing of playout of the video 175 // 2. It makes no attempt to synchronize the timing of playout of the video
176 // frames with the audio frames. 176 // frames with the audio frames.
177 // 3. It does nothing to smooth or hide discontinuities in playback due to 177 // 3. It does nothing to smooth or hide discontinuities in playback due to
178 // timing issues or missing frames. 178 // timing issues or missing frames.
179 class NaivePlayer : public InProcessReceiver, 179 class NaivePlayer : public InProcessReceiver,
180 public AudioOutputStream::AudioSourceCallback { 180 public AudioOutputStream::AudioSourceCallback {
181 public: 181 public:
182 NaivePlayer(const scoped_refptr<CastEnvironment>& cast_environment, 182 NaivePlayer(const scoped_refptr<CastEnvironment>& cast_environment,
183 const net::IPEndPoint& local_end_point, 183 const net::IPEndPoint& local_end_point,
184 const net::IPEndPoint& remote_end_point, 184 const net::IPEndPoint& remote_end_point,
185 const AudioReceiverConfig& audio_config, 185 const FrameReceiverConfig& audio_config,
186 const VideoReceiverConfig& video_config, 186 const FrameReceiverConfig& video_config,
187 int window_width, 187 int window_width,
188 int window_height) 188 int window_height)
189 : InProcessReceiver(cast_environment, 189 : InProcessReceiver(cast_environment,
190 local_end_point, 190 local_end_point,
191 remote_end_point, 191 remote_end_point,
192 audio_config, 192 audio_config,
193 video_config), 193 video_config),
194 // Maximum age is the duration of 3 video frames. 3 was chosen 194 // Maximum age is the duration of 3 video frames. 3 was chosen
195 // arbitrarily, but seems to work well. 195 // arbitrarily, but seems to work well.
196 max_frame_age_(base::TimeDelta::FromSeconds(1) * 3 / 196 max_frame_age_(base::TimeDelta::FromSeconds(1) * 3 /
(...skipping 349 matching lines...) Expand 10 before | Expand all | Expand 10 after
546 546
547 scoped_refptr<media::cast::CastEnvironment> cast_environment( 547 scoped_refptr<media::cast::CastEnvironment> cast_environment(
548 new media::cast::StandaloneCastEnvironment); 548 new media::cast::StandaloneCastEnvironment);
549 549
550 // Start up Chromium audio system. 550 // Start up Chromium audio system.
551 media::FakeAudioLogFactory fake_audio_log_factory_; 551 media::FakeAudioLogFactory fake_audio_log_factory_;
552 const scoped_ptr<media::AudioManager> audio_manager( 552 const scoped_ptr<media::AudioManager> audio_manager(
553 media::AudioManager::Create(&fake_audio_log_factory_)); 553 media::AudioManager::Create(&fake_audio_log_factory_));
554 CHECK(media::AudioManager::Get()); 554 CHECK(media::AudioManager::Get());
555 555
556 media::cast::AudioReceiverConfig audio_config = 556 media::cast::FrameReceiverConfig audio_config =
557 media::cast::GetAudioReceiverConfig(); 557 media::cast::GetAudioReceiverConfig();
558 media::cast::VideoReceiverConfig video_config = 558 media::cast::FrameReceiverConfig video_config =
559 media::cast::GetVideoReceiverConfig(); 559 media::cast::GetVideoReceiverConfig();
560 560
561 // Determine local and remote endpoints. 561 // Determine local and remote endpoints.
562 int remote_port, local_port; 562 int remote_port, local_port;
563 media::cast::GetPorts(&remote_port, &local_port); 563 media::cast::GetPorts(&remote_port, &local_port);
564 if (!local_port) { 564 if (!local_port) {
565 LOG(ERROR) << "Invalid local port."; 565 LOG(ERROR) << "Invalid local port.";
566 return 1; 566 return 1;
567 } 567 }
568 std::string remote_ip_address = media::cast::GetIpAddress("Enter remote IP."); 568 std::string remote_ip_address = media::cast::GetIpAddress("Enter remote IP.");
(...skipping 23 matching lines...) Expand all
592 audio_config, 592 audio_config,
593 video_config, 593 video_config,
594 window_width, 594 window_width,
595 window_height); 595 window_height);
596 player.Start(); 596 player.Start();
597 597
598 base::MessageLoop().Run(); // Run forever (i.e., until SIGTERM). 598 base::MessageLoop().Run(); // Run forever (i.e., until SIGTERM).
599 NOTREACHED(); 599 NOTREACHED();
600 return 0; 600 return 0;
601 } 601 }
OLDNEW
« no previous file with comments | « media/cast/test/end2end_unittest.cc ('k') | media/cast/test/utility/default_config.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698