Use input_h + pixel_margin * 2 to prevent progress report from ever going above 1. Always report a 0 before and a 1 at the end of each resize.
This commit is contained in:
parent
118f28557e
commit
145690788c
@ -1520,11 +1520,12 @@ static void stbir__buffer_loop_downsample(stbir__info* stbir_info)
|
||||
float scale_ratio = stbir_info->vertical_scale;
|
||||
int output_h = stbir_info->output_h;
|
||||
float in_pixels_radius = stbir__filter_info_table[stbir_info->vertical_filter].support / scale_ratio;
|
||||
int max_y = stbir_info->input_h + stbir__get_filter_pixel_margin_vertical(stbir_info);
|
||||
int pixel_margin = stbir__get_filter_pixel_margin_vertical(stbir_info);
|
||||
int max_y = stbir_info->input_h + pixel_margin;
|
||||
|
||||
STBIR__DEBUG_ASSERT(!stbir__use_height_upsampling(stbir_info));
|
||||
|
||||
for (y = -stbir__get_filter_pixel_margin_vertical(stbir_info); y < max_y; y++)
|
||||
for (y = -pixel_margin; y < max_y; y++)
|
||||
{
|
||||
float out_center_of_in; // Center of the current out scanline in the in scanline space
|
||||
int out_first_scanline, out_last_scanline;
|
||||
@ -1550,7 +1551,7 @@ static void stbir__buffer_loop_downsample(stbir__info* stbir_info)
|
||||
// Now the horizontal buffer is ready to write to all ring buffer rows.
|
||||
stbir__resample_vertical_downsample(stbir_info, y, out_first_scanline, out_last_scanline, out_center_of_in);
|
||||
|
||||
STBIR_PROGRESS_REPORT((float)(y + stbir__get_filter_pixel_margin_vertical(stbir_info)) / (max_y + stbir__get_filter_pixel_margin_vertical(stbir_info)));
|
||||
STBIR_PROGRESS_REPORT((float)(y + pixel_margin) / (stbir_info->input_h + pixel_margin * 2));
|
||||
}
|
||||
|
||||
stbir__empty_ring_buffer(stbir_info, stbir_info->output_h);
|
||||
@ -1738,11 +1739,15 @@ static int stbir__resize_allocated(stbir__info *info,
|
||||
|
||||
stbir__calculate_horizontal_filters(info);
|
||||
|
||||
STBIR_PROGRESS_REPORT(0);
|
||||
|
||||
if (stbir__use_height_upsampling(info))
|
||||
stbir__buffer_loop_upsample(info);
|
||||
else
|
||||
stbir__buffer_loop_downsample(info);
|
||||
|
||||
STBIR_PROGRESS_REPORT(1);
|
||||
|
||||
#ifdef STBIR_DEBUG_OVERWRITE_TEST
|
||||
STBIR__DEBUG_ASSERT(memcmp(overwrite_output_before_pre, &((unsigned char*)output_data)[-OVERWRITE_ARRAY_SIZE], OVERWRITE_ARRAY_SIZE) == 0);
|
||||
STBIR__DEBUG_ASSERT(memcmp(overwrite_output_after_pre, &((unsigned char*)output_data)[begin_forbidden], OVERWRITE_ARRAY_SIZE) == 0);
|
||||
|
Loading…
Reference in New Issue
Block a user