From cd6c771bd9d69285f9eb4671ad0e5c470b77c1f7 Mon Sep 17 00:00:00 2001 From: Concedo <39025047+LostRuins@users.noreply.github.com> Date: Sun, 28 Sep 2025 15:01:19 +0800 Subject: [PATCH] WAN single images working --- otherarch/sdcpp/sdtype_adapter.cpp | 47 +++++++++++++++++++++++++++++- 1 file changed, 46 insertions(+), 1 deletion(-) diff --git a/otherarch/sdcpp/sdtype_adapter.cpp b/otherarch/sdcpp/sdtype_adapter.cpp index d9121ad07..2e4f8679d 100644 --- a/otherarch/sdcpp/sdtype_adapter.cpp +++ b/otherarch/sdcpp/sdtype_adapter.cpp @@ -92,6 +92,8 @@ static bool sd_is_quiet = false; static std::string sdmodelfilename = ""; static bool photomaker_enabled = false; +static bool is_vid_model = false; + static int get_loaded_sd_version(sd_ctx_t* ctx) { return ctx->sd->version; @@ -298,6 +300,13 @@ bool sdtype_load_model(const sd_load_model_inputs inputs) { } } + auto loadedsdver = get_loaded_sd_version(sd_ctx); + if (loadedsdver == SDVersion::VERSION_WAN2 || loadedsdver == SDVersion::VERSION_WAN2_2_I2V || loadedsdver == SDVersion::VERSION_WAN2_2_TI2V) + { + printf("\nVer %d, Setting to Video Generation Mode!\n",loadedsdver); + is_vid_model = true; + } + std::filesystem::path mpath(inputs.model_filename); sdmodelfilename = mpath.filename().string(); @@ -712,8 +721,44 @@ sd_generation_outputs sdtype_generate(const sd_generation_inputs inputs) params.pm_params.id_images = photomaker_imgs.data(); params.pm_params.id_images_count = photomaker_imgs.size(); - if (!is_img2img) { + if(is_vid_model) + { + int num_results = 1; + std::vector control_frames; //empty for now + sd_vid_gen_params_t vid_gen_params = {}; + sd_vid_gen_params_init (&vid_gen_params); + vid_gen_params.prompt = params.prompt; + vid_gen_params.negative_prompt = params.negative_prompt; + vid_gen_params.clip_skip = params.clip_skip; + vid_gen_params.control_frames = control_frames.data(); + vid_gen_params.control_frames_size = (int)control_frames.size(); + vid_gen_params.width = params.width; + vid_gen_params.height = params.height; + vid_gen_params.sample_params = params.sample_params; + vid_gen_params.strength = params.strength; + vid_gen_params.seed = params.seed; + vid_gen_params.video_frames = 1; + if(!sd_is_quiet && sddebugmode==1) + { + std::stringstream ss; + ss << "\nVID PROMPT:" << vid_gen_params.prompt + << "\nNPROMPT:" << vid_gen_params.negative_prompt + << "\nCLPSKP:" << vid_gen_params.clip_skip + << "\nSIZE:" << vid_gen_params.width << "x" << vid_gen_params.height + << "\nSTEP:" << vid_gen_params.sample_params.sample_steps + << "\nSEED:" << vid_gen_params.seed + << "\nSTRENGTH:" << vid_gen_params.strength + << "\nFRAMES:" << vid_gen_params.video_frames + << "\nCTRL_FRM:" << vid_gen_params.control_frames_size + << "\n\n"; + printf("%s", ss.str().c_str()); + } + fflush(stdout); + results = generate_video(sd_ctx, &vid_gen_params, &num_results); + } + else if (!is_img2img) + { if(!sd_is_quiet && sddebugmode==1) { std::stringstream ss;