mirror of https://git.ffmpeg.org/ffmpeg.git
avcodec/vp56: Cleanup generically in case of init failure
Reviewed-by: Peter Ross <pross@xvid.org> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
This commit is contained in:
parent
90e5eef731
commit
55379dac53
|
@ -306,4 +306,5 @@ const AVCodec ff_vp5_decoder = {
|
||||||
.close = ff_vp56_free,
|
.close = ff_vp56_free,
|
||||||
.decode = ff_vp56_decode_frame,
|
.decode = ff_vp56_decode_frame,
|
||||||
.capabilities = AV_CODEC_CAP_DR1,
|
.capabilities = AV_CODEC_CAP_DR1,
|
||||||
|
.caps_internal = FF_CODEC_CAP_INIT_CLEANUP,
|
||||||
};
|
};
|
||||||
|
|
|
@ -800,11 +800,9 @@ av_cold int ff_vp56_init_context(AVCodecContext *avctx, VP56Context *s,
|
||||||
|
|
||||||
for (i = 0; i < FF_ARRAY_ELEMS(s->frames); i++) {
|
for (i = 0; i < FF_ARRAY_ELEMS(s->frames); i++) {
|
||||||
s->frames[i] = av_frame_alloc();
|
s->frames[i] = av_frame_alloc();
|
||||||
if (!s->frames[i]) {
|
if (!s->frames[i])
|
||||||
ff_vp56_free(avctx);
|
|
||||||
return AVERROR(ENOMEM);
|
return AVERROR(ENOMEM);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
s->edge_emu_buffer_alloc = NULL;
|
s->edge_emu_buffer_alloc = NULL;
|
||||||
|
|
||||||
s->above_blocks = NULL;
|
s->above_blocks = NULL;
|
||||||
|
|
|
@ -217,6 +217,10 @@ struct vp56_context {
|
||||||
|
|
||||||
|
|
||||||
int ff_vp56_init(AVCodecContext *avctx, int flip, int has_alpha);
|
int ff_vp56_init(AVCodecContext *avctx, int flip, int has_alpha);
|
||||||
|
/**
|
||||||
|
* Initializes an VP56Context. Expects its caller to clean up
|
||||||
|
* in case of error.
|
||||||
|
*/
|
||||||
int ff_vp56_init_context(AVCodecContext *avctx, VP56Context *s,
|
int ff_vp56_init_context(AVCodecContext *avctx, VP56Context *s,
|
||||||
int flip, int has_alpha);
|
int flip, int has_alpha);
|
||||||
int ff_vp56_free(AVCodecContext *avctx);
|
int ff_vp56_free(AVCodecContext *avctx);
|
||||||
|
|
|
@ -720,6 +720,7 @@ const AVCodec ff_vp6_decoder = {
|
||||||
.close = vp6_decode_free,
|
.close = vp6_decode_free,
|
||||||
.decode = ff_vp56_decode_frame,
|
.decode = ff_vp56_decode_frame,
|
||||||
.capabilities = AV_CODEC_CAP_DR1,
|
.capabilities = AV_CODEC_CAP_DR1,
|
||||||
|
.caps_internal = FF_CODEC_CAP_INIT_CLEANUP,
|
||||||
};
|
};
|
||||||
|
|
||||||
/* flash version, not flipped upside-down */
|
/* flash version, not flipped upside-down */
|
||||||
|
@ -733,6 +734,7 @@ const AVCodec ff_vp6f_decoder = {
|
||||||
.close = vp6_decode_free,
|
.close = vp6_decode_free,
|
||||||
.decode = ff_vp56_decode_frame,
|
.decode = ff_vp56_decode_frame,
|
||||||
.capabilities = AV_CODEC_CAP_DR1,
|
.capabilities = AV_CODEC_CAP_DR1,
|
||||||
|
.caps_internal = FF_CODEC_CAP_INIT_CLEANUP,
|
||||||
};
|
};
|
||||||
|
|
||||||
/* flash version, not flipped upside-down, with alpha channel */
|
/* flash version, not flipped upside-down, with alpha channel */
|
||||||
|
|
Loading…
Reference in New Issue