| 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 "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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 } |
| OLD | NEW |