diff --git a/plugin/face-mask-filter.cpp b/plugin/face-mask-filter.cpp index e0b14b7..1ce4af0 100644 --- a/plugin/face-mask-filter.cpp +++ b/plugin/face-mask-filter.cpp @@ -123,7 +123,7 @@ Plugin::FaceMaskFilter::Instance::Instance(obs_data_t *data, obs_source_t *sourc : source(source), canvasWidth(0), canvasHeight(0), baseWidth(640), baseHeight(480), demoModeRecord(false), recordTriggered(false), isActive(true), isVisible(true), videoTicked(true), - taskHandle(NULL), + taskHandle(NULL), failedMask(""), introFilename(nullptr), outroFilename(nullptr), alertActivate(true), alertDoIntro(false), alertDoOutro(false), alertDuration(10.0f), alertElapsedTime(BIG_FLOAT), alertTriggered(false), alertShown(false), alertsLoaded(false), @@ -394,6 +394,8 @@ void Plugin::FaceMaskFilter::Instance::get_defaults(obs_data_t *data) { obs_data_set_default_string(data, P_BEFORE_TEXT, kDefaultBeforeText); obs_data_set_default_string(data, P_AFTER_TEXT, kDefaultAfterText); + obs_data_set_default_string(data, P_FAILED_MASK, ""); + #if !defined(PUBLIC_RELEASE) // default advanced params smll::Config::singleton().set_defaults(data); @@ -558,7 +560,7 @@ void Plugin::FaceMaskFilter::Instance::get_properties(obs_properties_t *props) { #if !defined(PUBLIC_RELEASE) // mask add_json_file_property(props, P_MASK_BROWSE, NULL); - + //add_text_property(props, P_FAILED_MASK); // ALERT PROPERTIES add_bool_property(props, P_ALERT_ACTIVATE); add_float_slider(props, P_ALERT_DURATION, 10.0f, 60.0f, 0.1f); @@ -765,6 +767,8 @@ void Plugin::FaceMaskFilter::Instance::update(obs_data_t *data) { beforeFile = (char*)obs_data_get_string(data, P_BEFORE); afterText = (char*)obs_data_get_string(data, P_AFTER_TEXT); afterFile = (char*)obs_data_get_string(data, P_AFTER); + // set last failed mask + obs_data_set_string(data, P_FAILED_MASK, failedMask.c_str()); } void Plugin::FaceMaskFilter::Instance::activate(void *ptr) { @@ -1772,7 +1776,7 @@ int32_t Plugin::FaceMaskFilter::Instance::LocalMaskDataThreadMain() { } // time to load intro? - if ((introData == nullptr) && + /*if ((introData == nullptr) && introFilename && introFilename[0]) { // save current currentIntroFilename = introFilename; @@ -1797,7 +1801,7 @@ int32_t Plugin::FaceMaskFilter::Instance::LocalMaskDataThreadMain() { SetThreadPriority(GetCurrentThread(), THREAD_MODE_BACKGROUND_BEGIN); outroData = std::unique_ptr(LoadMask(maskFn)); SetThreadPriority(GetCurrentThread(), THREAD_MODE_BACKGROUND_END); - } + }*/ // demo mode @@ -1884,6 +1888,7 @@ Plugin::FaceMaskFilter::Instance::LoadMask(std::string filename) { } catch (...) { PLOG_ERROR("Failed to load mask %s.", filename.c_str()); + failedMask = filename; } return mdat; diff --git a/plugin/face-mask-filter.h b/plugin/face-mask-filter.h index 0f7b7b2..2f9ad26 100644 --- a/plugin/face-mask-filter.h +++ b/plugin/face-mask-filter.h @@ -177,6 +177,7 @@ namespace Plugin { std::string maskFilePath; std::string maskInternal; std::string currentMaskFilename; + std::string failedMask; const char* introFilename; std::string currentIntroFilename; const char* outroFilename; diff --git a/plugin/strings.h b/plugin/strings.h index 19e9daf..3a4b8d0 100644 --- a/plugin/strings.h +++ b/plugin/strings.h @@ -29,6 +29,7 @@ // Properties #define P_MASK "Mask" +#define P_FAILED_MASK "failedMask" #define P_MASK_BROWSE "Browse to mask" #define P_BEFORE "Before Video" #define P_AFTER "After Video"