if (order <= 0 || order > MAXORDER || cutoff_ratio >= 1.0)
return NULL;
- FF_ALLOCZ_OR_GOTO(avc, c, sizeof(FFIIRFilterCoeffs),
- init_fail);
- FF_ALLOC_OR_GOTO(avc, c->cx, sizeof(c->cx[0]) * ((order >> 1) + 1),
- init_fail);
- FF_ALLOC_OR_GOTO(avc, c->cy, sizeof(c->cy[0]) * order,
- init_fail);
+ if (!(c = av_mallocz(sizeof(*c))) ||
+ !(c->cx = av_malloc (sizeof(c->cx[0]) * ((order >> 1) + 1))) ||
+ !(c->cy = av_malloc (sizeof(c->cy[0]) * order)))
+ goto free;
c->order = order;
switch (filt_type) {
break;
default:
av_log(avc, AV_LOG_ERROR, "filter type is not currently implemented\n");
- goto init_fail;
+ goto free;
}
if (!ret)
return c;
-
-init_fail:
+free:
ff_iir_filter_free_coeffsp(&c);
return NULL;
}