@@ -1307,7 +1307,8 @@ class StableDiffusionGGML {
13071307 enum SDVersion version,
13081308 preview_t preview_mode,
13091309 ggml_tensor* result,
1310- std::function<void (int , int , sd_image_t *, bool )> step_callback,
1310+ std::function<void (int , int , sd_image_t *, bool , void *)> step_callback,
1311+ void * step_callback_data,
13111312 bool is_noisy) {
13121313 const uint32_t channel = 3 ;
13131314 uint32_t width = latents->ne [0 ];
@@ -1378,7 +1379,7 @@ class StableDiffusionGGML {
13781379 for (int i = 0 ; i < frames; i++) {
13791380 images[i] = {width, height, channel, data + i * width * height * channel};
13801381 }
1381- step_callback (step, frames, images, is_noisy);
1382+ step_callback (step, frames, images, is_noisy, step_callback_data );
13821383 free (data);
13831384 free (images);
13841385 } else {
@@ -1432,7 +1433,7 @@ class StableDiffusionGGML {
14321433 images[i].data = ggml_tensor_to_sd_image (result, i, ggml_n_dims (latents) == 4 );
14331434 }
14341435
1435- step_callback (step, frames, images, is_noisy);
1436+ step_callback (step, frames, images, is_noisy, step_callback_data );
14361437
14371438 ggml_ext_tensor_scale_inplace (result, 0 );
14381439 for (int i = 0 ; i < frames; i++) {
@@ -1581,8 +1582,9 @@ class StableDiffusionGGML {
15811582 }
15821583
15831584 auto denoise = [&](ggml_tensor* input, float sigma, int step) -> ggml_tensor* {
1584- auto sd_preview_cb = sd_get_preview_callback ();
1585- auto sd_preview_mode = sd_get_preview_mode ();
1585+ auto sd_preview_cb = sd_get_preview_callback ();
1586+ auto sd_preview_cb_data = sd_get_preview_callback_data ();
1587+ auto sd_preview_mode = sd_get_preview_mode ();
15861588 if (step == 1 || step == -1 ) {
15871589 pretty_progress (0 , (int )steps, 0 );
15881590 }
@@ -1651,7 +1653,7 @@ class StableDiffusionGGML {
16511653 }
16521654 if (sd_preview_cb != nullptr && sd_should_preview_noisy ()) {
16531655 if (step % sd_get_preview_interval () == 0 ) {
1654- preview_image (work_ctx, step, noised_input, version, sd_preview_mode, preview_tensor, sd_preview_cb, true );
1656+ preview_image (work_ctx, step, noised_input, version, sd_preview_mode, preview_tensor, sd_preview_cb, sd_preview_cb_data, true );
16551657 }
16561658 }
16571659
@@ -1799,7 +1801,7 @@ class StableDiffusionGGML {
17991801
18001802 if (sd_preview_cb != nullptr && sd_should_preview_denoised ()) {
18011803 if (step % sd_get_preview_interval () == 0 ) {
1802- preview_image (work_ctx, step, denoised, version, sd_preview_mode, preview_tensor, sd_preview_cb, false );
1804+ preview_image (work_ctx, step, denoised, version, sd_preview_mode, preview_tensor, sd_preview_cb, sd_preview_cb_data, false );
18031805 }
18041806 }
18051807
0 commit comments