]> git.sesse.net Git - nageru/blobdiff - x264_speed_control.cpp
Move to new bmusb, which moves header files into bmusb/bmusb/.
[nageru] / x264_speed_control.cpp
index 3ed3ece8e5b95ed0a69d8788511d489eb39217eb..c6add3e9403f2e8334f28a19bcb80e57387071fc 100644 (file)
@@ -26,6 +26,8 @@ X264SpeedControl::X264SpeedControl(x264_t *x264, float f_speed, int i_buffer_siz
        cplx_den = .1;
        stat.min_buffer = buffer_size;
        stat.max_buffer = 0;
+       stat.avg_preset = 0.0;
+       stat.den = 0;
 }
 
 X264SpeedControl::~X264SpeedControl()
@@ -176,14 +178,16 @@ void X264SpeedControl::before_frame(float new_buffer_fill, int new_buffer_size,
        timestamp = t;
 
        // update the time predictor
-       int cpu_time = cpu_time_last_frame;
-       cplx_num *= cplx_decay;
-       cplx_den *= cplx_decay;
-       cplx_num += cpu_time / presets[preset].time;
-       ++cplx_den;
-
-       stat.avg_preset += preset;
-       ++stat.den;
+       if (preset >= 0) {
+               int cpu_time = cpu_time_last_frame;
+               cplx_num *= cplx_decay;
+               cplx_den *= cplx_decay;
+               cplx_num += cpu_time / presets[preset].time;
+               ++cplx_den;
+
+               stat.avg_preset += preset;
+               ++stat.den;
+       }
 
        stat.min_buffer = min(buffer_fill, stat.min_buffer);
        stat.max_buffer = max(buffer_fill, stat.max_buffer);