Index: webrtc/modules/video_coding/codecs/h264/h264_encoder_impl.cc |
diff --git a/webrtc/modules/video_coding/codecs/h264/h264_encoder_impl.cc b/webrtc/modules/video_coding/codecs/h264/h264_encoder_impl.cc |
index 5332a3c2e0a53fee653bacfd38f3908a6057a5a9..d7df12209d1897718c456f3b845011cb1f82a417 100644 |
--- a/webrtc/modules/video_coding/codecs/h264/h264_encoder_impl.cc |
+++ b/webrtc/modules/video_coding/codecs/h264/h264_encoder_impl.cc |
@@ -235,9 +235,6 @@ int32_t H264EncoderImpl::InitEncode(const VideoCodec* codec_settings, |
return WEBRTC_VIDEO_CODEC_ERROR; |
} |
// TODO(pbos): Base init params on these values before submitting. |
- quality_scaler_.Init(codec_settings->codecType, codec_settings->startBitrate, |
- codec_settings->width, codec_settings->height, |
- codec_settings->maxFramerate); |
int video_format = EVideoFormatType::videoFormatI420; |
openh264_encoder_->SetOption(ENCODER_OPTION_DATAFORMAT, |
&video_format); |
@@ -279,7 +276,6 @@ int32_t H264EncoderImpl::SetRateAllocation( |
target_bps_ = bitrate_allocation.get_sum_bps(); |
max_frame_rate_ = static_cast<float>(framerate); |
- quality_scaler_.ReportFramerate(framerate); |
SBitrateInfo target_bitrate; |
memset(&target_bitrate, 0, sizeof(SBitrateInfo)); |
@@ -309,20 +305,6 @@ int32_t H264EncoderImpl::Encode(const VideoFrame& input_frame, |
return WEBRTC_VIDEO_CODEC_UNINITIALIZED; |
} |
- quality_scaler_.OnEncodeFrame(input_frame.width(), input_frame.height()); |
- rtc::scoped_refptr<const VideoFrameBuffer> frame_buffer = |
- quality_scaler_.GetScaledBuffer(input_frame.video_frame_buffer()); |
- if (frame_buffer->width() != width_ || frame_buffer->height() != height_) { |
- LOG(LS_INFO) << "Encoder reinitialized from " << width_ << "x" << height_ |
- << " to " << frame_buffer->width() << "x" |
- << frame_buffer->height(); |
- width_ = frame_buffer->width(); |
- height_ = frame_buffer->height(); |
- SEncParamExt encoder_params = CreateEncoderParams(); |
- openh264_encoder_->SetOption(ENCODER_OPTION_SVC_ENCODE_PARAM_EXT, |
- &encoder_params); |
- } |
- |
bool force_key_frame = false; |
if (frame_types != nullptr) { |
// We only support a single stream. |
@@ -340,7 +322,8 @@ int32_t H264EncoderImpl::Encode(const VideoFrame& input_frame, |
// (If every frame is a key frame we get lag/delays.) |
openh264_encoder_->ForceIntraFrame(true); |
} |
- |
+ rtc::scoped_refptr<const VideoFrameBuffer> frame_buffer = |
+ input_frame.video_frame_buffer(); |
// EncodeFrame input. |
SSourcePicture picture; |
memset(&picture, 0, sizeof(SSourcePicture)); |
@@ -384,22 +367,16 @@ int32_t H264EncoderImpl::Encode(const VideoFrame& input_frame, |
// Encoder can skip frames to save bandwidth in which case |
// |encoded_image_._length| == 0. |
if (encoded_image_._length > 0) { |
- // Parse and report QP. |
- h264_bitstream_parser_.ParseBitstream(encoded_image_._buffer, |
- encoded_image_._length); |
- int qp = -1; |
- if (h264_bitstream_parser_.GetLastSliceQp(&qp)) { |
- quality_scaler_.ReportQP(qp); |
- encoded_image_.qp_ = qp; |
- } |
- |
// Deliver encoded image. |
CodecSpecificInfo codec_specific; |
codec_specific.codecType = kVideoCodecH264; |
encoded_image_callback_->OnEncodedImage(encoded_image_, &codec_specific, |
&frag_header); |
- } else { |
- quality_scaler_.ReportDroppedFrame(); |
+ |
+ // Parse and report QP. |
+ h264_bitstream_parser_.ParseBitstream(encoded_image_._buffer, |
+ encoded_image_._length); |
+ h264_bitstream_parser_.GetLastSliceQp(&encoded_image_.qp_); |
} |
return WEBRTC_VIDEO_CODEC_OK; |
} |
@@ -500,8 +477,8 @@ int32_t H264EncoderImpl::SetPeriodicKeyFrames(bool enable) { |
return WEBRTC_VIDEO_CODEC_OK; |
} |
-void H264EncoderImpl::OnDroppedFrame() { |
- quality_scaler_.ReportDroppedFrame(); |
+VideoEncoder::ScalingSettings H264EncoderImpl::GetScalingSettings() const { |
+ return VideoEncoder::ScalingSettings(true); |
} |
} // namespace webrtc |