[FFmpeg-cvslog] cmdutils: move grow_array() from avconv to cmdutils.
Anton Khirnov
git at videolan.org
Mon Sep 5 03:17:43 CEST 2011
ffmpeg | branch: master | Anton Khirnov <anton at khirnov.net> | Mon Aug 29 07:11:57 2011 +0200| [cac651c83417dde3b64a6620cac32f078c9c399f] | committer: Anton Khirnov
cmdutils: move grow_array() from avconv to cmdutils.
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=cac651c83417dde3b64a6620cac32f078c9c399f
---
avconv.c | 20 --------------------
cmdutils.c | 19 +++++++++++++++++++
cmdutils.h | 10 ++++++++++
ffmpeg.c | 20 --------------------
4 files changed, 29 insertions(+), 40 deletions(-)
diff --git a/avconv.c b/avconv.c
index 52a7108..33da836 100644
--- a/avconv.c
+++ b/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)
{
if(codec && codec->sample_fmts){
diff --git a/cmdutils.c b/cmdutils.c
index a86c55b..9e34e43 100644
--- a/cmdutils.c
+++ b/cmdutils.c
@@ -931,4 +931,23 @@ int get_filtered_video_frame(AVFilterContext *ctx, AVFrame *frame,
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 */
diff --git a/cmdutils.h b/cmdutils.h
index 65b1ae4..2173f0d 100644
--- a/cmdutils.h
+++ b/cmdutils.h
@@ -333,4 +333,14 @@ int get_filtered_video_frame(AVFilterContext *sink, AVFrame *frame,
*/
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 */
diff --git a/ffmpeg.c b/ffmpeg.c
index eec028f..242cd3f 100644
--- a/ffmpeg.c
+++ b/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)
{
if(codec && codec->sample_fmts){
More information about the ffmpeg-cvslog
mailing list