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

Side by Side Diff: chrome/renderer/media/cast_rtp_stream.cc

Issue 1484403002: cast: Support for low-latency interactive mode (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years 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
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 "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
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
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
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698