diff --git a/mediapipe/tasks/cc/vision/image_generator/diffuser/stable_diffusion_iterate_calculator.cc b/mediapipe/tasks/cc/vision/image_generator/diffuser/stable_diffusion_iterate_calculator.cc index f7eb7c1b6..e0a4d18b3 100644 --- a/mediapipe/tasks/cc/vision/image_generator/diffuser/stable_diffusion_iterate_calculator.cc +++ b/mediapipe/tasks/cc/vision/image_generator/diffuser/stable_diffusion_iterate_calculator.cc @@ -121,6 +121,8 @@ class StableDiffusionIterateCalculator : public Node { if (handle_) dlclose(handle_); } + static absl::Status UpdateContract(CalculatorContract* cc); + absl::Status Open(CalculatorContext* cc) override; absl::Status Process(CalculatorContext* cc) override; @@ -188,6 +190,11 @@ class StableDiffusionIterateCalculator : public Node { bool emit_empty_packet_; }; +absl::Status StableDiffusionIterateCalculator::UpdateContract( + CalculatorContract* cc) { + return absl::OkStatus(); +} + absl::Status StableDiffusionIterateCalculator::Open(CalculatorContext* cc) { StableDiffusionIterateCalculatorOptions options; if (kOptionsIn(cc).IsEmpty()) { @@ -205,7 +212,11 @@ absl::Status StableDiffusionIterateCalculator::Open(CalculatorContext* cc) { if (options.file_folder().empty()) { std::strcpy(config.model_dir, "bins/"); // NOLINT } else { - std::strcpy(config.model_dir, options.file_folder().c_str()); // NOLINT + std::string file_folder = options.file_folder(); + if (!file_folder.empty() && file_folder.back() != '/') { + file_folder.push_back('/'); + } + std::strcpy(config.model_dir, file_folder.c_str()); // NOLINT } MP_RETURN_IF_ERROR(mediapipe::file::Exists(config.model_dir)) << config.model_dir;