project: Don't leak exceptions if possible

This commit is contained in:
Michael Fabian 'Xaymar' Dirks 2021-09-07 04:22:46 +02:00
parent 91c9df3097
commit b8f23fa8ab
12 changed files with 306 additions and 37 deletions

View file

@ -31,6 +31,21 @@
#include "gfx/blur/gfx-blur-gaussian.hpp" #include "gfx/blur/gfx-blur-gaussian.hpp"
#include "obs/gs/gs-helper.hpp" #include "obs/gs/gs-helper.hpp"
#include "obs/obs-source-tracker.hpp" #include "obs/obs-source-tracker.hpp"
#include "util/util-logging.hpp"
#ifdef _DEBUG
#define ST_PREFIX "<%s> "
#define D_LOG_ERROR(x, ...) P_LOG_ERROR(ST_PREFIX##x, __FUNCTION_SIG__, __VA_ARGS__)
#define D_LOG_WARNING(x, ...) P_LOG_WARN(ST_PREFIX##x, __FUNCTION_SIG__, __VA_ARGS__)
#define D_LOG_INFO(x, ...) P_LOG_INFO(ST_PREFIX##x, __FUNCTION_SIG__, __VA_ARGS__)
#define D_LOG_DEBUG(x, ...) P_LOG_DEBUG(ST_PREFIX##x, __FUNCTION_SIG__, __VA_ARGS__)
#else
#define ST_PREFIX "<filter::blur> "
#define D_LOG_ERROR(...) P_LOG_ERROR(ST_PREFIX __VA_ARGS__)
#define D_LOG_WARNING(...) P_LOG_WARN(ST_PREFIX __VA_ARGS__)
#define D_LOG_INFO(...) P_LOG_INFO(ST_PREFIX __VA_ARGS__)
#define D_LOG_DEBUG(...) P_LOG_DEBUG(ST_PREFIX __VA_ARGS__)
#endif
// OBS // OBS
#ifdef _MSC_VER #ifdef _MSC_VER
@ -880,18 +895,28 @@ std::string blur_factory::translate_string(const char* format, ...)
#ifdef ENABLE_FRONTEND #ifdef ENABLE_FRONTEND
bool blur_factory::on_manual_open(obs_properties_t* props, obs_property_t* property, void* data) bool blur_factory::on_manual_open(obs_properties_t* props, obs_property_t* property, void* data)
{ try {
streamfx::open_url(HELP_URL); streamfx::open_url(HELP_URL);
return false; return false;
} catch (const std::exception& ex) {
D_LOG_ERROR("Failed to open manual due to error: %s", ex.what());
return false;
} catch (...) {
D_LOG_ERROR("Failed to open manual due to unknown error.", "");
return false;
} }
#endif #endif
std::shared_ptr<blur_factory> _filter_blur_factory_instance = nullptr; std::shared_ptr<blur_factory> _filter_blur_factory_instance = nullptr;
void streamfx::filter::blur::blur_factory::initialize() void streamfx::filter::blur::blur_factory::initialize()
{ try {
if (!_filter_blur_factory_instance) if (!_filter_blur_factory_instance)
_filter_blur_factory_instance = std::make_shared<blur_factory>(); _filter_blur_factory_instance = std::make_shared<blur_factory>();
} catch (const std::exception& ex) {
D_LOG_ERROR("Failed to initialize due to error: %s", ex.what());
} catch (...) {
D_LOG_ERROR("Failed to initialize due to unknown error.", "");
} }
void streamfx::filter::blur::blur_factory::finalize() void streamfx::filter::blur::blur_factory::finalize()

View file

