[FFmpeg-cvslog] r11892 - trunk/libavfilter/formats.c
vitor
subversion
Sun Feb 10 19:03:18 CET 2008
Author: vitor
Date: Sun Feb 10 19:03:18 2008
New Revision: 11892
Log:
avfilter_formats_unref() should remove the given reference, not the last
reference.
Modified:
trunk/libavfilter/formats.c
Modified: trunk/libavfilter/formats.c
==============================================================================
--- trunk/libavfilter/formats.c (original)
+++ trunk/libavfilter/formats.c Sun Feb 10 19:03:18 2008
@@ -109,8 +109,23 @@ void avfilter_formats_ref(AVFilterFormat
f->refs[f->refcount-1] = ref;
}
+static int find_ref_index(AVFilterFormats *f, AVFilterFormats **ref)
+{
+ int i;
+ for(i = 0; i < (*ref)->refcount; i ++)
+ if((*ref)->refs[i] == ref)
+ return i;
+ return -1;
+}
+
void avfilter_formats_unref(AVFilterFormats **ref)
{
+ int idx;
+
+ if((idx = find_ref_index(*ref, ref)) >= 0)
+ memmove((*ref)->refs + idx, (*ref)->refs + idx+1,
+ sizeof(AVFilterFormats**) * ((*ref)->refcount-idx-1));
+
if(!--(*ref)->refcount) {
av_free((*ref)->formats);
av_free((*ref)->refs);
More information about the ffmpeg-cvslog
mailing list