| Index: chrome/renderer/media/cast_rtp_stream.cc
|
| diff --git a/chrome/renderer/media/cast_rtp_stream.cc b/chrome/renderer/media/cast_rtp_stream.cc
|
| index 441a96c37a1ca71b8ffb3cca3a51768bae52cd63..6d9c68b636ccb5c5daadcc81db60a7b6b251f4bb 100644
|
| --- a/chrome/renderer/media/cast_rtp_stream.cc
|
| +++ b/chrome/renderer/media/cast_rtp_stream.cc
|
| @@ -50,31 +50,34 @@ const int kBufferAudioData = 2;
|
|
|
| CastRtpPayloadParams DefaultOpusPayload() {
|
| CastRtpPayloadParams payload;
|
| - payload.ssrc = 1;
|
| - payload.feedback_ssrc = 2;
|
| payload.payload_type = 127;
|
| payload.max_latency_ms = media::cast::kDefaultRtpMaxDelayMs;
|
| - payload.codec_name = kCodecNameOpus;
|
| - payload.clock_rate = 48000;
|
| - payload.channels = 2;
|
| + payload.ssrc = 1;
|
| + payload.feedback_ssrc = 2;
|
| + payload.clock_rate = media::cast::kDefaultAudioSamplingRate;
|
| // The value is 0 which means VBR.
|
| payload.min_bitrate = payload.max_bitrate =
|
| media::cast::kDefaultAudioEncoderBitrate;
|
| + payload.channels = 2;
|
| + payload.max_frame_rate = 100; // 10 ms audio frames
|
| + payload.codec_name = kCodecNameOpus;
|
| return payload;
|
| }
|
|
|
| CastRtpPayloadParams DefaultVp8Payload() {
|
| CastRtpPayloadParams payload;
|
| - payload.ssrc = 11;
|
| - payload.feedback_ssrc = 12;
|
| payload.payload_type = 96;
|
| payload.max_latency_ms = media::cast::kDefaultRtpMaxDelayMs;
|
| - payload.codec_name = kCodecNameVp8;
|
| - payload.clock_rate = 90000;
|
| + payload.ssrc = 11;
|
| + payload.feedback_ssrc = 12;
|
| + payload.clock_rate = media::cast::kVideoFrequency;
|
| + payload.max_bitrate = 2000;
|
| + payload.min_bitrate = 50;
|
| + payload.channels = 1;
|
| + payload.max_frame_rate = media::cast::kDefaultMaxFrameRate;
|
| payload.width = 1280;
|
| payload.height = 720;
|
| - payload.min_bitrate = 50;
|
| - payload.max_bitrate = 2000;
|
| + payload.codec_name = kCodecNameVp8;
|
| return payload;
|
| }
|
|
|
| @@ -82,16 +85,18 @@ CastRtpPayloadParams DefaultH264Payload() {
|
| CastRtpPayloadParams payload;
|
| // TODO(hshi): set different ssrc/rtpPayloadType values for H264 and VP8
|
| // once b/13696137 is fixed.
|
| - payload.ssrc = 11;
|
| - payload.feedback_ssrc = 12;
|
| payload.payload_type = 96;
|
| payload.max_latency_ms = media::cast::kDefaultRtpMaxDelayMs;
|
| - payload.codec_name = kCodecNameH264;
|
| - payload.clock_rate = 90000;
|
| + payload.ssrc = 11;
|
| + payload.feedback_ssrc = 12;
|
| + payload.clock_rate = media::cast::kVideoFrequency;
|
| + payload.max_bitrate = 2000;
|
| + payload.min_bitrate = 50;
|
| + payload.channels = 1;
|
| + payload.max_frame_rate = media::cast::kDefaultMaxFrameRate;
|
| payload.width = 1280;
|
| payload.height = 720;
|
| - payload.min_bitrate = 50;
|
| - payload.max_bitrate = 2000;
|
| + payload.codec_name = kCodecNameH264;
|
| return payload;
|
| }
|
|
|
| @@ -192,14 +197,16 @@ bool ToVideoSenderConfig(const CastRtpParams& params,
|
| config->height = params.payload.height;
|
| if (config->width < 2 || config->height < 2)
|
| return false;
|
| - // TODO(miu): Should the frame rate be parsed from the |params|?
|
| - config->max_frame_rate = 30;
|
| config->min_bitrate = config->start_bitrate =
|
| params.payload.min_bitrate * kBitrateMultiplier;
|
| config->max_bitrate = params.payload.max_bitrate * kBitrateMultiplier;
|
| if (config->min_bitrate > config->max_bitrate)
|
| return false;
|
| config->start_bitrate = config->min_bitrate;
|
| + config->max_frame_rate = static_cast<int>(
|
| + std::max(1.0, params.payload.max_frame_rate) + 0.5);
|
| + if (config->max_frame_rate > 120)
|
| + return false;
|
| if (params.payload.codec_name == kCodecNameVp8) {
|
| config->use_external_encoder = IsHardwareVP8EncodingSupported();
|
| config->codec = media::cast::CODEC_VIDEO_VP8;
|
| @@ -463,6 +470,7 @@ CastRtpPayloadParams::CastRtpPayloadParams()
|
| max_bitrate(0),
|
| min_bitrate(0),
|
| channels(0),
|
| + max_frame_rate(0.0),
|
| width(0),
|
| height(0) {}
|
|
|
|
|