X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=x264_speed_control.cpp;h=47086829dbf0a239a85a96bf4adeede319fab752;hb=17604ff6206c34326111ef2003073e1f0de28823;hp=f201f80066fab4d9c048af9399d3df668c84fae6;hpb=21bd3592c1a692463abd321047c2c612f91cc2ad;p=nageru diff --git a/x264_speed_control.cpp b/x264_speed_control.cpp index f201f80..4708682 100644 --- a/x264_speed_control.cpp +++ b/x264_speed_control.cpp @@ -1,20 +1,26 @@ #include "x264_speed_control.h" -#include "flags.h" - -#include - +#include +#include +#include +#include #include #include +#include +#include +#include + +#include "flags.h" using namespace std; using namespace std::chrono; X264SpeedControl::X264SpeedControl(x264_t *x264, float f_speed, int i_buffer_size, float f_buffer_init) - : x264(x264), f_speed(f_speed) + : dyn(load_x264_for_bit_depth(global_flags.x264_bit_depth)), + x264(x264), f_speed(f_speed) { x264_param_t param; - x264_encoder_parameters(x264, ¶m); + dyn.x264_encoder_parameters(x264, ¶m); float fps = (float)param.i_fps_num / param.i_fps_den; uspf = 1e6 / fps; @@ -39,6 +45,9 @@ X264SpeedControl::~X264SpeedControl() (float)stat.min_buffer / buffer_size, (float)stat.max_buffer / buffer_size ); // x264_log( x264, X264_LOG_INFO, "speedcontrol: avg cplx=%.5f\n", cplx_num / cplx_den ); + if (dyn.handle) { + dlclose(dyn.handle); + } } typedef struct @@ -298,7 +307,7 @@ void X264SpeedControl::apply_preset(int new_preset) const sc_preset_t *s = &presets[new_preset]; x264_param_t p; - x264_encoder_parameters(x264, &p); + dyn.x264_encoder_parameters(x264, &p); p.i_frame_reference = s->refs; p.i_bframe_adaptive = s->badapt; @@ -313,6 +322,6 @@ void X264SpeedControl::apply_preset(int new_preset) if (override_func) { override_func(&p); } - x264_encoder_reconfig(x264, &p); + dyn.x264_encoder_reconfig(x264, &p); preset = new_preset; }