More accurate names. Smaller size for contributors memory, more accurate to what's needed.
This commit is contained in:
parent
855fb207be
commit
158effb62a
@ -160,12 +160,13 @@ typedef struct
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int total_contributors;
|
||||
int total_coefficients;
|
||||
int kernel_texel_width;
|
||||
|
||||
float* decode_buffer;
|
||||
stbr__contributors* horizontal_contributors;
|
||||
float* horizontal_coefficients;
|
||||
|
||||
float* decode_buffer;
|
||||
} stbr__info;
|
||||
|
||||
|
||||
@ -194,7 +195,7 @@ int stbr__get_filter_texel_width(stbr_filter filter, int upsample)
|
||||
return (int)ceil(stbr__filter_info_table[filter].support * 2);
|
||||
}
|
||||
|
||||
int stbr__get_total_contributors(stbr_filter filter, int input_w, int output_w)
|
||||
int stbr__get_total_coefficients(stbr_filter filter, int input_w, int output_w)
|
||||
{
|
||||
return output_w * stbr__get_filter_texel_width(filter, output_w > input_w ? 1 : 0);
|
||||
}
|
||||
@ -218,6 +219,7 @@ stbr_inline static stbr_size_t stbr__texel_index(int x, int y, int c, int width_
|
||||
|
||||
stbr_inline static stbr__contributors* stbr__get_contributor(stbr__info* stbr_info, int n)
|
||||
{
|
||||
STBR_DEBUG_ASSERT(n >= 0 /*&& n < output_w*/);
|
||||
return &stbr_info->horizontal_contributors[n];
|
||||
}
|
||||
|
||||
@ -305,18 +307,18 @@ STBRDEF int stbr_resize_arbitrary(const void* input_data, int input_w, int input
|
||||
if (tempmem_size_in_bytes < stbr_calculate_memory(input_w, input_h, input_stride_in_bytes, output_w, output_h, output_stride_in_bytes, channels, STBR_FILTER_NEAREST))
|
||||
return 0;
|
||||
|
||||
#define STBR__NEXT_MEMPTR(current, old, newtype) (newtype*)(((unsigned char*)current) + old)
|
||||
|
||||
memset(tempmem, 0, tempmem_size_in_bytes);
|
||||
|
||||
stbr__info* stbr_info = (stbr__info*)tempmem;
|
||||
|
||||
stbr_info->total_contributors = stbr__get_total_contributors(filter, input_w, output_w);
|
||||
stbr_info->total_coefficients = stbr__get_total_coefficients(filter, input_w, output_w);
|
||||
stbr_info->kernel_texel_width = stbr__get_filter_texel_width(filter, output_w > input_w ? 1 : 0);
|
||||
|
||||
stbr_info->decode_buffer = STBR__NEXT_MEMPTR(stbr_info, sizeof(stbr__info), float);
|
||||
stbr_info->horizontal_contributors = STBR__NEXT_MEMPTR(stbr_info->decode_buffer, input_w * channels * sizeof(float), stbr__contributors);
|
||||
stbr_info->horizontal_coefficients = STBR__NEXT_MEMPTR(stbr_info->horizontal_contributors, stbr_info->total_contributors * sizeof(stbr__contributors), float);
|
||||
#define STBR__NEXT_MEMPTR(current, old, newtype) (newtype*)(((unsigned char*)current) + old)
|
||||
|
||||
stbr_info->horizontal_contributors = STBR__NEXT_MEMPTR(stbr_info, sizeof(stbr__info), stbr__contributors);
|
||||
stbr_info->horizontal_coefficients = STBR__NEXT_MEMPTR(stbr_info->horizontal_contributors, output_w * sizeof(stbr__contributors), float);
|
||||
stbr_info->decode_buffer = STBR__NEXT_MEMPTR(stbr_info->horizontal_coefficients, stbr_info->total_coefficients * sizeof(stbr__contributors), float);
|
||||
|
||||
#undef STBR__NEXT_MEMPTR
|
||||
|
||||
@ -339,8 +341,8 @@ STBRDEF stbr_size_t stbr_calculate_memory(int input_w, int input_h, int input_st
|
||||
|
||||
int info_size = sizeof(stbr__info);
|
||||
int decode_buffer_size = input_w * channels * sizeof(float);
|
||||
int contributors_size = stbr__get_total_contributors(filter, input_w, output_w) * sizeof(stbr__contributors);
|
||||
int coefficients_size = stbr__get_total_contributors(filter, input_w, output_w) * sizeof(float);
|
||||
int contributors_size = output_w * sizeof(stbr__contributors);
|
||||
int coefficients_size = stbr__get_total_coefficients(filter, input_w, output_w) * sizeof(float);
|
||||
|
||||
return info_size + decode_buffer_size + contributors_size + coefficients_size;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user