mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-03-28 12:32:17 +02:00
avcodec/truemotion2: Cleanup generically on init failure
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
This commit is contained in:
parent
52cd5508cc
commit
fa1d105a6c
@ -984,15 +984,6 @@ static av_cold int decode_init(AVCodecContext *avctx)
|
||||
if (!l->Y1_base || !l->Y2_base || !l->U1_base ||
|
||||
!l->V1_base || !l->U2_base || !l->V2_base ||
|
||||
!l->last || !l->clast) {
|
||||
av_freep(&l->Y1_base);
|
||||
av_freep(&l->Y2_base);
|
||||
av_freep(&l->U1_base);
|
||||
av_freep(&l->U2_base);
|
||||
av_freep(&l->V1_base);
|
||||
av_freep(&l->V2_base);
|
||||
av_freep(&l->last);
|
||||
av_freep(&l->clast);
|
||||
av_frame_free(&l->pic);
|
||||
return AVERROR(ENOMEM);
|
||||
}
|
||||
l->Y1 = l->Y1_base + l->y_stride * 4 + 4;
|
||||
@ -1014,14 +1005,13 @@ static av_cold int decode_end(AVCodecContext *avctx)
|
||||
av_freep(&l->clast);
|
||||
for (i = 0; i < TM2_NUM_STREAMS; i++)
|
||||
av_freep(&l->tokens[i]);
|
||||
if (l->Y1) {
|
||||
|
||||
av_freep(&l->Y1_base);
|
||||
av_freep(&l->U1_base);
|
||||
av_freep(&l->V1_base);
|
||||
av_freep(&l->Y2_base);
|
||||
av_freep(&l->U2_base);
|
||||
av_freep(&l->V2_base);
|
||||
}
|
||||
av_freep(&l->buffer);
|
||||
l->buffer_size = 0;
|
||||
|
||||
@ -1040,4 +1030,5 @@ AVCodec ff_truemotion2_decoder = {
|
||||
.close = decode_end,
|
||||
.decode = decode_frame,
|
||||
.capabilities = AV_CODEC_CAP_DR1,
|
||||
.caps_internal = FF_CODEC_CAP_INIT_CLEANUP,
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user