|
|
|
@@ -69,16 +69,34 @@ void *av_fast_realloc(void *ptr, unsigned int *size, size_t min_size) |
|
|
|
return ptr; |
|
|
|
} |
|
|
|
|
|
|
|
void av_fast_malloc(void *ptr, unsigned int *size, size_t min_size) |
|
|
|
static inline int ff_fast_malloc(void *ptr, unsigned int *size, size_t min_size, int zero_realloc) |
|
|
|
{ |
|
|
|
void **p = ptr; |
|
|
|
if (min_size < *size) |
|
|
|
return; |
|
|
|
return 0; |
|
|
|
min_size= FFMAX(17*min_size/16 + 32, min_size); |
|
|
|
av_free(*p); |
|
|
|
*p = av_malloc(min_size); |
|
|
|
*p = zero_realloc ? av_mallocz(min_size) : av_malloc(min_size); |
|
|
|
if (!*p) min_size = 0; |
|
|
|
*size= min_size; |
|
|
|
return 1; |
|
|
|
} |
|
|
|
|
|
|
|
void av_fast_malloc(void *ptr, unsigned int *size, size_t min_size) |
|
|
|
{ |
|
|
|
ff_fast_malloc(ptr, size, min_size, 0); |
|
|
|
} |
|
|
|
|
|
|
|
void av_fast_padded_malloc(void *ptr, unsigned int *size, size_t min_size) |
|
|
|
{ |
|
|
|
uint8_t **p = ptr; |
|
|
|
if (min_size > SIZE_MAX - FF_INPUT_BUFFER_PADDING_SIZE) { |
|
|
|
*p = NULL; |
|
|
|
*size = 0; |
|
|
|
return; |
|
|
|
} |
|
|
|
if (!ff_fast_malloc(p, size, min_size + FF_INPUT_BUFFER_PADDING_SIZE, 1)) |
|
|
|
memset(*p + min_size, 0, FF_INPUT_BUFFER_PADDING_SIZE); |
|
|
|
} |
|
|
|
|
|
|
|
/* encoder management */ |
|
|
|
|