diff --git a/modules/video_coding/codecs/av1/libaom_av1_encoder.cc b/modules/video_coding/codecs/av1/libaom_av1_encoder.cc index 93eeddd8b2..0fbba831fe 100644 --- a/modules/video_coding/codecs/av1/libaom_av1_encoder.cc +++ b/modules/video_coding/codecs/av1/libaom_av1_encoder.cc @@ -131,6 +131,7 @@ class LibaomAv1Encoder final : public VideoEncoder { aom_codec_ctx_t ctx_; aom_codec_enc_cfg_t cfg_; EncodedImageCallback* encoded_image_callback_; + double framerate_fps_; // Current target frame rate. int64_t timestamp_; const LibaomAv1EncoderInfoSettings encoder_info_override_; int max_consec_frame_drop_; @@ -179,6 +180,7 @@ LibaomAv1Encoder::LibaomAv1Encoder(const Environment& env, settings_(std::move(settings)), frame_for_encode_(nullptr), encoded_image_callback_(nullptr), + framerate_fps_(0), timestamp_(0), encoder_info_override_(env.field_trials()), max_consec_frame_drop_(GetMaxConsecutiveFrameDrop(env.field_trials())) {} @@ -658,8 +660,7 @@ int32_t LibaomAv1Encoder::Encode( return WEBRTC_VIDEO_CODEC_ENCODER_FAILURE; } - const uint32_t duration = - kRtpTicksPerSecond / static_cast(encoder_settings_.maxFramerate); + const uint32_t duration = kRtpTicksPerSecond / framerate_fps_; timestamp_ += duration; const size_t num_spatial_layers = @@ -836,11 +837,9 @@ void LibaomAv1Encoder::SetRates(const RateControlParameters& parameters) { SetEncoderControlParameters(AV1E_SET_SVC_PARAMS, &*svc_params_); } - rates_configured_ = true; + framerate_fps_ = parameters.framerate_fps; - // Set frame rate to closest integer value. - encoder_settings_.maxFramerate = - static_cast(parameters.framerate_fps + 0.5); + rates_configured_ = true; } VideoEncoder::EncoderInfo LibaomAv1Encoder::GetEncoderInfo() const {