Factor duplicated loop

Originally committed as revision 11899 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
Vitor Sessak 2008-02-10 18:04:52 +00:00
parent d3a4e41c8a
commit 37e0b997a8

View File

@ -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);