X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=x264_encoder.cpp;h=9874519362aadf8a3059eb77f2e797243d230459;hb=2da661c06c945b2fb3521bbabcc7e81d63dabdd7;hp=f77549d98c7d749a0a29ae89a213a3f3e903a285;hpb=b6cba2f3a010733f8f7f67c9d43ce38278965356;p=nageru diff --git a/x264_encoder.cpp b/x264_encoder.cpp index f77549d..9874519 100644 --- a/x264_encoder.cpp +++ b/x264_encoder.cpp @@ -249,12 +249,18 @@ void X264Encoder::encode_frame(X264Encoder::QueuedFrame qf) // See if we have a new bitrate to change to. unsigned new_rate = new_bitrate_kbit.exchange(0); // Read and clear. if (new_rate != 0) { - x264_param_t param; - x264_encoder_parameters(x264, ¶m); - param.rc.i_bitrate = new_rate; - update_vbv_settings(¶m); - x264_encoder_reconfig(x264, ¶m); - printf("changing rate to %u\n", new_rate); + if (speed_control) { + speed_control->set_config_override_function([new_rate](x264_param_t *param) { + param->rc.i_bitrate = new_rate; + update_vbv_settings(param); + }); + } else { + x264_param_t param; + x264_encoder_parameters(x264, ¶m); + param.rc.i_bitrate = new_rate; + update_vbv_settings(¶m); + x264_encoder_reconfig(x264, ¶m); + } } if (speed_control) {