@@ -845,7 +845,7 @@ class StableDiffusionGGML {
845
845
int step,
846
846
struct ggml_tensor * latents,
847
847
enum SDVersion version,
848
- sd_preview_policy_t preview_mode,
848
+ sd_preview_t preview_mode,
849
849
ggml_tensor* result,
850
850
std::function<void (int , sd_image_t )> step_callback) {
851
851
const uint32_t channel = 3 ;
@@ -958,14 +958,11 @@ class StableDiffusionGGML {
958
958
int start_merge_step,
959
959
SDCondition id_cond,
960
960
std::vector<ggml_tensor*> ref_latents = {},
961
- std::vector<int > skip_layers = {},
962
- float slg_scale = 0 ,
963
- float skip_layer_start = 0.01 ,
964
- float skip_layer_end = 0.2 ,
965
- ggml_tensor* noise_mask = nullptr ,
966
- sd_preview_policy_t preview_mode = SD_PREVIEW_NONE,
967
- int preview_interval = 1 ,
968
- std::function<void (int , sd_image_t )> step_callback = nullptr ) {
961
+ std::vector<int > skip_layers = {},
962
+ float slg_scale = 0 ,
963
+ float skip_layer_start = 0.01 ,
964
+ float skip_layer_end = 0.2 ,
965
+ ggml_tensor* noise_mask = nullptr ) {
969
966
size_t steps = sigmas.size () - 1 ;
970
967
// noise = load_tensor_from_file(work_ctx, "./rand0.bin");
971
968
// print_ggml_tensor(noise);
@@ -997,7 +994,8 @@ class StableDiffusionGGML {
997
994
struct ggml_tensor * denoised = ggml_dup_tensor (work_ctx, x);
998
995
999
996
struct ggml_tensor * preview_tensor = NULL ;
1000
- if (preview_mode != SD_PREVIEW_NONE && preview_mode != SD_PREVIEW_PROJ) {
997
+ auto sd_preview_mode = sd_get_preview_mode ();
998
+ if (sd_preview_mode != SD_PREVIEW_NONE && sd_preview_mode != SD_PREVIEW_PROJ) {
1001
999
preview_tensor = ggml_new_tensor_4d (work_ctx, GGML_TYPE_F32,
1002
1000
(denoised->ne [0 ] * 8 ),
1003
1001
(denoised->ne [1 ] * 8 ),
@@ -1149,10 +1147,11 @@ class StableDiffusionGGML {
1149
1147
pretty_progress (step, (int )steps, (t1 - t0) / 1000000 .f );
1150
1148
// LOG_INFO("step %d sampling completed taking %.2fs", step, (t1 - t0) * 1.0f / 1000000);
1151
1149
}
1152
-
1153
- if (step_callback != nullptr ) {
1154
- if (step % preview_interval == 0 ) {
1155
- preview_image (work_ctx, step, denoised, version, preview_mode, preview_tensor, step_callback);
1150
+ auto sd_preview_cb = sd_get_preview_callback ();
1151
+ auto sd_preview_mode = sd_get_preview_mode ();
1152
+ if (sd_preview_cb != NULL ) {
1153
+ if (step % sd_get_preview_interval () == 0 ) {
1154
+ preview_image (work_ctx, step, denoised, version, sd_preview_mode, preview_tensor, sd_preview_cb);
1156
1155
}
1157
1156
}
1158
1157
return denoised;
@@ -1385,14 +1384,11 @@ sd_image_t* generate_image(sd_ctx_t* sd_ctx,
1385
1384
bool normalize_input,
1386
1385
std::string input_id_images_path,
1387
1386
std::vector<ggml_tensor*> ref_latents,
1388
- std::vector<int > skip_layers = {},
1389
- float slg_scale = 0 ,
1390
- float skip_layer_start = 0.01 ,
1391
- float skip_layer_end = 0.2 ,
1392
- ggml_tensor* masked_image = NULL ,
1393
- sd_preview_policy_t preview_mode = SD_PREVIEW_NONE,
1394
- int preview_interval = 1 ,
1395
- std::function<void (int , sd_image_t )> step_callback = nullptr) {
1387
+ std::vector<int > skip_layers = {},
1388
+ float slg_scale = 0 ,
1389
+ float skip_layer_start = 0.01 ,
1390
+ float skip_layer_end = 0.2 ,
1391
+ ggml_tensor* masked_image = NULL ) {
1396
1392
if (seed < 0 ) {
1397
1393
// Generally, when using the provided command line, the seed is always >0.
1398
1394
// However, to prevent potential issues if 'stable-diffusion.cpp' is invoked as a library
@@ -1650,10 +1646,7 @@ sd_image_t* generate_image(sd_ctx_t* sd_ctx,
1650
1646
slg_scale,
1651
1647
skip_layer_start,
1652
1648
skip_layer_end,
1653
- noise_mask,
1654
- preview_mode,
1655
- preview_interval,
1656
- step_callback);
1649
+ noise_mask);
1657
1650
1658
1651
// struct ggml_tensor* x_0 = load_tensor_from_file(ctx, "samples_ddim.bin");
1659
1652
// print_ggml_tensor(x_0);
@@ -1745,14 +1738,11 @@ sd_image_t* txt2img(sd_ctx_t* sd_ctx,
1745
1738
float style_ratio,
1746
1739
bool normalize_input,
1747
1740
const char * input_id_images_path_c_str,
1748
- int * skip_layers = NULL ,
1749
- size_t skip_layers_count = 0 ,
1750
- float slg_scale = 0 ,
1751
- float skip_layer_start = 0.01 ,
1752
- float skip_layer_end = 0.2 ,
1753
- sd_preview_policy_t preview_mode = SD_PREVIEW_NONE,
1754
- int preview_interval = 1 ,
1755
- step_callback_t step_callback = NULL ) {
1741
+ int * skip_layers = NULL ,
1742
+ size_t skip_layers_count = 0 ,
1743
+ float slg_scale = 0 ,
1744
+ float skip_layer_start = 0.01 ,
1745
+ float skip_layer_end = 0.2 ) {
1756
1746
std::vector<int > skip_layers_vec (skip_layers, skip_layers + skip_layers_count);
1757
1747
LOG_DEBUG (" txt2img %dx%d" , width, height);
1758
1748
if (sd_ctx == NULL ) {
@@ -1770,7 +1760,8 @@ sd_image_t* txt2img(sd_ctx_t* sd_ctx,
1770
1760
if (sd_ctx->sd ->stacked_id ) {
1771
1761
params.mem_size += static_cast <size_t >(10 * 1024 * 1024 ); // 10 MB
1772
1762
}
1773
- if (preview_mode != SD_PREVIEW_NONE && preview_mode != SD_PREVIEW_PROJ) {
1763
+ auto sd_preview_mode = sd_get_preview_mode ();
1764
+ if (sd_preview_mode != SD_PREVIEW_NONE && sd_preview_mode != SD_PREVIEW_PROJ) {
1774
1765
params.mem_size *= 2 ;
1775
1766
}
1776
1767
params.mem_size += width * height * 3 * sizeof (float );
@@ -1820,10 +1811,7 @@ sd_image_t* txt2img(sd_ctx_t* sd_ctx,
1820
1811
slg_scale,
1821
1812
skip_layer_start,
1822
1813
skip_layer_end,
1823
- NULL ,
1824
- preview_mode,
1825
- preview_interval,
1826
- step_callback);
1814
+ NULL );
1827
1815
1828
1816
size_t t1 = ggml_time_ms ();
1829
1817
@@ -1853,14 +1841,11 @@ sd_image_t* img2img(sd_ctx_t* sd_ctx,
1853
1841
float style_ratio,
1854
1842
bool normalize_input,
1855
1843
const char * input_id_images_path_c_str,
1856
- int * skip_layers = NULL ,
1857
- size_t skip_layers_count = 0 ,
1858
- float slg_scale = 0 ,
1859
- float skip_layer_start = 0.01 ,
1860
- float skip_layer_end = 0.2 ,
1861
- sd_preview_policy_t preview_mode = SD_PREVIEW_NONE,
1862
- int preview_interval = 1 ,
1863
- step_callback_t step_callback = NULL ) {
1844
+ int * skip_layers = NULL ,
1845
+ size_t skip_layers_count = 0 ,
1846
+ float slg_scale = 0 ,
1847
+ float skip_layer_start = 0.01 ,
1848
+ float skip_layer_end = 0.2 ) {
1864
1849
std::vector<int > skip_layers_vec (skip_layers, skip_layers + skip_layers_count);
1865
1850
LOG_DEBUG (" img2img %dx%d" , width, height);
1866
1851
if (sd_ctx == NULL ) {
@@ -2008,10 +1993,7 @@ sd_image_t* img2img(sd_ctx_t* sd_ctx,
2008
1993
slg_scale,
2009
1994
skip_layer_start,
2010
1995
skip_layer_end,
2011
- masked_image,
2012
- preview_mode,
2013
- preview_interval,
2014
- step_callback);
1996
+ masked_image);
2015
1997
2016
1998
size_t t2 = ggml_time_ms ();
2017
1999
@@ -2117,8 +2099,6 @@ SD_API sd_image_t* img2vid(sd_ctx_t* sd_ctx,
2117
2099
{},
2118
2100
{},
2119
2101
0 , 0 , 0 ,
2120
- NULL ,
2121
- (sd_preview_policy_t )0 , 1 ,
2122
2102
NULL );
2123
2103
2124
2104
int64_t t2 = ggml_time_ms ();
0 commit comments