X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=x264_encoder.cpp;h=9874519362aadf8a3059eb77f2e797243d230459;hb=a89f0c565d3410cfd9b266dd661a934408a01028;hp=f77549d98c7d749a0a29ae89a213a3f3e903a285;hpb=9d603968d9163e2e821c6630420faa931e2b4c2d;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) {