cmdutils: move grow_array() from avconv to cmdutils.
This commit is contained in:
parent
dad09ff93f
commit
cac651c834
20
avconv.c
20
avconv.c
@ -511,26 +511,6 @@ static void assert_codec_experimental(AVCodecContext *c, int encoder)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* similar to ff_dynarray_add() and av_fast_realloc() */
|
|
||||||
static void *grow_array(void *array, int elem_size, int *size, int new_size)
|
|
||||||
{
|
|
||||||
if (new_size >= INT_MAX / elem_size) {
|
|
||||||
fprintf(stderr, "Array too big.\n");
|
|
||||||
exit_program(1);
|
|
||||||
}
|
|
||||||
if (*size < new_size) {
|
|
||||||
uint8_t *tmp = av_realloc(array, new_size*elem_size);
|
|
||||||
if (!tmp) {
|
|
||||||
fprintf(stderr, "Could not alloc buffer.\n");
|
|
||||||
exit_program(1);
|
|
||||||
}
|
|
||||||
memset(tmp + *size*elem_size, 0, (new_size-*size) * elem_size);
|
|
||||||
*size = new_size;
|
|
||||||
return tmp;
|
|
||||||
}
|
|
||||||
return array;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void choose_sample_fmt(AVStream *st, AVCodec *codec)
|
static void choose_sample_fmt(AVStream *st, AVCodec *codec)
|
||||||
{
|
{
|
||||||
if(codec && codec->sample_fmts){
|
if(codec && codec->sample_fmts){
|
||||||
|
19
cmdutils.c
19
cmdutils.c
@ -931,4 +931,23 @@ int get_filtered_video_frame(AVFilterContext *ctx, AVFrame *frame,
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void *grow_array(void *array, int elem_size, int *size, int new_size)
|
||||||
|
{
|
||||||
|
if (new_size >= INT_MAX / elem_size) {
|
||||||
|
av_log(NULL, AV_LOG_ERROR, "Array too big.\n");
|
||||||
|
exit_program(1);
|
||||||
|
}
|
||||||
|
if (*size < new_size) {
|
||||||
|
uint8_t *tmp = av_realloc(array, new_size*elem_size);
|
||||||
|
if (!tmp) {
|
||||||
|
av_log(NULL, AV_LOG_ERROR, "Could not alloc buffer.\n");
|
||||||
|
exit_program(1);
|
||||||
|
}
|
||||||
|
memset(tmp + *size*elem_size, 0, (new_size-*size) * elem_size);
|
||||||
|
*size = new_size;
|
||||||
|
return tmp;
|
||||||
|
}
|
||||||
|
return array;
|
||||||
|
}
|
||||||
|
|
||||||
#endif /* CONFIG_AVFILTER */
|
#endif /* CONFIG_AVFILTER */
|
||||||
|
10
cmdutils.h
10
cmdutils.h
@ -333,4 +333,14 @@ int get_filtered_video_frame(AVFilterContext *sink, AVFrame *frame,
|
|||||||
*/
|
*/
|
||||||
void exit_program(int ret);
|
void exit_program(int ret);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Realloc array to hold new_size elements of elem_size.
|
||||||
|
* Calls exit_program() on failure.
|
||||||
|
*
|
||||||
|
* @param elem_size size in bytes of each element
|
||||||
|
* @param size new element count will be written here
|
||||||
|
* @return reallocated array
|
||||||
|
*/
|
||||||
|
void *grow_array(void *array, int elem_size, int *size, int new_size);
|
||||||
|
|
||||||
#endif /* LIBAV_CMDUTILS_H */
|
#endif /* LIBAV_CMDUTILS_H */
|
||||||
|
20
ffmpeg.c
20
ffmpeg.c
@ -529,26 +529,6 @@ static void assert_codec_experimental(AVCodecContext *c, int encoder)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* similar to ff_dynarray_add() and av_fast_realloc() */
|
|
||||||
static void *grow_array(void *array, int elem_size, int *size, int new_size)
|
|
||||||
{
|
|
||||||
if (new_size >= INT_MAX / elem_size) {
|
|
||||||
fprintf(stderr, "Array too big.\n");
|
|
||||||
exit_program(1);
|
|
||||||
}
|
|
||||||
if (*size < new_size) {
|
|
||||||
uint8_t *tmp = av_realloc(array, new_size*elem_size);
|
|
||||||
if (!tmp) {
|
|
||||||
fprintf(stderr, "Could not alloc buffer.\n");
|
|
||||||
exit_program(1);
|
|
||||||
}
|
|
||||||
memset(tmp + *size*elem_size, 0, (new_size-*size) * elem_size);
|
|
||||||
*size = new_size;
|
|
||||||
return tmp;
|
|
||||||
}
|
|
||||||
return array;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void choose_sample_fmt(AVStream *st, AVCodec *codec)
|
static void choose_sample_fmt(AVStream *st, AVCodec *codec)
|
||||||
{
|
{
|
||||||
if(codec && codec->sample_fmts){
|
if(codec && codec->sample_fmts){
|
||||||
|
Loading…
x
Reference in New Issue
Block a user