| Index: webrtc/modules/video_coding/codecs/vp8/vp8_impl.cc
|
| diff --git a/webrtc/modules/video_coding/codecs/vp8/vp8_impl.cc b/webrtc/modules/video_coding/codecs/vp8/vp8_impl.cc
|
| index 148140eccffc8e63d8de3c145a2c51f9549b4452..9fd5f6587af5009bdf6e6165c23dc32ecdd5aa09 100644
|
| --- a/webrtc/modules/video_coding/codecs/vp8/vp8_impl.cc
|
| +++ b/webrtc/modules/video_coding/codecs/vp8/vp8_impl.cc
|
| @@ -123,8 +123,7 @@ VP8EncoderImpl::VP8EncoderImpl()
|
| token_partitions_(VP8_ONE_TOKENPARTITION),
|
| down_scale_requested_(false),
|
| down_scale_bitrate_(0),
|
| - key_frame_request_(kMaxSimulcastStreams, false),
|
| - quality_scaler_enabled_(false) {
|
| + key_frame_request_(kMaxSimulcastStreams, false) {
|
| uint32_t seed = rtc::Time32();
|
| srand(seed);
|
|
|
| @@ -253,15 +252,9 @@ int VP8EncoderImpl::SetRateAllocation(const BitrateAllocation& bitrate,
|
| return WEBRTC_VIDEO_CODEC_ERROR;
|
| }
|
| }
|
| - quality_scaler_.ReportFramerate(new_framerate);
|
| return WEBRTC_VIDEO_CODEC_OK;
|
| }
|
|
|
| -void VP8EncoderImpl::OnDroppedFrame() {
|
| - if (quality_scaler_enabled_)
|
| - quality_scaler_.ReportDroppedFrame();
|
| -}
|
| -
|
| const char* VP8EncoderImpl::ImplementationName() const {
|
| return "libvpx";
|
| }
|
| @@ -530,15 +523,6 @@ int VP8EncoderImpl::InitEncode(const VideoCodec* inst,
|
| }
|
|
|
| rps_.Init();
|
| - quality_scaler_.Init(codec_.codecType, codec_.startBitrate, codec_.width,
|
| - codec_.height, codec_.maxFramerate);
|
| -
|
| - // Only apply scaling to improve for single-layer streams. The scaling metrics
|
| - // use frame drops as a signal and is only applicable when we drop frames.
|
| - quality_scaler_enabled_ = encoders_.size() == 1 &&
|
| - configurations_[0].rc_dropframe_thresh > 0 &&
|
| - codec_.VP8()->automaticResizeOn;
|
| -
|
| return InitAndSetControlSettings();
|
| }
|
|
|
| @@ -671,6 +655,9 @@ uint32_t VP8EncoderImpl::MaxIntraTarget(uint32_t optimalBuffersize) {
|
| int VP8EncoderImpl::Encode(const VideoFrame& frame,
|
| const CodecSpecificInfo* codec_specific_info,
|
| const std::vector<FrameType>* frame_types) {
|
| + RTC_DCHECK_EQ(frame.width(), codec_.width);
|
| + RTC_DCHECK_EQ(frame.height(), codec_.height);
|
| +
|
| if (!inited_)
|
| return WEBRTC_VIDEO_CODEC_UNINITIALIZED;
|
| if (frame.IsZeroSize())
|
| @@ -679,20 +666,6 @@ int VP8EncoderImpl::Encode(const VideoFrame& frame,
|
| return WEBRTC_VIDEO_CODEC_UNINITIALIZED;
|
|
|
| rtc::scoped_refptr<VideoFrameBuffer> input_image = frame.video_frame_buffer();
|
| -
|
| - if (quality_scaler_enabled_) {
|
| - quality_scaler_.OnEncodeFrame(frame.width(), frame.height());
|
| - input_image = quality_scaler_.GetScaledBuffer(input_image);
|
| -
|
| - if (input_image->width() != codec_.width ||
|
| - input_image->height() != codec_.height) {
|
| - int ret =
|
| - UpdateCodecFrameSize(input_image->width(), input_image->height());
|
| - if (ret < 0)
|
| - return ret;
|
| - }
|
| - }
|
| -
|
| // Since we are extracting raw pointers from |input_image| to
|
| // |raw_images_[0]|, the resolution of these frames must match. Note that
|
| // |input_image| might be scaled from |frame|. In that case, the resolution of
|
| @@ -989,9 +962,6 @@ int VP8EncoderImpl::GetEncodedPartitions(const VideoFrame& input_image,
|
| codec_.simulcastStream[stream_idx].height;
|
| encoded_images_[encoder_idx]._encodedWidth =
|
| codec_.simulcastStream[stream_idx].width;
|
| - encoded_images_[encoder_idx]
|
| - .adapt_reason_.quality_resolution_downscales =
|
| - quality_scaler_enabled_ ? quality_scaler_.downscale_shift() : -1;
|
| // Report once per frame (lowest stream always sent).
|
| encoded_images_[encoder_idx].adapt_reason_.bw_resolutions_disabled =
|
| (stream_idx == 0) ? bw_resolutions_disabled : -1;
|
| @@ -1006,18 +976,16 @@ int VP8EncoderImpl::GetEncodedPartitions(const VideoFrame& input_image,
|
| }
|
| }
|
| }
|
| - if (encoders_.size() == 1 && send_stream_[0]) {
|
| - if (encoded_images_[0]._length > 0) {
|
| - int qp_128;
|
| - vpx_codec_control(&encoders_[0], VP8E_GET_LAST_QUANTIZER, &qp_128);
|
| - quality_scaler_.ReportQP(qp_128);
|
| - } else {
|
| - quality_scaler_.ReportDroppedFrame();
|
| - }
|
| - }
|
| return result;
|
| }
|
|
|
| +VideoEncoder::ScalingSettings VP8EncoderImpl::GetScalingSettings() const {
|
| + const bool enable_scaling = encoders_.size() == 1 &&
|
| + configurations_[0].rc_dropframe_thresh > 0 &&
|
| + codec_.VP8().automaticResizeOn;
|
| + return VideoEncoder::ScalingSettings(enable_scaling);
|
| +}
|
| +
|
| int VP8EncoderImpl::SetChannelParameters(uint32_t packetLoss, int64_t rtt) {
|
| rps_.SetRtt(rtt);
|
| return WEBRTC_VIDEO_CODEC_OK;
|
|
|