]> git.sesse.net Git - nageru/blobdiff - x264_encoder.cpp
Rename “name” to “display name”.
[nageru] / x264_encoder.cpp
index 756d673bfb40b2adc6588992e3b78c2fd3b14d3f..9874519362aadf8a3059eb77f2e797243d230459 100644 (file)
@@ -183,7 +183,10 @@ void X264Encoder::init_x264()
 
 void X264Encoder::encoder_thread_func()
 {
-       nice(5);  // Note that x264 further nices some of its threads.
+       if (nice(5) == -1) {  // Note that x264 further nices some of its threads.
+               perror("nice()");
+               // No exit; it's not fatal.
+       }
        init_x264();
 
        bool frames_left;
@@ -246,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, &param);
-               param.rc.i_bitrate = new_rate;
-               update_vbv_settings(&param);
-               x264_encoder_reconfig(x264, &param);
-               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, &param);
+                       param.rc.i_bitrate = new_rate;
+                       update_vbv_settings(&param);
+                       x264_encoder_reconfig(x264, &param);
+               }
        }
 
        if (speed_control) {