From 37e0b997a8d6695abb0dd4bac886a86104d68a3c Mon Sep 17 00:00:00 2001 From: Vitor Sessak Date: Sun, 10 Feb 2008 18:04:52 +0000 Subject: [PATCH] Factor duplicated loop Originally committed as revision 11899 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavfilter/formats.c | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/libavfilter/formats.c b/libavfilter/formats.c index 4ce1ff70db..d7d0322963 100644 --- a/libavfilter/formats.c +++ b/libavfilter/formats.c @@ -21,6 +21,16 @@ #include "avfilter.h" +/** merge and update all the references */ +static void merge_ref(AVFilterFormats *ret, AVFilterFormats *a) +{ + int i; + for(i = 0; i < a->refcount; i ++) { + ret->refs[ret->refcount] = a->refs[i]; + *ret->refs[ret->refcount++] = ret; + } +} + AVFilterFormats *avfilter_merge_formats(AVFilterFormats *a, AVFilterFormats *b) { AVFilterFormats *ret; @@ -43,16 +53,10 @@ AVFilterFormats *avfilter_merge_formats(AVFilterFormats *a, AVFilterFormats *b) return NULL; } - /* merge and update all the references */ ret->refs = av_malloc(sizeof(AVFilterFormats**)*(a->refcount+b->refcount)); - for(i = 0; i < a->refcount; i ++) { - ret->refs[ret->refcount] = a->refs[i]; - *ret->refs[ret->refcount++] = ret; - } - for(i = 0; i < b->refcount; i ++) { - ret->refs[ret->refcount] = b->refs[i]; - *ret->refs[ret->refcount++] = ret; - } + + merge_ref(ret, a); + merge_ref(ret, b); av_free(a->refs); av_free(a->formats);