@ -21,6 +21,21 @@
#include "strings.hpp" #include "strings.hpp"
#include <stdexcept> #include <stdexcept>
#include "obs/gs/gs-helper.hpp" #include "obs/gs/gs-helper.hpp"
#include "util/util-logging.hpp"
#ifdef _DEBUG
#define ST_PREFIX "<%s> "
#define D_LOG_ERROR(x, ...) P_LOG_ERROR(ST_PREFIX##x, __FUNCTION_SIG__, __VA_ARGS__)
#define D_LOG_WARNING(x, ...) P_LOG_WARN(ST_PREFIX##x, __FUNCTION_SIG__, __VA_ARGS__)
#define D_LOG_INFO(x, ...) P_LOG_INFO(ST_PREFIX##x, __FUNCTION_SIG__, __VA_ARGS__)
#define D_LOG_DEBUG(x, ...) P_LOG_DEBUG(ST_PREFIX##x, __FUNCTION_SIG__, __VA_ARGS__)
#else
#define ST_PREFIX "<filter::color_grade> "
#define D_LOG_ERROR(...) P_LOG_ERROR(ST_PREFIX __VA_ARGS__)
#define D_LOG_WARNING(...) P_LOG_WARN(ST_PREFIX __VA_ARGS__)
#define D_LOG_INFO(...) P_LOG_INFO(ST_PREFIX __VA_ARGS__)
#define D_LOG_DEBUG(...) P_LOG_DEBUG(ST_PREFIX __VA_ARGS__)
#endif
// OBS // OBS
#ifdef _MSC_VER #ifdef _MSC_VER
@ -110,8 +125,6 @@ static constexpr std::string_view HELP_URL = "https://github.com/Xaymar/obs-Stre
// TODO: Figure out a way to merge _lut_rt, _lut_texture, _rt_source, _rt_grad, _tex_source, _tex_grade, _source_updated and _grade_updated. // TODO: Figure out a way to merge _lut_rt, _lut_texture, _rt_source, _rt_grad, _tex_source, _tex_grade, _source_updated and _grade_updated.
// Seriously this is too much GPU space wasted on unused trash. // Seriously this is too much GPU space wasted on unused trash.
#define ST_PREFIX "<filter::color-grade> "
color_grade_instance::~color_grade_instance() {} color_grade_instance::~color_grade_instance() {}
color_grade_instance::color_grade_instance(obs_data_t* data, obs_source_t* self) color_grade_instance::color_grade_instance(obs_data_t* data, obs_source_t* self)
@ -127,13 +140,13 @@ color_grade_instance::color_grade_instance(obs_data_t* data, obs_source_t* self)
// Load the color grading effect. // Load the color grading effect.
auto path = streamfx::data_file_path("effects/color-grade.effect"); auto path = streamfx::data_file_path("effects/color-grade.effect");
if (!std::filesystem::exists(path)) { if (!std::filesystem::exists(path)) {
DLOG_ERROR(ST_PREFIX "Failed to locate effect file '%s'.", path.u8string().c_str()); D_LOG_ERROR("Failed to locate effect file '%s'.", path.u8string().c_str());
throw std::runtime_error("Failed to load color grade effect."); throw std::runtime_error("Failed to load color grade effect.");
} else { } else {
try { try {
_effect = streamfx::obs::gs::effect::create(path.u8string()); _effect = streamfx::obs::gs::effect::create(path.u8string());
} catch (std::exception const& ex) { } catch (std::exception const& ex) {
DLOG_ERROR(ST_PREFIX "Failed to load effect '%s': %s", path.u8string().c_str(), ex.what()); D_LOG_ERROR("Failed to load effect '%s': %s", path.u8string().c_str(), ex.what());
throw; throw;
} }
} }
@ -144,7 +157,7 @@ color_grade_instance::color_grade_instance(obs_data_t* data, obs_source_t* self)
_lut_consumer = std::make_shared<streamfx::gfx::lut::consumer>(); _lut_consumer = std::make_shared<streamfx::gfx::lut::consumer>();
_lut_initialized = true; _lut_initialized = true;
} catch (std::exception const& ex) { } catch (std::exception const& ex) {
DLOG_WARNING(ST_PREFIX "Failed to initialize LUT rendering, falling back to direct rendering.\n%s", ex.what()); D_LOG_WARNING("Failed to initialize LUT rendering, falling back to direct rendering.\n%s", ex.what());
_lut_initialized = false; _lut_initialized = false;
} }
@ -152,7 +165,7 @@ color_grade_instance::color_grade_instance(obs_data_t* data, obs_source_t* self)
try { try {
allocate_rendertarget(GS_RGBA); allocate_rendertarget(GS_RGBA);
} catch (std::exception const& ex) { } catch (std::exception const& ex) {
DLOG_ERROR(ST_PREFIX "Failed to acquire render target for rendering: %s", ex.what()); D_LOG_ERROR("Failed to acquire render target for rendering: %s", ex.what());
throw; throw;
} }
@ -487,7 +500,7 @@ void color_grade_instance::video_render(gs_effect_t* shader)
_lut_rt.reset(); _lut_rt.reset();
_lut_texture.reset(); _lut_texture.reset();
_lut_enabled = false; _lut_enabled = false;
DLOG_WARNING(ST_PREFIX "Reverting to direct rendering due to error: %s", ex.what()); D_LOG_WARNING("Reverting to direct rendering due to error: %s", ex.what());
} }
} }
if ((!_lut_initialized || !_lut_enabled) && !_cache_fresh) { if ((!_lut_initialized || !_lut_enabled) && !_cache_fresh) {
@ -868,18 +881,28 @@ obs_properties_t* color_grade_factory::get_properties2(color_grade_instance* dat
#ifdef ENABLE_FRONTEND #ifdef ENABLE_FRONTEND
bool color_grade_factory::on_manual_open(obs_properties_t* props, obs_property_t* property, void* data) bool color_grade_factory::on_manual_open(obs_properties_t* props, obs_property_t* property, void* data)
{ try {
streamfx::open_url(HELP_URL); streamfx::open_url(HELP_URL);
return false; return false;
} catch (const std::exception& ex) {
D_LOG_ERROR("Failed to open manual due to error: %s", ex.what());
return false;
} catch (...) {
D_LOG_ERROR("Failed to open manual due to unknown error.", "");
return false;
} }
#endif #endif
std::shared_ptr<color_grade_factory> _color_grade_factory_instance = nullptr; std::shared_ptr<color_grade_factory> _color_grade_factory_instance = nullptr;
void streamfx::filter::color_grade::color_grade_factory::initialize() void streamfx::filter::color_grade::color_grade_factory::initialize()
{ try {
if (!_color_grade_factory_instance) if (!_color_grade_factory_instance)
_color_grade_factory_instance = std::make_shared<color_grade_factory>(); _color_grade_factory_instance = std::make_shared<color_grade_factory>();
} catch (const std::exception& ex) {
D_LOG_ERROR("Failed to initialize due to error: %s", ex.what());
} catch (...) {
D_LOG_ERROR("Failed to initialize due to unknown error.", "");
} }
void streamfx::filter::color_grade::color_grade_factory::finalize() void streamfx::filter::color_grade::color_grade_factory::finalize()

View file

@ -22,6 +22,21 @@
#include <stdexcept> #include <stdexcept>
#include <sys/stat.h> #include <sys/stat.h>
#include "obs/gs/gs-helper.hpp" #include "obs/gs/gs-helper.hpp"
#include "util/util-logging.hpp"
#ifdef _DEBUG
#define ST_PREFIX "<%s> "
#define D_LOG_ERROR(x, ...) P_LOG_ERROR(ST_PREFIX##x, __FUNCTION_SIG__, __VA_ARGS__)
#define D_LOG_WARNING(x, ...) P_LOG_WARN(ST_PREFIX##x, __FUNCTION_SIG__, __VA_ARGS__)
#define D_LOG_INFO(x, ...) P_LOG_INFO(ST_PREFIX##x, __FUNCTION_SIG__, __VA_ARGS__)
#define D_LOG_DEBUG(x, ...) P_LOG_DEBUG(ST_PREFIX##x, __FUNCTION_SIG__, __VA_ARGS__)
#else
#define ST_PREFIX "<filter::displacement> "
#define D_LOG_ERROR(...) P_LOG_ERROR(ST_PREFIX __VA_ARGS__)
#define D_LOG_WARNING(...) P_LOG_WARN(ST_PREFIX __VA_ARGS__)
#define D_LOG_INFO(...) P_LOG_INFO(ST_PREFIX __VA_ARGS__)
#define D_LOG_DEBUG(...) P_LOG_DEBUG(ST_PREFIX __VA_ARGS__)
#endif
#define ST_I18N "Filter.Displacement" #define ST_I18N "Filter.Displacement"
#define ST_I18N_FILE "Filter.Displacement.File" #define ST_I18N_FILE "Filter.Displacement.File"
@ -165,9 +180,13 @@ obs_properties_t* displacement_factory::get_properties2(displacement_instance* d
std::shared_ptr<displacement_factory> _filter_displacement_factory_instance = nullptr; std::shared_ptr<displacement_factory> _filter_displacement_factory_instance = nullptr;
void streamfx::filter::displacement::displacement_factory::initialize() void streamfx::filter::displacement::displacement_factory::initialize()
{ try {
if (!_filter_displacement_factory_instance) if (!_filter_displacement_factory_instance)
_filter_displacement_factory_instance = std::make_shared<displacement_factory>(); _filter_displacement_factory_instance = std::make_shared<displacement_factory>();
} catch (const std::exception& ex) {
D_LOG_ERROR("Failed to initialize due to error: %s", ex.what());
} catch (...) {
D_LOG_ERROR("Failed to initialize due to unknown error.", "");
} }
void streamfx::filter::displacement::displacement_factory::finalize() void streamfx::filter::displacement::displacement_factory::finalize()

View file

@ -23,6 +23,21 @@
#include <stdexcept> #include <stdexcept>
#include <vector> #include <vector>
#include "obs/gs/gs-helper.hpp" #include "obs/gs/gs-helper.hpp"
#include "util/util-logging.hpp"
#ifdef _DEBUG
#define ST_PREFIX "<%s> "
#define D_LOG_ERROR(x, ...) P_LOG_ERROR(ST_PREFIX##x, __FUNCTION_SIG__, __VA_ARGS__)
#define D_LOG_WARNING(x, ...) P_LOG_WARN(ST_PREFIX##x, __FUNCTION_SIG__, __VA_ARGS__)
#define D_LOG_INFO(x, ...) P_LOG_INFO(ST_PREFIX##x, __FUNCTION_SIG__, __VA_ARGS__)
#define D_LOG_DEBUG(x, ...) P_LOG_DEBUG(ST_PREFIX##x, __FUNCTION_SIG__, __VA_ARGS__)
#else
#define ST_PREFIX "<filter::dynamic_mask> "
#define D_LOG_ERROR(...) P_LOG_ERROR(ST_PREFIX __VA_ARGS__)
#define D_LOG_WARNING(...) P_LOG_WARN(ST_PREFIX __VA_ARGS__)
#define D_LOG_INFO(...) P_LOG_INFO(ST_PREFIX __VA_ARGS__)
#define D_LOG_DEBUG(...) P_LOG_DEBUG(ST_PREFIX __VA_ARGS__)
#endif
// Filter to allow dynamic masking // Filter to allow dynamic masking
// Allow any channel to affect any other channel // Allow any channel to affect any other channel
@ -520,18 +535,28 @@ std::string dynamic_mask_factory::translate_string(const char* format, ...)
#ifdef ENABLE_FRONTEND #ifdef ENABLE_FRONTEND
bool dynamic_mask_factory::on_manual_open(obs_properties_t* props, obs_property_t* property, void* data) bool dynamic_mask_factory::on_manual_open(obs_properties_t* props, obs_property_t* property, void* data)
{ try {
streamfx::open_url(HELP_URL); streamfx::open_url(HELP_URL);
return false; return false;
} catch (const std::exception& ex) {
D_LOG_ERROR("Failed to open manual due to error: %s", ex.what());
return false;
} catch (...) {
D_LOG_ERROR("Failed to open manual due to unknown error.", "");
return false;
} }
#endif #endif
std::shared_ptr<dynamic_mask_factory> _filter_dynamic_mask_factory_instance = nullptr; std::shared_ptr<dynamic_mask_factory> _filter_dynamic_mask_factory_instance = nullptr;
void streamfx::filter::dynamic_mask::dynamic_mask_factory::initialize() void streamfx::filter::dynamic_mask::dynamic_mask_factory::initialize()
{ try {
if (!_filter_dynamic_mask_factory_instance) if (!_filter_dynamic_mask_factory_instance)
_filter_dynamic_mask_factory_instance = std::make_shared<dynamic_mask_factory>(); _filter_dynamic_mask_factory_instance = std::make_shared<dynamic_mask_factory>();
} catch (const std::exception& ex) {
D_LOG_ERROR("Failed to initialize due to error: %s", ex.what());
} catch (...) {
D_LOG_ERROR("Failed to initialize due to unknown error.", "");
} }
void streamfx::filter::dynamic_mask::dynamic_mask_factory::finalize() void streamfx::filter::dynamic_mask::dynamic_mask_factory::finalize()

View file

@ -24,6 +24,21 @@
#include "nvidia/cuda/nvidia-cuda-context.hpp" #include "nvidia/cuda/nvidia-cuda-context.hpp"
#include "obs/gs/gs-helper.hpp" #include "obs/gs/gs-helper.hpp"
#include "obs/obs-tools.hpp" #include "obs/obs-tools.hpp"
#include "util/util-logging.hpp"
#ifdef _DEBUG
#define ST_PREFIX "<%s> "
#define D_LOG_ERROR(x, ...) P_LOG_ERROR(ST_PREFIX##x, __FUNCTION_SIG__, __VA_ARGS__)
#define D_LOG_WARNING(x, ...) P_LOG_WARN(ST_PREFIX##x, __FUNCTION_SIG__, __VA_ARGS__)
#define D_LOG_INFO(x, ...) P_LOG_INFO(ST_PREFIX##x, __FUNCTION_SIG__, __VA_ARGS__)
#define D_LOG_DEBUG(x, ...) P_LOG_DEBUG(ST_PREFIX##x, __FUNCTION_SIG__, __VA_ARGS__)
#else
#define ST_PREFIX "<filter::face_tracking> "
#define D_LOG_ERROR(...) P_LOG_ERROR(ST_PREFIX __VA_ARGS__)
#define D_LOG_WARNING(...) P_LOG_WARN(ST_PREFIX __VA_ARGS__)
#define D_LOG_INFO(...) P_LOG_INFO(ST_PREFIX __VA_ARGS__)
#define D_LOG_DEBUG(...) P_LOG_DEBUG(ST_PREFIX __VA_ARGS__)
#endif
#define ST_I18N "Filter.NVIDIA.FaceTracking" #define ST_I18N "Filter.NVIDIA.FaceTracking"
#define ST_I18N_ROI ST_I18N ".ROI" #define ST_I18N_ROI ST_I18N ".ROI"
@ -706,12 +721,13 @@ std::shared_ptr<::streamfx::nvidia::ar::ar> face_tracking_factory::get_ar()
std::shared_ptr<face_tracking_factory> _filter_nvidia_face_tracking_factory_instance = nullptr; std::shared_ptr<face_tracking_factory> _filter_nvidia_face_tracking_factory_instance = nullptr;
void streamfx::filter::nvidia::face_tracking_factory::initialize() void streamfx::filter::nvidia::face_tracking_factory::initialize()
{
try { try {
if (!_filter_nvidia_face_tracking_factory_instance)
_filter_nvidia_face_tracking_factory_instance = std::make_shared<filter::nvidia::face_tracking_factory>(); _filter_nvidia_face_tracking_factory_instance = std::make_shared<filter::nvidia::face_tracking_factory>();
} catch (const std::exception& ex) { } catch (const std::exception& ex) {
DLOG_ERROR("<NVIDIA Face Tracking Filter> %s", ex.what()); D_LOG_ERROR("Failed to initialize due to error: %s", ex.what());
} } catch (...) {
D_LOG_ERROR("Failed to initialize due to unknown error.", "");
} }
void streamfx::filter::nvidia::face_tracking_factory::finalize() void streamfx::filter::nvidia::face_tracking_factory::finalize()

View file

@ -21,8 +21,21 @@
#include "strings.hpp" #include "strings.hpp"
#include <stdexcept> #include <stdexcept>
#include "obs/gs/gs-helper.hpp" #include "obs/gs/gs-helper.hpp"
#include "util/util-logging.hpp"
#define ST_PREFIX "<filter-sdf-effects> " #ifdef _DEBUG
#define ST_PREFIX "<%s> "
#define D_LOG_ERROR(x, ...) P_LOG_ERROR(ST_PREFIX##x, __FUNCTION_SIG__, __VA_ARGS__)
#define D_LOG_WARNING(x, ...) P_LOG_WARN(ST_PREFIX##x, __FUNCTION_SIG__, __VA_ARGS__)
#define D_LOG_INFO(x, ...) P_LOG_INFO(ST_PREFIX##x, __FUNCTION_SIG__, __VA_ARGS__)
#define D_LOG_DEBUG(x, ...) P_LOG_DEBUG(ST_PREFIX##x, __FUNCTION_SIG__, __VA_ARGS__)
#else
#define ST_PREFIX "<filter::sdf_effects> "
#define D_LOG_ERROR(...) P_LOG_ERROR(ST_PREFIX __VA_ARGS__)
#define D_LOG_WARNING(...) P_LOG_WARN(ST_PREFIX __VA_ARGS__)
#define D_LOG_INFO(...) P_LOG_INFO(ST_PREFIX __VA_ARGS__)
#define D_LOG_DEBUG(...) P_LOG_DEBUG(ST_PREFIX __VA_ARGS__)
#endif
// Translation Strings // Translation Strings
#define ST_I18N "Filter.SDFEffects" #define ST_I18N "Filter.SDFEffects"
@ -136,8 +149,8 @@ sdf_effects_instance::sdf_effects_instance(obs_data_t* settings, obs_source_t* s
try { try {
kv.second = streamfx::obs::gs::effect::create(path); kv.second = streamfx::obs::gs::effect::create(path);
} catch (const std::exception& ex) { } catch (const std::exception& ex) {
DLOG_ERROR(ST_PREFIX "Failed to load effect '%s' (located at '%s') with error(s): %s", kv.first, D_LOG_ERROR("Failed to load effect '%s' (located at '%s') with error(s): %s", kv.first, path.c_str(),
path.c_str(), ex.what()); ex.what());
} }
} }
} }
@ -711,18 +724,28 @@ obs_properties_t* sdf_effects_factory::get_properties2(sdf_effects_instance* dat
#ifdef ENABLE_FRONTEND #ifdef ENABLE_FRONTEND
bool sdf_effects_factory::on_manual_open(obs_properties_t* props, obs_property_t* property, void* data) bool sdf_effects_factory::on_manual_open(obs_properties_t* props, obs_property_t* property, void* data)
{ try {
streamfx::open_url(HELP_URL); streamfx::open_url(HELP_URL);
return false; return false;
} catch (const std::exception& ex) {
D_LOG_ERROR("Failed to open manual due to error: %s", ex.what());
return false;
} catch (...) {
D_LOG_ERROR("Failed to open manual due to unknown error.", "");
return false;
} }
#endif #endif
std::shared_ptr<sdf_effects_factory> _filter_sdf_effects_factory_instance = nullptr; std::shared_ptr<sdf_effects_factory> _filter_sdf_effects_factory_instance = nullptr;
void streamfx::filter::sdf_effects::sdf_effects_factory::initialize() void streamfx::filter::sdf_effects::sdf_effects_factory::initialize()
{ try {
if (!_filter_sdf_effects_factory_instance) if (!_filter_sdf_effects_factory_instance)
_filter_sdf_effects_factory_instance = std::make_shared<sdf_effects_factory>(); _filter_sdf_effects_factory_instance = std::make_shared<sdf_effects_factory>();
} catch (const std::exception& ex) {
D_LOG_ERROR("Failed to initialize due to error: %s", ex.what());
} catch (...) {
D_LOG_ERROR("Failed to initialize due to unknown error.", "");
} }
void streamfx::filter::sdf_effects::sdf_effects_factory::finalize() void streamfx::filter::sdf_effects::sdf_effects_factory::finalize()

View file

@ -21,6 +21,21 @@
#include "strings.hpp" #include "strings.hpp"
#include <stdexcept> #include <stdexcept>
#include "obs/gs/gs-helper.hpp" #include "obs/gs/gs-helper.hpp"
#include "util/util-logging.hpp"
#ifdef _DEBUG
#define ST_PREFIX "<%s> "
#define D_LOG_ERROR(x, ...) P_LOG_ERROR(ST_PREFIX##x, __FUNCTION_SIG__, __VA_ARGS__)
#define D_LOG_WARNING(x, ...) P_LOG_WARN(ST_PREFIX##x, __FUNCTION_SIG__, __VA_ARGS__)
#define D_LOG_INFO(x, ...) P_LOG_INFO(ST_PREFIX##x, __FUNCTION_SIG__, __VA_ARGS__)
#define D_LOG_DEBUG(x, ...) P_LOG_DEBUG(ST_PREFIX##x, __FUNCTION_SIG__, __VA_ARGS__)
#else
#define ST_PREFIX "<filter::shader> "
#define D_LOG_ERROR(...) P_LOG_ERROR(ST_PREFIX __VA_ARGS__)
#define D_LOG_WARNING(...) P_LOG_WARN(ST_PREFIX __VA_ARGS__)
#define D_LOG_INFO(...) P_LOG_INFO(ST_PREFIX __VA_ARGS__)
#define D_LOG_DEBUG(...) P_LOG_DEBUG(ST_PREFIX __VA_ARGS__)
#endif
#define ST_I18N "Filter.Shader" #define ST_I18N "Filter.Shader"
@ -192,18 +207,28 @@ obs_properties_t* shader_factory::get_properties2(shader::shader_instance* data)
#ifdef ENABLE_FRONTEND #ifdef ENABLE_FRONTEND
bool shader_factory::on_manual_open(obs_properties_t* props, obs_property_t* property, void* data) bool shader_factory::on_manual_open(obs_properties_t* props, obs_property_t* property, void* data)
{ try {
streamfx::open_url(HELP_URL); streamfx::open_url(HELP_URL);
return false; return false;
} catch (const std::exception& ex) {
D_LOG_ERROR("Failed to open manual due to error: %s", ex.what());
return false;
} catch (...) {
D_LOG_ERROR("Failed to open manual due to unknown error.", "");
return false;
} }
#endif #endif
std::shared_ptr<shader_factory> _filter_shader_factory_instance = nullptr; std::shared_ptr<shader_factory> _filter_shader_factory_instance = nullptr;
void streamfx::filter::shader::shader_factory::initialize() void streamfx::filter::shader::shader_factory::initialize()
{ try {
if (!_filter_shader_factory_instance) if (!_filter_shader_factory_instance)
_filter_shader_factory_instance = std::make_shared<shader_factory>(); _filter_shader_factory_instance = std::make_shared<shader_factory>();
} catch (const std::exception& ex) {
D_LOG_ERROR("Failed to initialize due to error: %s", ex.what());
} catch (...) {
D_LOG_ERROR("Failed to initialize due to unknown error.", "");
} }
void streamfx::filter::shader::shader_factory::finalize() void streamfx::filter::shader::shader_factory::finalize()

View file

@ -22,6 +22,21 @@
#include <algorithm> #include <algorithm>
#include <stdexcept> #include <stdexcept>
#include "obs/gs/gs-helper.hpp" #include "obs/gs/gs-helper.hpp"
#include "util/util-logging.hpp"
#ifdef _DEBUG
#define ST_PREFIX "<%s> "
#define D_LOG_ERROR(x, ...) P_LOG_ERROR(ST_PREFIX##x, __FUNCTION_SIG__, __VA_ARGS__)
#define D_LOG_WARNING(x, ...) P_LOG_WARN(ST_PREFIX##x, __FUNCTION_SIG__, __VA_ARGS__)
#define D_LOG_INFO(x, ...) P_LOG_INFO(ST_PREFIX##x, __FUNCTION_SIG__, __VA_ARGS__)
#define D_LOG_DEBUG(x, ...) P_LOG_DEBUG(ST_PREFIX##x, __FUNCTION_SIG__, __VA_ARGS__)
#else
#define ST_PREFIX "<filter::transform> "
#define D_LOG_ERROR(...) P_LOG_ERROR(ST_PREFIX __VA_ARGS__)
#define D_LOG_WARNING(...) P_LOG_WARN(ST_PREFIX __VA_ARGS__)
#define D_LOG_INFO(...) P_LOG_INFO(ST_PREFIX __VA_ARGS__)
#define D_LOG_DEBUG(...) P_LOG_DEBUG(ST_PREFIX __VA_ARGS__)
#endif
// OBS // OBS
#ifdef _MSC_VER #ifdef _MSC_VER
@ -611,18 +626,28 @@ obs_properties_t* transform_factory::get_properties2(transform_instance* data)
#ifdef ENABLE_FRONTEND #ifdef ENABLE_FRONTEND
bool transform_factory::on_manual_open(obs_properties_t* props, obs_property_t* property, void* data) bool transform_factory::on_manual_open(obs_properties_t* props, obs_property_t* property, void* data)
{ try {
streamfx::open_url(HELP_URL); streamfx::open_url(HELP_URL);
return false; return false;
} catch (const std::exception& ex) {
D_LOG_ERROR("Failed to open manual due to error: %s", ex.what());
return false;
} catch (...) {
D_LOG_ERROR("Failed to open manual due to unknown error.", "");
return false;
} }
#endif #endif
std::shared_ptr<transform_factory> _filter_transform_factory_instance = nullptr; std::shared_ptr<transform_factory> _filter_transform_factory_instance = nullptr;
void transform_factory::initialize() void transform_factory::initialize()
{ try {
if (!_filter_transform_factory_instance) if (!_filter_transform_factory_instance)
_filter_transform_factory_instance = std::make_shared<transform_factory>(); _filter_transform_factory_instance = std::make_shared<transform_factory>();
} catch (const std::exception& ex) {
D_LOG_ERROR("Failed to initialize due to error: %s", ex.what());
} catch (...) {
D_LOG_ERROR("Failed to initialize due to unknown error.", "");
} }
void transform_factory::finalize() void transform_factory::finalize()

View file

@ -572,9 +572,15 @@ obs_properties_t* video_superresolution_factory::get_properties2(video_superreso
#ifdef ENABLE_FRONTEND #ifdef ENABLE_FRONTEND
bool video_superresolution_factory::on_manual_open(obs_properties_t* props, obs_property_t* property, void* data) bool video_superresolution_factory::on_manual_open(obs_properties_t* props, obs_property_t* property, void* data)
{ try {
streamfx::open_url(HELP_URL); streamfx::open_url(HELP_URL);
return false; return false;
} catch (const std::exception& ex) {
D_LOG_ERROR("Failed to open manual due to error: %s", ex.what());
return false;
} catch (...) {
D_LOG_ERROR("Failed to open manual due to unknown error.", "");
return false;
} }
#endif #endif
@ -594,9 +600,13 @@ bool streamfx::filter::video_superresolution::video_superresolution_factory::is_
std::shared_ptr<video_superresolution_factory> _video_denoising_factory_instance = nullptr; std::shared_ptr<video_superresolution_factory> _video_denoising_factory_instance = nullptr;
void video_superresolution_factory::initialize() void video_superresolution_factory::initialize()
{ try {
if (!_video_denoising_factory_instance) if (!_video_denoising_factory_instance)
_video_denoising_factory_instance = std::make_shared<video_superresolution_factory>(); _video_denoising_factory_instance = std::make_shared<video_superresolution_factory>();
} catch (const std::exception& ex) {
D_LOG_ERROR("Failed to initialize due to error: %s", ex.what());
} catch (...) {
D_LOG_ERROR("Failed to initialize due to unknown error.", "");
} }
void video_superresolution_factory::finalize() void video_superresolution_factory::finalize()

View file

@ -29,6 +29,21 @@
#include "obs/gs/gs-helper.hpp" #include "obs/gs/gs-helper.hpp"
#include "obs/obs-source-tracker.hpp" #include "obs/obs-source-tracker.hpp"
#include "obs/obs-tools.hpp" #include "obs/obs-tools.hpp"
#include "util/util-logging.hpp"
#ifdef _DEBUG
#define ST_PREFIX "<%s> "
#define D_LOG_ERROR(x, ...) P_LOG_ERROR(ST_PREFIX##x, __FUNCTION_SIG__, __VA_ARGS__)
#define D_LOG_WARNING(x, ...) P_LOG_WARN(ST_PREFIX##x, __FUNCTION_SIG__, __VA_ARGS__)
#define D_LOG_INFO(x, ...) P_LOG_INFO(ST_PREFIX##x, __FUNCTION_SIG__, __VA_ARGS__)
#define D_LOG_DEBUG(x, ...) P_LOG_DEBUG(ST_PREFIX##x, __FUNCTION_SIG__, __VA_ARGS__)
#else
#define ST_PREFIX "<source::mirror> "
#define D_LOG_ERROR(...) P_LOG_ERROR(ST_PREFIX __VA_ARGS__)
#define D_LOG_WARNING(...) P_LOG_WARN(ST_PREFIX __VA_ARGS__)
#define D_LOG_INFO(...) P_LOG_INFO(ST_PREFIX __VA_ARGS__)
#define D_LOG_DEBUG(...) P_LOG_DEBUG(ST_PREFIX __VA_ARGS__)
#endif
// OBS // OBS
#ifdef _MSC_VER #ifdef _MSC_VER
@ -380,21 +395,34 @@ obs_properties_t* mirror_factory::get_properties2(mirror_instance* data)
#ifdef ENABLE_FRONTEND #ifdef ENABLE_FRONTEND
bool mirror_factory::on_manual_open(obs_properties_t* props, obs_property_t* property, void* data) bool mirror_factory::on_manual_open(obs_properties_t* props, obs_property_t* property, void* data)
{ try {
streamfx::open_url(HELP_URL); streamfx::open_url(HELP_URL);
return false; return false;
} catch (const std::exception& ex) {
D_LOG_ERROR("Failed to open manual due to error: %s", ex.what());
return false;
} catch (...) {
D_LOG_ERROR("Failed to open manual due to unknown error.", "");
return false;
} }
#endif #endif
std::shared_ptr<mirror_factory> _source_mirror_factory_instance; std::shared_ptr<mirror_factory> _source_mirror_factory_instance;
void streamfx::source::mirror::mirror_factory::initialize() void streamfx::source::mirror::mirror_factory::initialize()
{ try {
if (!_source_mirror_factory_instance) if (!_source_mirror_factory_instance)
_source_mirror_factory_instance = std::make_shared<mirror_factory>(); _source_mirror_factory_instance = std::make_shared<mirror_factory>();
} catch (const std::exception& ex) {
D_LOG_ERROR("Failed to initialize due to error: %s", ex.what());
} catch (...) {
D_LOG_ERROR("Failed to initialize due to unknown error.", "");
} }
void streamfx::source::mirror::mirror_factory::finalize() {} void streamfx::source::mirror::mirror_factory::finalize()
{
_source_mirror_factory_instance.reset();
}
std::shared_ptr<mirror_factory> streamfx::source::mirror::mirror_factory::get() std::shared_ptr<mirror_factory> streamfx::source::mirror::mirror_factory::get()
{ {

View file

@ -21,6 +21,21 @@
#include "strings.hpp" #include "strings.hpp"
#include <stdexcept> #include <stdexcept>
#include "obs/gs/gs-helper.hpp" #include "obs/gs/gs-helper.hpp"
#include "util/util-logging.hpp"
#ifdef _DEBUG
#define ST_PREFIX "<%s> "
#define D_LOG_ERROR(x, ...) P_LOG_ERROR(ST_PREFIX##x, __FUNCTION_SIG__, __VA_ARGS__)
#define D_LOG_WARNING(x, ...) P_LOG_WARN(ST_PREFIX##x, __FUNCTION_SIG__, __VA_ARGS__)
#define D_LOG_INFO(x, ...) P_LOG_INFO(ST_PREFIX##x, __FUNCTION_SIG__, __VA_ARGS__)
#define D_LOG_DEBUG(x, ...) P_LOG_DEBUG(ST_PREFIX##x, __FUNCTION_SIG__, __VA_ARGS__)
#else
#define ST_PREFIX "<source::shader> "
#define D_LOG_ERROR(...) P_LOG_ERROR(ST_PREFIX __VA_ARGS__)
#define D_LOG_WARNING(...) P_LOG_WARN(ST_PREFIX __VA_ARGS__)
#define D_LOG_INFO(...) P_LOG_INFO(ST_PREFIX __VA_ARGS__)
#define D_LOG_DEBUG(...) P_LOG_DEBUG(ST_PREFIX __VA_ARGS__)
#endif
#define ST_I18N "Source.Shader" #define ST_I18N "Source.Shader"
@ -145,18 +160,28 @@ obs_properties_t* shader_factory::get_properties2(shader_instance* data)
#ifdef ENABLE_FRONTEND #ifdef ENABLE_FRONTEND
bool shader_factory::on_manual_open(obs_properties_t* props, obs_property_t* property, void* data) bool shader_factory::on_manual_open(obs_properties_t* props, obs_property_t* property, void* data)
{ try {
streamfx::open_url(HELP_URL); streamfx::open_url(HELP_URL);
return false; return false;
} catch (const std::exception& ex) {
D_LOG_ERROR("Failed to open manual due to error: %s", ex.what());
return false;
} catch (...) {
D_LOG_ERROR("Failed to open manual due to unknown error.", "");
return false;
} }
#endif #endif
std::shared_ptr<shader_factory> _source_shader_factory_instance = nullptr; std::shared_ptr<shader_factory> _source_shader_factory_instance = nullptr;
void streamfx::source::shader::shader_factory::initialize() void streamfx::source::shader::shader_factory::initialize()
{ try {
if (!_source_shader_factory_instance) if (!_source_shader_factory_instance)
_source_shader_factory_instance = std::make_shared<shader_factory>(); _source_shader_factory_instance = std::make_shared<shader_factory>();
} catch (const std::exception& ex) {
D_LOG_ERROR("Failed to initialize due to error: %s", ex.what());
} catch (...) {
D_LOG_ERROR("Failed to initialize due to unknown error.", "");
} }
void streamfx::source::shader::shader_factory::finalize() void streamfx::source::shader::shader_factory::finalize()

View file

@ -21,6 +21,21 @@
#include "strings.hpp" #include "strings.hpp"
#include <stdexcept> #include <stdexcept>
#include "obs/gs/gs-helper.hpp" #include "obs/gs/gs-helper.hpp"
#include "util/util-logging.hpp"
#ifdef _DEBUG
#define ST_PREFIX "<%s> "
#define D_LOG_ERROR(x, ...) P_LOG_ERROR(ST_PREFIX##x, __FUNCTION_SIG__, __VA_ARGS__)
#define D_LOG_WARNING(x, ...) P_LOG_WARN(ST_PREFIX##x, __FUNCTION_SIG__, __VA_ARGS__)
#define D_LOG_INFO(x, ...) P_LOG_INFO(ST_PREFIX##x, __FUNCTION_SIG__, __VA_ARGS__)
#define D_LOG_DEBUG(x, ...) P_LOG_DEBUG(ST_PREFIX##x, __FUNCTION_SIG__, __VA_ARGS__)
#else
#define ST_PREFIX "<transition::shader> "
#define D_LOG_ERROR(...) P_LOG_ERROR(ST_PREFIX __VA_ARGS__)
#define D_LOG_WARNING(...) P_LOG_WARN(ST_PREFIX __VA_ARGS__)
#define D_LOG_INFO(...) P_LOG_INFO(ST_PREFIX __VA_ARGS__)
#define D_LOG_DEBUG(...) P_LOG_DEBUG(ST_PREFIX __VA_ARGS__)
#endif
#define ST_I18N "Transition.Shader" #define ST_I18N "Transition.Shader"
@ -166,18 +181,28 @@ obs_properties_t* shader_factory::get_properties2(shader::shader_instance* data)
#ifdef ENABLE_FRONTEND #ifdef ENABLE_FRONTEND
bool shader_factory::on_manual_open(obs_properties_t* props, obs_property_t* property, void* data) bool shader_factory::on_manual_open(obs_properties_t* props, obs_property_t* property, void* data)
{ try {
streamfx::open_url(HELP_URL); streamfx::open_url(HELP_URL);
return false; return false;
} catch (const std::exception& ex) {
D_LOG_ERROR("Failed to open manual due to error: %s", ex.what());
return false;
} catch (...) {
D_LOG_ERROR("Failed to open manual due to unknown error.", "");
return false;
} }
#endif #endif
std::shared_ptr<shader_factory> _transition_shader_factory_instance = nullptr; std::shared_ptr<shader_factory> _transition_shader_factory_instance = nullptr;
void streamfx::transition::shader::shader_factory::initialize() void streamfx::transition::shader::shader_factory::initialize()
{ try {
if (!_transition_shader_factory_instance) if (!_transition_shader_factory_instance)
_transition_shader_factory_instance = std::make_shared<shader_factory>(); _transition_shader_factory_instance = std::make_shared<shader_factory>();
} catch (const std::exception& ex) {
D_LOG_ERROR("Failed to initialize due to error: %s", ex.what());
} catch (...) {
D_LOG_ERROR("Failed to initialize due to unknown error.", "");
} }
void streamfx::transition::shader::shader_factory::finalize() void streamfx::transition::shader::shader_factory::finalize()