Skip to content

Commit a36bb8d

Browse files
committed
feat: rife tensorrt via vs-mlrt
1 parent 9550ccf commit a36bb8d

22 files changed

Lines changed: 4184 additions & 239 deletions

src/common/blur.cpp

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ tl::expected<void, std::string> Blur::initialise(bool _verbose, bool _using_prev
107107
initialised = true;
108108

109109
std::thread([this] {
110-
initialise_rife_gpus();
110+
initialise_device_lists();
111111
}).detach();
112112

113113
return {};
@@ -198,20 +198,31 @@ void Blur::update(
198198
updates::update_to_tag(tag, progress_callback);
199199
}
200200

201-
void Blur::initialise_rife_gpus() {
202-
rife_gpus = u::get_rife_gpus();
201+
void Blur::initialise_device_lists() {
202+
rife_devices = u::get_devices("rife");
203+
tensorrt_devices = u::get_devices("tensorrt");
203204

204205
std::ranges::copy(
205206
std::ranges::transform_view(
206-
rife_gpus,
207+
rife_devices,
207208
[](const auto& pair) {
208209
return pair.second;
209210
}
210211
),
211-
std::back_inserter(rife_gpu_names)
212+
std::back_inserter(rife_device_names)
212213
);
213214

214-
initialised_rife_gpus = true;
215+
std::ranges::copy(
216+
std::ranges::transform_view(
217+
tensorrt_devices,
218+
[](const auto& pair) {
219+
return pair.second;
220+
}
221+
),
222+
std::back_inserter(tensorrt_device_names)
223+
);
224+
225+
initialised_devices = true;
215226
}
216227

217228
void cleanup_handler(int signal) {

src/common/blur.h

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -41,12 +41,15 @@ class Blur { // todo: switch all the classes which could be namespaces into name
4141
const std::optional<std::function<void(const std::string& text, bool done)>>& progress_callback = {}
4242
);
4343

44-
std::map<int, std::string> rife_gpus;
45-
std::vector<std::string> rife_gpu_names;
46-
bool initialised_rife_gpus = false;
44+
// TODO: this stuff probably shouldn't be here
45+
std::map<int, std::string> rife_devices;
46+
std::vector<std::string> rife_device_names;
4747

48-
void initialise_rife_gpus();
49-
void pick_fastest_rife_gpu(BlurSettings& settings);
48+
std::map<int, std::string> tensorrt_devices;
49+
std::vector<std::string> tensorrt_device_names;
50+
bool initialised_devices = false;
51+
52+
void initialise_device_lists();
5053

5154
void setup_signal_handlers();
5255
};

src/common/config_app.cpp

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ void config_app::create(const std::filesystem::path& filepath, const GlobalAppSe
1010
output << "- pc-specific blur settings" << "\n";
1111
output << "output prefix: " << settings.output_prefix << "\n";
1212
output << "gpu type (nvidia/amd/intel): " << settings.gpu_type << "\n";
13-
output << "rife gpu number: " << settings.rife_gpu_index << "\n";
13+
output << "rife gpu number: " << settings.rife_device_index << "\n";
14+
output << "rife (tensorrt) gpu number: " << settings.tensorrt_device_index << "\n";
1415

1516
output << "\n";
1617
output << "- gui" << "\n";
@@ -51,7 +52,8 @@ GlobalAppSettings config_app::parse(const std::filesystem::path& config_filepath
5152

5253
config_base::extract_config_value(config_map, "output prefix", settings.output_prefix);
5354
config_base::extract_config_value(config_map, "gpu type (nvidia/amd/intel)", settings.gpu_type);
54-
config_base::extract_config_value(config_map, "rife gpu number", settings.rife_gpu_index);
55+
config_base::extract_config_value(config_map, "rife gpu number", settings.rife_device_index);
56+
config_base::extract_config_value(config_map, "rife (tensorrt) gpu number", settings.tensorrt_device_index);
5557

5658
config_base::extract_config_value(config_map, "window width", settings.gui_width);
5759
config_base::extract_config_value(config_map, "window height", settings.gui_height);
@@ -95,7 +97,8 @@ tl::expected<nlohmann::json, std::string> GlobalAppSettings::to_json() const {
9597
nlohmann::json j;
9698

9799
j["gpu_type"] = this->gpu_type;
98-
j["rife_gpu_index"] = this->rife_gpu_index;
100+
j["rife_device_index"] = this->rife_device_index;
101+
j["tensorrt_device_index"] = this->tensorrt_device_index;
99102

100103
return j;
101104
}

src/common/config_app.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ struct GlobalAppSettings {
44
std::string output_prefix;
55

66
std::string gpu_type;
7-
int rife_gpu_index = -1;
7+
int rife_device_index = -1;
8+
int tensorrt_device_index = -1;
89

910
int gui_width = 591;
1011
int gui_height = 381;

src/common/config_blur.cpp

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ std::string config_blur::generate_config_string(const BlurSettings& settings, bo
3737
output << "pre-interpolate: " << (settings.pre_interpolate ? "true" : "false") << "\n";
3838
if (!concise || settings.pre_interpolate) {
3939
output << "pre-interpolated fps: " << settings.pre_interpolated_fps << "\n";
40+
output << "pre-interpolation method: " << settings.pre_interpolation_method << "\n";
4041
}
4142
}
4243

@@ -142,6 +143,7 @@ std::string config_blur::generate_config_string(const BlurSettings& settings, bo
142143
output << "interpolation block size: " << settings.advanced.interpolation_blocksize << "\n";
143144
output << "interpolation mask area: " << settings.advanced.interpolation_mask_area << "\n";
144145
output << "rife model: " << settings.advanced.rife_model << "\n";
146+
output << "rife (tensorrt) model: " << settings.advanced.rife_trt_model << "\n";
145147

146148
if (!concise || settings.advanced.manual_svp) {
147149
output << "\n";
@@ -241,6 +243,7 @@ BlurSettings config_blur::parse_from_map(
241243

242244
config_base::extract_config_value(config_map, "pre-interpolate", settings.pre_interpolate);
243245
config_base::extract_config_value(config_map, "pre-interpolated fps", settings.pre_interpolated_fps);
246+
config_base::extract_config_value(config_map, "pre-interpolation method", settings.pre_interpolation_method);
244247

245248
config_base::extract_config_value(config_map, "deduplicate", settings.deduplicate);
246249
config_base::extract_config_value(config_map, "deduplicate method", settings.deduplicate_method);
@@ -308,14 +311,15 @@ BlurSettings config_blur::parse_from_map(
308311
config_map, "interpolation mask area", settings.advanced.interpolation_mask_area
309312
);
310313
config_base::extract_config_value(config_map, "rife model", settings.advanced.rife_model);
314+
config_base::extract_config_value(config_map, "rife (tensorrt) model", settings.advanced.rife_trt_model);
311315
config_base::extract_config_value(config_map, "manual svp", settings.advanced.manual_svp);
312316
config_base::extract_config_value(config_map, "super string", settings.advanced.super_string);
313317
config_base::extract_config_value(config_map, "vectors string", settings.advanced.vectors_string);
314318
config_base::extract_config_value(config_map, "smooth string", settings.advanced.smooth_string);
315319
}
316320

317321
u::verify_gpu_encoding(settings);
318-
u::set_fastest_rife_gpu(settings);
322+
u::set_fastest_devices(settings);
319323

320324
if (config_filepath) {
321325
// rewrite config with proper structure and default values
@@ -388,6 +392,7 @@ tl::expected<nlohmann::json, std::string> BlurSettings::to_json() const {
388392

389393
j["pre_interpolate"] = this->pre_interpolate;
390394
j["pre_interpolated_fps"] = this->pre_interpolated_fps;
395+
j["pre_interpolation_method"] = this->pre_interpolation_method;
391396

392397
j["deduplicate"] = this->deduplicate;
393398
j["deduplicate_method"] = this->deduplicate_method;
@@ -445,6 +450,8 @@ tl::expected<nlohmann::json, std::string> BlurSettings::to_json() const {
445450

446451
j["rife_model"] = *rife_model_path;
447452

453+
j["rife_trt_model"] = this->advanced.rife_trt_model;
454+
448455
j["manual_svp"] = this->advanced.manual_svp;
449456
j["super_string"] = this->advanced.super_string;
450457
j["vectors_string"] = this->advanced.vectors_string;

src/common/config_blur.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ struct AdvancedSettings {
1919
std::string interpolation_blocksize = "8";
2020
int interpolation_mask_area = 0;
2121
std::string rife_model = "rife-v4.26_ensembleFalse";
22+
std::string rife_trt_model = "4.26";
2223

2324
bool manual_svp = false;
2425
std::string super_string;
@@ -46,6 +47,7 @@ struct BlurSettings {
4647

4748
bool pre_interpolate = false;
4849
std::string pre_interpolated_fps = "360";
50+
std::string pre_interpolation_method = "rife";
4951

5052
bool timescale = false;
5153
float input_timescale = 1.f;

src/common/rendering.cpp

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -261,7 +261,13 @@ tl::expected<rendering::detail::PipelineResult, rendering::RenderError> renderin
261261
});
262262

263263
auto vspipe_process = u::run_command(
264-
blur.vspipe_path, commands.vspipe_video, env, bp::std_out > vspipe_stdout, bp::std_err > vspipe_stderr
264+
blur.vspipe_path,
265+
commands.vspipe_video,
266+
env,
267+
bp::std_out > vspipe_stdout,
268+
bp::std_err > vspipe_stderr,
269+
bp::std_in < bp::null // stdin is an invalid handle otherwise, which breaks
270+
// subprocess.run(stdout=sys.stderr) in rife-trt (FUN!)
265271
);
266272

267273
auto ffmpeg_process = u::run_command(

0 commit comments

Comments
 (0)