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

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

Issue 562653004: Cast: First stab at implementing adaptive latency (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: comment fixed Created 6 years, 3 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
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 "base/bind.h" 7 #include "base/bind.h"
8 #include "base/debug/trace_event.h" 8 #include "base/debug/trace_event.h"
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/memory/weak_ptr.h" 10 #include "base/memory/weak_ptr.h"
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
153 supported_params.push_back(CastRtpParams(DefaultVp8Payload())); 153 supported_params.push_back(CastRtpParams(DefaultVp8Payload()));
154 return supported_params; 154 return supported_params;
155 } 155 }
156 156
157 bool ToAudioSenderConfig(const CastRtpParams& params, 157 bool ToAudioSenderConfig(const CastRtpParams& params,
158 AudioSenderConfig* config) { 158 AudioSenderConfig* config) {
159 config->ssrc = params.payload.ssrc; 159 config->ssrc = params.payload.ssrc;
160 config->incoming_feedback_ssrc = params.payload.feedback_ssrc; 160 config->incoming_feedback_ssrc = params.payload.feedback_ssrc;
161 if (config->ssrc == config->incoming_feedback_ssrc) 161 if (config->ssrc == config->incoming_feedback_ssrc)
162 return false; 162 return false;
163 config->target_playout_delay = 163 config->min_playout_delay =
164 base::TimeDelta::FromMilliseconds(
165 params.payload.min_latency_ms ?
166 params.payload.min_latency_ms :
167 params.payload.max_latency_ms);
168 config->max_playout_delay =
164 base::TimeDelta::FromMilliseconds(params.payload.max_latency_ms); 169 base::TimeDelta::FromMilliseconds(params.payload.max_latency_ms);
165 if (config->target_playout_delay <= base::TimeDelta()) 170 if (config->min_playout_delay <= base::TimeDelta())
171 return false;
172 if (config->min_playout_delay > config->max_playout_delay)
166 return false; 173 return false;
167 config->rtp_payload_type = params.payload.payload_type; 174 config->rtp_payload_type = params.payload.payload_type;
168 config->use_external_encoder = false; 175 config->use_external_encoder = false;
169 config->frequency = params.payload.clock_rate; 176 config->frequency = params.payload.clock_rate;
170 if (config->frequency < 8000) 177 if (config->frequency < 8000)
171 return false; 178 return false;
172 config->channels = params.payload.channels; 179 config->channels = params.payload.channels;
173 if (config->channels < 1) 180 if (config->channels < 1)
174 return false; 181 return false;
175 config->bitrate = params.payload.max_bitrate * kBitrateMultiplier; 182 config->bitrate = params.payload.max_bitrate * kBitrateMultiplier;
176 if (params.payload.codec_name == kCodecNameOpus) 183 if (params.payload.codec_name == kCodecNameOpus)
177 config->codec = media::cast::CODEC_AUDIO_OPUS; 184 config->codec = media::cast::CODEC_AUDIO_OPUS;
178 else 185 else
179 return false; 186 return false;
180 config->aes_key = params.payload.aes_key; 187 config->aes_key = params.payload.aes_key;
181 config->aes_iv_mask = params.payload.aes_iv_mask; 188 config->aes_iv_mask = params.payload.aes_iv_mask;
182 return true; 189 return true;
183 } 190 }
184 191
185 bool ToVideoSenderConfig(const CastRtpParams& params, 192 bool ToVideoSenderConfig(const CastRtpParams& params,
186 VideoSenderConfig* config) { 193 VideoSenderConfig* config) {
187 config->ssrc = params.payload.ssrc; 194 config->ssrc = params.payload.ssrc;
188 config->incoming_feedback_ssrc = params.payload.feedback_ssrc; 195 config->incoming_feedback_ssrc = params.payload.feedback_ssrc;
189 if (config->ssrc == config->incoming_feedback_ssrc) 196 if (config->ssrc == config->incoming_feedback_ssrc)
190 return false; 197 return false;
191 config->target_playout_delay = 198 config->min_playout_delay =
199 base::TimeDelta::FromMilliseconds(
200 params.payload.min_latency_ms ?
201 params.payload.min_latency_ms :
202 params.payload.max_latency_ms);
203 config->max_playout_delay =
192 base::TimeDelta::FromMilliseconds(params.payload.max_latency_ms); 204 base::TimeDelta::FromMilliseconds(params.payload.max_latency_ms);
193 if (config->target_playout_delay <= base::TimeDelta()) 205 if (config->min_playout_delay <= base::TimeDelta())
206 return false;
207 if (config->min_playout_delay > config->max_playout_delay)
194 return false; 208 return false;
195 config->rtp_payload_type = params.payload.payload_type; 209 config->rtp_payload_type = params.payload.payload_type;
196 config->width = params.payload.width; 210 config->width = params.payload.width;
197 config->height = params.payload.height; 211 config->height = params.payload.height;
198 if (config->width < 2 || config->height < 2) 212 if (config->width < 2 || config->height < 2)
199 return false; 213 return false;
200 config->min_bitrate = config->start_bitrate = 214 config->min_bitrate = config->start_bitrate =
201 params.payload.min_bitrate * kBitrateMultiplier; 215 params.payload.min_bitrate * kBitrateMultiplier;
202 config->max_bitrate = params.payload.max_bitrate * kBitrateMultiplier; 216 config->max_bitrate = params.payload.max_bitrate * kBitrateMultiplier;
203 if (config->min_bitrate > config->max_bitrate) 217 if (config->min_bitrate > config->max_bitrate)
(...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after
457 CastRtpParams::CastRtpParams(const CastRtpPayloadParams& payload_params) 471 CastRtpParams::CastRtpParams(const CastRtpPayloadParams& payload_params)
458 : payload(payload_params) {} 472 : payload(payload_params) {}
459 473
460 CastCodecSpecificParams::CastCodecSpecificParams() {} 474 CastCodecSpecificParams::CastCodecSpecificParams() {}
461 475
462 CastCodecSpecificParams::~CastCodecSpecificParams() {} 476 CastCodecSpecificParams::~CastCodecSpecificParams() {}
463 477
464 CastRtpPayloadParams::CastRtpPayloadParams() 478 CastRtpPayloadParams::CastRtpPayloadParams()
465 : payload_type(0), 479 : payload_type(0),
466 max_latency_ms(0), 480 max_latency_ms(0),
481 min_latency_ms(0),
467 ssrc(0), 482 ssrc(0),
468 feedback_ssrc(0), 483 feedback_ssrc(0),
469 clock_rate(0), 484 clock_rate(0),
470 max_bitrate(0), 485 max_bitrate(0),
471 min_bitrate(0), 486 min_bitrate(0),
472 channels(0), 487 channels(0),
473 max_frame_rate(0.0), 488 max_frame_rate(0.0),
474 width(0), 489 width(0),
475 height(0) {} 490 height(0) {}
476 491
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
581 void CastRtpStream::DidEncounterError(const std::string& message) { 596 void CastRtpStream::DidEncounterError(const std::string& message) {
582 VLOG(1) << "CastRtpStream::DidEncounterError(" << message << ") = " 597 VLOG(1) << "CastRtpStream::DidEncounterError(" << message << ") = "
583 << (IsAudio() ? "audio" : "video"); 598 << (IsAudio() ? "audio" : "video");
584 // Save the WeakPtr first because the error callback might delete this object. 599 // Save the WeakPtr first because the error callback might delete this object.
585 base::WeakPtr<CastRtpStream> ptr = weak_factory_.GetWeakPtr(); 600 base::WeakPtr<CastRtpStream> ptr = weak_factory_.GetWeakPtr();
586 error_callback_.Run(message); 601 error_callback_.Run(message);
587 content::RenderThread::Get()->GetMessageLoop()->PostTask( 602 content::RenderThread::Get()->GetMessageLoop()->PostTask(
588 FROM_HERE, 603 FROM_HERE,
589 base::Bind(&CastRtpStream::Stop, ptr)); 604 base::Bind(&CastRtpStream::Stop, ptr));
590 } 605 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698