Browse Source

avfilter/vf_pullup: Factor free_field_queue() out

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
tags/n2.2-rc1
Michael Niedermayer 11 years ago
parent
commit
8f9569cfac
1 changed files with 17 additions and 13 deletions
  1. +17
    -13
      libavfilter/vf_pullup.c

+ 17
- 13
libavfilter/vf_pullup.c View File

@@ -126,6 +126,22 @@ static int alloc_metrics(PullupContext *s, PullupField *f)
return 0;
}

static void free_field_queue(PullupField *head, PullupField **last)
{
PullupField *f = head;
while (f) {
av_free(f->diffs);
av_free(f->combs);
av_free(f->vars);
if (f == *last) {
av_freep(last);
break;
}
f = f->next;
av_freep(&f->prev);
};
}

static PullupField *make_field_queue(PullupContext *s, int len)
{
PullupField *head, *f;
@@ -714,21 +730,9 @@ end:
static av_cold void uninit(AVFilterContext *ctx)
{
PullupContext *s = ctx->priv;
PullupField *f;
int i;

f = s->head;
while (f) {
av_free(f->diffs);
av_free(f->combs);
av_free(f->vars);
if (f == s->last) {
av_freep(&s->last);
break;
}
f = f->next;
av_freep(&f->prev);
};
free_field_queue(s->head, &s->last);

for (i = 0; i < FF_ARRAY_ELEMS(s->buffers); i++) {
av_freep(&s->buffers[i].planes[0]);


Loading…
Cancel
Save