| Index: media/cast/sender/vp8_encoder.cc
|
| diff --git a/media/cast/sender/vp8_encoder.cc b/media/cast/sender/vp8_encoder.cc
|
| index a34768fa8530736340c0bd1988a869d99a14ed67..8513b5e3ba48c555a3b9b4e07ee8d2a83c93b72c 100644
|
| --- a/media/cast/sender/vp8_encoder.cc
|
| +++ b/media/cast/sender/vp8_encoder.cc
|
| @@ -63,24 +63,26 @@ bool HasSufficientFeedback(
|
|
|
| } // namespace
|
|
|
| -Vp8Encoder::Vp8Encoder(const VideoSenderConfig& video_config)
|
| +Vp8Encoder::Vp8Encoder(const FrameSenderConfig& video_config)
|
| : cast_config_(video_config),
|
| target_deadline_utilization_(
|
| - video_config.number_of_encode_threads > 2
|
| + video_config.codec_specific_params.number_of_encode_threads > 2
|
| ? kHiTargetDeadlineUtilization
|
| - : (video_config.number_of_encode_threads > 1
|
| + : (video_config.codec_specific_params.number_of_encode_threads > 1
|
| ? kMidTargetDeadlineUtilization
|
| : kLoTargetDeadlineUtilization)),
|
| key_frame_requested_(true),
|
| - bitrate_kbit_(cast_config_.start_bitrate / 1000),
|
| + bitrate_kbit_(cast_config_.codec_specific_params.start_bitrate / 1000),
|
| next_frame_id_(FrameId::first()),
|
| has_seen_zero_length_encoded_frame_(false),
|
| encoding_speed_acc_(
|
| base::TimeDelta::FromMicroseconds(kEncodingSpeedAccHalfLife)),
|
| encoding_speed_(kHighestEncodingSpeed) {
|
| config_.g_timebase.den = 0; // Not initialized.
|
| - DCHECK_LE(cast_config_.min_qp, cast_config_.max_cpu_saver_qp);
|
| - DCHECK_LE(cast_config_.max_cpu_saver_qp, cast_config_.max_qp);
|
| + DCHECK_LE(cast_config_.codec_specific_params.min_qp,
|
| + cast_config_.codec_specific_params.max_cpu_saver_qp);
|
| + DCHECK_LE(cast_config_.codec_specific_params.max_cpu_saver_qp,
|
| + cast_config_.codec_specific_params.max_qp);
|
|
|
| thread_checker_.DetachFromThread();
|
| }
|
| @@ -110,7 +112,7 @@ void Vp8Encoder::ConfigureForNewFrameSize(const gfx::Size& frame_size) {
|
| << frame_size.ToString();
|
| config_.g_w = frame_size.width();
|
| config_.g_h = frame_size.height();
|
| - config_.rc_min_quantizer = cast_config_.min_qp;
|
| + config_.rc_min_quantizer = cast_config_.codec_specific_params.min_qp;
|
| if (vpx_codec_enc_config_set(&encoder_, &config_) == VPX_CODEC_OK)
|
| return;
|
| DVLOG(1) << "libvpx rejected the attempt to use a smaller frame size in "
|
| @@ -130,7 +132,8 @@ void Vp8Encoder::ConfigureForNewFrameSize(const gfx::Size& frame_size) {
|
| CHECK_EQ(vpx_codec_enc_config_default(vpx_codec_vp8_cx(), &config_, 0),
|
| VPX_CODEC_OK);
|
|
|
| - config_.g_threads = cast_config_.number_of_encode_threads;
|
| + config_.g_threads =
|
| + cast_config_.codec_specific_params.number_of_encode_threads;
|
| config_.g_w = frame_size.width();
|
| config_.g_h = frame_size.height();
|
| // Set the timebase to match that of base::TimeDelta.
|
| @@ -147,8 +150,8 @@ void Vp8Encoder::ConfigureForNewFrameSize(const gfx::Size& frame_size) {
|
| config_.rc_resize_allowed = 0; // TODO(miu): Why not? Investigate this.
|
| config_.rc_end_usage = VPX_CBR;
|
| config_.rc_target_bitrate = bitrate_kbit_;
|
| - config_.rc_min_quantizer = cast_config_.min_qp;
|
| - config_.rc_max_quantizer = cast_config_.max_qp;
|
| + config_.rc_min_quantizer = cast_config_.codec_specific_params.min_qp;
|
| + config_.rc_max_quantizer = cast_config_.codec_specific_params.max_qp;
|
| // TODO(miu): Revisit these now that the encoder is being successfully
|
| // micro-managed.
|
| config_.rc_undershoot_pct = 100;
|
| @@ -351,7 +354,7 @@ void Vp8Encoder::Encode(const scoped_refptr<media::VideoFrame>& video_frame,
|
| double actual_encoding_speed =
|
| encoding_speed_ +
|
| kEquivalentEncodingSpeedStepPerQpStep *
|
| - std::max(0, quantizer - cast_config_.min_qp);
|
| + std::max(0, quantizer - cast_config_.codec_specific_params.min_qp);
|
| double adjusted_encoding_speed = actual_encoding_speed *
|
| encoded_frame->deadline_utilization /
|
| target_deadline_utilization_;
|
| @@ -370,12 +373,13 @@ void Vp8Encoder::Encode(const scoped_refptr<media::VideoFrame>& video_frame,
|
| next_encoding_speed = kHighestEncodingSpeed;
|
| next_min_qp =
|
| static_cast<int>(remainder / kEquivalentEncodingSpeedStepPerQpStep +
|
| - cast_config_.min_qp + 0.5);
|
| - next_min_qp = std::min(next_min_qp, cast_config_.max_cpu_saver_qp);
|
| + cast_config_.codec_specific_params.min_qp + 0.5);
|
| + next_min_qp = std::min(
|
| + next_min_qp, cast_config_.codec_specific_params.max_cpu_saver_qp);
|
| } else {
|
| next_encoding_speed =
|
| std::max<double>(kLowestEncodingSpeed, next_encoding_speed) + 0.5;
|
| - next_min_qp = cast_config_.min_qp;
|
| + next_min_qp = cast_config_.codec_specific_params.min_qp;
|
| }
|
| if (encoding_speed_ != static_cast<int>(next_encoding_speed)) {
|
| encoding_speed_ = static_cast<int>(next_encoding_speed);
|
|
|