return -1;
rcc->entry = av_mallocz(i * sizeof(RateControlEntry));
rcc->num_entries = i;
+ if (!rcc->entry)
+ return AVERROR(ENOMEM);
/* init all to skipped p frames
* (with b frames we might have a not encoded frame at the end FIXME) */
p = next;
}
- if (init_pass2(s) < 0)
+ if (init_pass2(s) < 0) {
+ ff_rate_control_uninit(s);
return -1;
+ }
// FIXME maybe move to end
if ((s->avctx->flags & CODEC_FLAG_PASS2) && s->avctx->rc_strategy == FF_RC_STRATEGY_XVID) {
qscale = av_malloc(sizeof(double) * rcc->num_entries);
blurred_qscale = av_malloc(sizeof(double) * rcc->num_entries);
+ if (!qscale || !blurred_qscale) {
+ av_free(qscale);
+ av_free(blurred_qscale);
+ return AVERROR(ENOMEM);
+ }
toobig = 0;
for (step = 256 * 256; step > 0.0000001; step *= 0.5) {