feat: improved file not found messages

Signed-off-by: k4yt3x <i@k4yt3x.com>
This commit is contained in:
k4yt3x
2024-11-02 00:00:00 +00:00
parent 27c76189d9
commit 9c491d4277
5 changed files with 35 additions and 36 deletions

View File

@@ -2,6 +2,7 @@
#include <cstdint>
#include <cstdio>
#include <filesystem>
#include <string>
#include <spdlog/spdlog.h>
@@ -13,17 +14,18 @@ RealesrganFilter::RealesrganFilter(
int gpuid,
bool tta_mode,
int scaling_factor,
const std::filesystem::path model_path,
const std::filesystem::path custom_model_param_path,
const std::filesystem::path custom_model_bin_path
#ifdef _WIN32
const std::wstring model_name
#else
const std::string model_name
#endif
)
: realesrgan(nullptr),
gpuid(gpuid),
tta_mode(tta_mode),
scaling_factor(scaling_factor),
model_path(std::move(model_path)),
custom_model_param_path(std::move(custom_model_param_path)),
custom_model_bin_path(std::move(custom_model_bin_path)) {}
model_name(std::move(model_name)) {
}
RealesrganFilter::~RealesrganFilter() {
if (realesrgan) {
@@ -37,22 +39,17 @@ int RealesrganFilter::init(AVCodecContext *dec_ctx, AVCodecContext *enc_ctx, AVB
std::filesystem::path model_param_path;
std::filesystem::path model_bin_path;
if (!model_path.empty()) {
// Find the model paths by model name if provided
// TODO: ensure this works with wide strings on Windows
model_param_path = std::filesystem::path("models") / "realesrgan" /
(model_path.string() + "-x" + std::to_string(scaling_factor) + ".param");
model_bin_path = std::filesystem::path("models") / "realesrgan" /
(model_path.string() + "-x" + std::to_string(scaling_factor) + ".bin");
} else if (!custom_model_param_path.empty() && !custom_model_bin_path.empty()) {
// Use the custom model paths if provided
model_param_path = custom_model_param_path;
model_bin_path = custom_model_bin_path;
} else {
// Neither model name nor custom model paths provided
spdlog::error("Model or model paths must be provided for RealESRGAN filter");
return -1;
}
#ifdef _WIN32
std::wstring param_file_name = model_name + L"-x" + std::to_wstring(scaling_factor) + L".param";
std::wstring bin_file_name = model_name + L"-x" + std::to_wstring(scaling_factor) + L".bin";
#else
std::string param_file_name = model_name + "-x" + std::to_string(scaling_factor) + ".param";
std::string bin_file_name = model_name + "-x" + std::to_string(scaling_factor) + ".bin";
#endif
// Find the model paths by model name if provided
model_param_path = std::filesystem::path("models") / "realesrgan" / param_file_name;
model_bin_path = std::filesystem::path("models") / "realesrgan" / bin_file_name;
// Get the full paths using a function that possibly modifies or validates the path
std::filesystem::path model_param_full_path = find_resource_file(model_param_path);
@@ -60,11 +57,11 @@ int RealesrganFilter::init(AVCodecContext *dec_ctx, AVCodecContext *enc_ctx, AVB
// Check if the model files exist
if (!std::filesystem::exists(model_param_full_path)) {
spdlog::error("RealESRGAN model param file not found: {}", model_param_full_path.string());
spdlog::error("RealESRGAN model param file not found: {}", model_param_path.string());
return -1;
}
if (!std::filesystem::exists(model_bin_full_path)) {
spdlog::error("RealESRGAN model bin file not found: {}", model_bin_full_path.string());
spdlog::error("RealESRGAN model bin file not found: {}", model_bin_path.string());
return -1;
}