ff_h264chroma_init(&v->h264chroma, 8);
ff_qpeldsp_init(&s->qdsp);
- // Must happen after calling ff_vc1_decode_end
- // to avoid de-allocating the sprite_output_frame
- v->sprite_output_frame = av_frame_alloc();
- if (!v->sprite_output_frame)
- return AVERROR(ENOMEM);
-
avctx->has_b_frames = !!avctx->max_b_frames;
if (v->color_prim == 1 || v->color_prim == 5 || v->color_prim == 6)
v->sprite_height > 1 << 14 ||
v->output_width > 1 << 14 ||
v->output_height > 1 << 14) {
- ret = AVERROR_INVALIDDATA;
- goto error;
+ return AVERROR_INVALIDDATA;
}
if ((v->sprite_width&1) || (v->sprite_height&1)) {
avpriv_request_sample(avctx, "odd sprites support");
- ret = AVERROR_PATCHWELCOME;
- goto error;
+ return AVERROR_PATCHWELCOME;
}
}
return 0;
-error:
- av_frame_free(&v->sprite_output_frame);
- return ret;
}
/** Close a VC1/WMV3 decoder
avctx->height = avctx->coded_height = v->output_height;
if (avctx->skip_frame >= AVDISCARD_NONREF)
goto end;
+ if (!v->sprite_output_frame &&
+ !(v->sprite_output_frame = av_frame_alloc())) {
+ ret = AVERROR(ENOMEM);
+ goto err;
+ }
#if CONFIG_WMV3IMAGE_DECODER || CONFIG_VC1IMAGE_DECODER
if ((ret = vc1_decode_sprites(v, &s->gb)) < 0)
goto err;