| Index: media/cast/cast_config.cc
|
| diff --git a/media/cast/cast_config.cc b/media/cast/cast_config.cc
|
| index 0683925e0d45682ad118fe7241492910842c4181..f1a4a6985130c61cb49f81b28ebfabfd7ebe1710 100644
|
| --- a/media/cast/cast_config.cc
|
| +++ b/media/cast/cast_config.cc
|
| @@ -4,43 +4,79 @@
|
|
|
| #include "media/cast/cast_config.h"
|
|
|
| +namespace {
|
| +
|
| +const float kDefaultCongestionControlBackOff = 0.875f;
|
| +
|
| +enum {
|
| + // Minimum and Maximum VP8 quantizer in default configuration.
|
| + kDefaultMaxQp = 63,
|
| + kDefaultMinQp = 4,
|
| +
|
| + kDefaultMaxCpuSaverQp = 25,
|
| +
|
| + // Number of video buffers in default configuration (applies only to certain
|
| + // external codecs).
|
| + kDefaultNumberOfVideoBuffers = 1,
|
| +};
|
| +
|
| +} // namespace
|
| +
|
| namespace media {
|
| namespace cast {
|
|
|
| -VideoCodecParams::VideoCodecParams()
|
| - : max_qp(kDefaultMaxQp),
|
| - min_qp(kDefaultMinQp),
|
| - max_cpu_saver_qp(kDefaultMaxCpuSaverQp),
|
| - max_number_of_video_buffers_used(kDefaultNumberOfVideoBuffers),
|
| - number_of_encode_threads(1) {}
|
| +// TODO(miu): Revisit code factoring of these structs. There are a number of
|
| +// common elements between them all, so it might be reasonable to only have one
|
| +// or two structs; or, at least a common base class.
|
|
|
| -VideoCodecParams::VideoCodecParams(const VideoCodecParams& other) = default;
|
| -
|
| -VideoCodecParams::~VideoCodecParams() {}
|
| +// TODO(miu): Make sure all POD members are initialized by ctors. Policy
|
| +// decision: Reasonable defaults or use invalid placeholder values to expose
|
| +// unset members?
|
|
|
| // TODO(miu): Provide IsValidConfig() functions?
|
|
|
| -FrameSenderConfig::FrameSenderConfig()
|
| - : sender_ssrc(0),
|
| +// TODO(miu): Throughout the code, there is a lot of copy-and-paste of the same
|
| +// calculations based on these config values. So, why don't we add methods to
|
| +// these classes to centralize the logic?
|
| +
|
| +VideoSenderConfig::VideoSenderConfig()
|
| + : ssrc(0),
|
| receiver_ssrc(0),
|
| - min_playout_delay(
|
| - base::TimeDelta::FromMilliseconds(kDefaultRtpMaxDelayMs)),
|
| max_playout_delay(
|
| base::TimeDelta::FromMilliseconds(kDefaultRtpMaxDelayMs)),
|
| - animated_playout_delay(min_playout_delay),
|
| rtp_payload_type(RtpPayloadType::UNKNOWN),
|
| use_external_encoder(false),
|
| - rtp_timebase(0),
|
| + congestion_control_back_off(kDefaultCongestionControlBackOff),
|
| + max_bitrate(kDefaultMaxVideoKbps * 1000),
|
| + min_bitrate(kDefaultMinVideoKbps * 1000),
|
| + start_bitrate(kDefaultMaxVideoKbps * 1000),
|
| + max_qp(kDefaultMaxQp),
|
| + min_qp(kDefaultMinQp),
|
| + max_cpu_saver_qp(kDefaultMaxCpuSaverQp),
|
| + max_frame_rate(kDefaultMaxFrameRate),
|
| + max_number_of_video_buffers_used(kDefaultNumberOfVideoBuffers),
|
| + codec(CODEC_VIDEO_VP8),
|
| + number_of_encode_threads(1) {}
|
| +
|
| +VideoSenderConfig::VideoSenderConfig(const VideoSenderConfig& other) = default;
|
| +
|
| +VideoSenderConfig::~VideoSenderConfig() {}
|
| +
|
| +AudioSenderConfig::AudioSenderConfig()
|
| + : ssrc(0),
|
| + receiver_ssrc(0),
|
| + max_playout_delay(
|
| + base::TimeDelta::FromMilliseconds(kDefaultRtpMaxDelayMs)),
|
| + rtp_payload_type(RtpPayloadType::UNKNOWN),
|
| + use_external_encoder(false),
|
| + frequency(0),
|
| channels(0),
|
| - max_bitrate(0),
|
| - min_bitrate(0),
|
| - start_bitrate(0),
|
| - max_frame_rate(kDefaultMaxFrameRate),
|
| - codec(CODEC_UNKNOWN) {}
|
| + bitrate(kDefaultAudioEncoderBitrate),
|
| + codec(CODEC_AUDIO_OPUS) {}
|
|
|
| -FrameSenderConfig::FrameSenderConfig(const FrameSenderConfig& other) = default;
|
| +AudioSenderConfig::AudioSenderConfig(const AudioSenderConfig& other) = default;
|
|
|
| -FrameSenderConfig::~FrameSenderConfig() {}
|
| +AudioSenderConfig::~AudioSenderConfig() {}
|
|
|
| FrameReceiverConfig::FrameReceiverConfig()
|
| : receiver_ssrc(0),
|
|
|