@@ -808,7 +808,7 @@ class StableDiffusionGGML {
808
808
int step,
809
809
struct ggml_tensor * latents,
810
810
enum SDVersion version,
811
- sd_preview_policy_t preview_mode,
811
+ sd_preview_t preview_mode,
812
812
ggml_tensor* result,
813
813
std::function<void (int , sd_image_t )> step_callback) {
814
814
const uint32_t channel = 3 ;
@@ -919,14 +919,11 @@ class StableDiffusionGGML {
919
919
const std::vector<float >& sigmas,
920
920
int start_merge_step,
921
921
SDCondition id_cond,
922
- std::vector<int > skip_layers = {},
923
- float slg_scale = 0 ,
924
- float skip_layer_start = 0.01 ,
925
- float skip_layer_end = 0.2 ,
926
- ggml_tensor* noise_mask = nullptr ,
927
- sd_preview_policy_t preview_mode = SD_PREVIEW_NONE,
928
- int preview_interval = 1 ,
929
- std::function<void (int , sd_image_t )> step_callback = nullptr ) {
922
+ std::vector<int > skip_layers = {},
923
+ float slg_scale = 0 ,
924
+ float skip_layer_start = 0.01 ,
925
+ float skip_layer_end = 0.2 ,
926
+ ggml_tensor* noise_mask = nullptr ) {
930
927
size_t steps = sigmas.size () - 1 ;
931
928
// noise = load_tensor_from_file(work_ctx, "./rand0.bin");
932
929
// print_ggml_tensor(noise);
@@ -958,7 +955,8 @@ class StableDiffusionGGML {
958
955
struct ggml_tensor * denoised = ggml_dup_tensor (work_ctx, x);
959
956
960
957
struct ggml_tensor * preview_tensor = NULL ;
961
- if (preview_mode != SD_PREVIEW_NONE && preview_mode != SD_PREVIEW_PROJ) {
958
+ auto sd_preview_mode = sd_get_preview_mode ();
959
+ if (sd_preview_mode != SD_PREVIEW_NONE && sd_preview_mode != SD_PREVIEW_PROJ) {
962
960
preview_tensor = ggml_new_tensor_4d (work_ctx, GGML_TYPE_F32,
963
961
(denoised->ne [0 ] * 8 ),
964
962
(denoised->ne [1 ] * 8 ),
@@ -1106,10 +1104,11 @@ class StableDiffusionGGML {
1106
1104
pretty_progress (step, (int )steps, (t1 - t0) / 1000000 .f );
1107
1105
// LOG_INFO("step %d sampling completed taking %.2fs", step, (t1 - t0) * 1.0f / 1000000);
1108
1106
}
1109
-
1110
- if (step_callback != nullptr ) {
1111
- if (step % preview_interval == 0 ) {
1112
- preview_image (work_ctx, step, denoised, version, preview_mode, preview_tensor, step_callback);
1107
+ auto sd_preview_cb = sd_get_preview_callback ();
1108
+ auto sd_preview_mode = sd_get_preview_mode ();
1109
+ if (sd_preview_cb != NULL ) {
1110
+ if (step % sd_get_preview_interval () == 0 ) {
1111
+ preview_image (work_ctx, step, denoised, version, sd_preview_mode, preview_tensor, sd_preview_cb);
1113
1112
}
1114
1113
}
1115
1114
return denoised;
@@ -1334,14 +1333,11 @@ sd_image_t* generate_image(sd_ctx_t* sd_ctx,
1334
1333
float style_ratio,
1335
1334
bool normalize_input,
1336
1335
std::string input_id_images_path,
1337
- std::vector<int > skip_layers = {},
1338
- float slg_scale = 0 ,
1339
- float skip_layer_start = 0.01 ,
1340
- float skip_layer_end = 0.2 ,
1341
- ggml_tensor* masked_image = NULL ,
1342
- sd_preview_policy_t preview_mode = SD_PREVIEW_NONE,
1343
- int preview_interval = 1 ,
1344
- std::function<void (int , sd_image_t )> step_callback = nullptr) {
1336
+ std::vector<int > skip_layers = {},
1337
+ float slg_scale = 0 ,
1338
+ float skip_layer_start = 0.01 ,
1339
+ float skip_layer_end = 0.2 ,
1340
+ ggml_tensor* masked_image = NULL ) {
1345
1341
if (seed < 0 ) {
1346
1342
// Generally, when using the provided command line, the seed is always >0.
1347
1343
// However, to prevent potential issues if 'stable-diffusion.cpp' is invoked as a library
@@ -1597,10 +1593,7 @@ sd_image_t* generate_image(sd_ctx_t* sd_ctx,
1597
1593
slg_scale,
1598
1594
skip_layer_start,
1599
1595
skip_layer_end,
1600
- noise_mask,
1601
- preview_mode,
1602
- preview_interval,
1603
- step_callback);
1596
+ noise_mask);
1604
1597
1605
1598
// struct ggml_tensor* x_0 = load_tensor_from_file(ctx, "samples_ddim.bin");
1606
1599
// print_ggml_tensor(x_0);
@@ -1668,14 +1661,11 @@ sd_image_t* txt2img(sd_ctx_t* sd_ctx,
1668
1661
float style_ratio,
1669
1662
bool normalize_input,
1670
1663
const char * input_id_images_path_c_str,
1671
- int * skip_layers = NULL ,
1672
- size_t skip_layers_count = 0 ,
1673
- float slg_scale = 0 ,
1674
- float skip_layer_start = 0.01 ,
1675
- float skip_layer_end = 0.2 ,
1676
- sd_preview_policy_t preview_mode = SD_PREVIEW_NONE,
1677
- int preview_interval = 1 ,
1678
- step_callback_t step_callback = NULL ) {
1664
+ int * skip_layers = NULL ,
1665
+ size_t skip_layers_count = 0 ,
1666
+ float slg_scale = 0 ,
1667
+ float skip_layer_start = 0.01 ,
1668
+ float skip_layer_end = 0.2 ) {
1679
1669
std::vector<int > skip_layers_vec (skip_layers, skip_layers + skip_layers_count);
1680
1670
LOG_DEBUG (" txt2img %dx%d" , width, height);
1681
1671
if (sd_ctx == NULL ) {
@@ -1693,7 +1683,8 @@ sd_image_t* txt2img(sd_ctx_t* sd_ctx,
1693
1683
if (sd_ctx->sd ->stacked_id ) {
1694
1684
params.mem_size += static_cast <size_t >(10 * 1024 * 1024 ); // 10 MB
1695
1685
}
1696
- if (preview_mode != SD_PREVIEW_NONE && preview_mode != SD_PREVIEW_PROJ) {
1686
+ auto sd_preview_mode = sd_get_preview_mode ();
1687
+ if (sd_preview_mode != SD_PREVIEW_NONE && sd_preview_mode != SD_PREVIEW_PROJ) {
1697
1688
params.mem_size *= 2 ;
1698
1689
}
1699
1690
params.mem_size += width * height * 3 * sizeof (float );
@@ -1756,10 +1747,7 @@ sd_image_t* txt2img(sd_ctx_t* sd_ctx,
1756
1747
slg_scale,
1757
1748
skip_layer_start,
1758
1749
skip_layer_end,
1759
- NULL ,
1760
- preview_mode,
1761
- preview_interval,
1762
- step_callback);
1750
+ NULL );
1763
1751
1764
1752
size_t t1 = ggml_time_ms ();
1765
1753
@@ -1788,14 +1776,11 @@ sd_image_t* img2img(sd_ctx_t* sd_ctx,
1788
1776
float style_ratio,
1789
1777
bool normalize_input,
1790
1778
const char * input_id_images_path_c_str,
1791
- int * skip_layers = NULL ,
1792
- size_t skip_layers_count = 0 ,
1793
- float slg_scale = 0 ,
1794
- float skip_layer_start = 0.01 ,
1795
- float skip_layer_end = 0.2 ,
1796
- sd_preview_policy_t preview_mode = SD_PREVIEW_NONE,
1797
- int preview_interval = 1 ,
1798
- step_callback_t step_callback = NULL ) {
1779
+ int * skip_layers = NULL ,
1780
+ size_t skip_layers_count = 0 ,
1781
+ float slg_scale = 0 ,
1782
+ float skip_layer_start = 0.01 ,
1783
+ float skip_layer_end = 0.2 ) {
1799
1784
std::vector<int > skip_layers_vec (skip_layers, skip_layers + skip_layers_count);
1800
1785
LOG_DEBUG (" img2img %dx%d" , width, height);
1801
1786
if (sd_ctx == NULL ) {
@@ -1941,10 +1926,7 @@ sd_image_t* img2img(sd_ctx_t* sd_ctx,
1941
1926
slg_scale,
1942
1927
skip_layer_start,
1943
1928
skip_layer_end,
1944
- masked_image,
1945
- preview_mode,
1946
- preview_interval,
1947
- step_callback);
1929
+ masked_image);
1948
1930
1949
1931
size_t t2 = ggml_time_ms ();
1950
1932
@@ -2047,9 +2029,7 @@ SD_API sd_image_t* img2vid(sd_ctx_t* sd_ctx,
2047
2029
-1 ,
2048
2030
SDCondition (NULL , NULL , NULL ),
2049
2031
{},
2050
- 0 , 0 , 0 , NULL ,
2051
- (sd_preview_policy_t )0 , 1 ,
2052
- NULL );
2032
+ 0 , 0 , 0 , NULL );
2053
2033
2054
2034
int64_t t2 = ggml_time_ms ();
2055
2035
LOG_INFO (" sampling completed, taking %.2fs" , (t2 - t1) * 1 .0f / 1000 );
0 commit comments