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 #include "chrome/renderer/media/cast_rtp_stream.h" | 5 #include "chrome/renderer/media/cast_rtp_stream.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/callback_helpers.h" | 10 #include "base/callback_helpers.h" |
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
164 config->ssrc = params.payload.ssrc; | 164 config->ssrc = params.payload.ssrc; |
165 config->receiver_ssrc = params.payload.feedback_ssrc; | 165 config->receiver_ssrc = params.payload.feedback_ssrc; |
166 if (config->ssrc == config->receiver_ssrc) | 166 if (config->ssrc == config->receiver_ssrc) |
167 return false; | 167 return false; |
168 config->min_playout_delay = base::TimeDelta::FromMilliseconds( | 168 config->min_playout_delay = base::TimeDelta::FromMilliseconds( |
169 params.payload.min_latency_ms ? | 169 params.payload.min_latency_ms ? |
170 params.payload.min_latency_ms : | 170 params.payload.min_latency_ms : |
171 params.payload.max_latency_ms); | 171 params.payload.max_latency_ms); |
172 config->max_playout_delay = | 172 config->max_playout_delay = |
173 base::TimeDelta::FromMilliseconds(params.payload.max_latency_ms); | 173 base::TimeDelta::FromMilliseconds(params.payload.max_latency_ms); |
| 174 config->animated_playout_delay = |
| 175 base::TimeDelta::FromMilliseconds(params.payload.animated_latency_ms); |
174 if (config->min_playout_delay <= base::TimeDelta()) | 176 if (config->min_playout_delay <= base::TimeDelta()) |
175 return false; | 177 return false; |
176 if (config->min_playout_delay > config->max_playout_delay) | 178 if (config->min_playout_delay > config->max_playout_delay) |
177 return false; | 179 return false; |
| 180 if (config->animated_playout_delay < config->min_playout_delay || |
| 181 config->animated_playout_delay > config->max_playout_delay) |
| 182 return false; |
178 config->rtp_payload_type = params.payload.payload_type; | 183 config->rtp_payload_type = params.payload.payload_type; |
179 config->use_external_encoder = false; | 184 config->use_external_encoder = false; |
180 config->frequency = params.payload.clock_rate; | 185 config->frequency = params.payload.clock_rate; |
181 // Sampling rate must be one of the Opus-supported values. | 186 // Sampling rate must be one of the Opus-supported values. |
182 switch (config->frequency) { | 187 switch (config->frequency) { |
183 case 48000: | 188 case 48000: |
184 case 24000: | 189 case 24000: |
185 case 16000: | 190 case 16000: |
186 case 12000: | 191 case 12000: |
187 case 8000: | 192 case 8000: |
(...skipping 19 matching lines...) Expand all Loading... |
207 config->ssrc = params.payload.ssrc; | 212 config->ssrc = params.payload.ssrc; |
208 config->receiver_ssrc = params.payload.feedback_ssrc; | 213 config->receiver_ssrc = params.payload.feedback_ssrc; |
209 if (config->ssrc == config->receiver_ssrc) | 214 if (config->ssrc == config->receiver_ssrc) |
210 return false; | 215 return false; |
211 config->min_playout_delay = base::TimeDelta::FromMilliseconds( | 216 config->min_playout_delay = base::TimeDelta::FromMilliseconds( |
212 params.payload.min_latency_ms ? | 217 params.payload.min_latency_ms ? |
213 params.payload.min_latency_ms : | 218 params.payload.min_latency_ms : |
214 params.payload.max_latency_ms); | 219 params.payload.max_latency_ms); |
215 config->max_playout_delay = | 220 config->max_playout_delay = |
216 base::TimeDelta::FromMilliseconds(params.payload.max_latency_ms); | 221 base::TimeDelta::FromMilliseconds(params.payload.max_latency_ms); |
| 222 config->animated_playout_delay = |
| 223 base::TimeDelta::FromMilliseconds(params.payload.animated_latency_ms); |
217 if (config->min_playout_delay <= base::TimeDelta()) | 224 if (config->min_playout_delay <= base::TimeDelta()) |
218 return false; | 225 return false; |
219 if (config->min_playout_delay > config->max_playout_delay) | 226 if (config->min_playout_delay > config->max_playout_delay) |
220 return false; | 227 return false; |
| 228 if (config->animated_playout_delay < config->min_playout_delay || |
| 229 config->animated_playout_delay > config->max_playout_delay) |
| 230 return false; |
221 config->rtp_payload_type = params.payload.payload_type; | 231 config->rtp_payload_type = params.payload.payload_type; |
222 config->min_bitrate = config->start_bitrate = | 232 config->min_bitrate = config->start_bitrate = |
223 params.payload.min_bitrate * kBitrateMultiplier; | 233 params.payload.min_bitrate * kBitrateMultiplier; |
224 config->max_bitrate = params.payload.max_bitrate * kBitrateMultiplier; | 234 config->max_bitrate = params.payload.max_bitrate * kBitrateMultiplier; |
225 if (config->min_bitrate > config->max_bitrate) | 235 if (config->min_bitrate > config->max_bitrate) |
226 return false; | 236 return false; |
227 config->start_bitrate = config->min_bitrate; | 237 config->start_bitrate = config->min_bitrate; |
228 config->max_frame_rate = static_cast<int>( | 238 config->max_frame_rate = static_cast<int>( |
229 std::max(1.0, params.payload.max_frame_rate) + 0.5); | 239 std::max(1.0, params.payload.max_frame_rate) + 0.5); |
230 if (config->max_frame_rate > media::limits::kMaxFramesPerSecond) | 240 if (config->max_frame_rate > media::limits::kMaxFramesPerSecond) |
(...skipping 348 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
579 DCHECK(content::RenderThread::Get()); | 589 DCHECK(content::RenderThread::Get()); |
580 DVLOG(1) << "CastRtpStream::DidEncounterError(" << message << ") = " | 590 DVLOG(1) << "CastRtpStream::DidEncounterError(" << message << ") = " |
581 << (IsAudio() ? "audio" : "video"); | 591 << (IsAudio() ? "audio" : "video"); |
582 // Save the WeakPtr first because the error callback might delete this object. | 592 // Save the WeakPtr first because the error callback might delete this object. |
583 base::WeakPtr<CastRtpStream> ptr = weak_factory_.GetWeakPtr(); | 593 base::WeakPtr<CastRtpStream> ptr = weak_factory_.GetWeakPtr(); |
584 error_callback_.Run(message); | 594 error_callback_.Run(message); |
585 base::ThreadTaskRunnerHandle::Get()->PostTask( | 595 base::ThreadTaskRunnerHandle::Get()->PostTask( |
586 FROM_HERE, | 596 FROM_HERE, |
587 base::Bind(&CastRtpStream::Stop, ptr)); | 597 base::Bind(&CastRtpStream::Stop, ptr)); |
588 } | 598 } |
OLD | NEW |