diff --git a/libavcodec/bintext.c b/libavcodec/bintext.c index b14a2a9c29618124cbf4cfbe472ae77d5909a033..d85f2c2dd443504d8d51f32ec36e59b5f622c4a0 100644 --- a/libavcodec/bintext.c +++ b/libavcodec/bintext.c @@ -96,11 +96,6 @@ static av_cold int decode_init(AVCodecContext *avctx) if (avctx->width < FONT_WIDTH || avctx->height < s->font_height) return AVERROR_INVALIDDATA; - - s->frame = av_frame_alloc(); - if (!s->frame) - return AVERROR(ENOMEM); - return 0; } @@ -149,8 +144,9 @@ static int decode_frame(AVCodecContext *avctx, if ((avctx->width / FONT_WIDTH) * (avctx->height / s->font_height) / 256 > buf_size) return AVERROR_INVALIDDATA; + s->frame = data; s->x = s->y = 0; - if ((ret = ff_reget_buffer(avctx, s->frame)) < 0) + if ((ret = ff_get_buffer(avctx, s->frame, 0)) < 0) return ret; s->frame->pict_type = AV_PICTURE_TYPE_I; s->frame->palette_has_changed = 1; @@ -208,21 +204,10 @@ static int decode_frame(AVCodecContext *avctx, } } - if ((ret = av_frame_ref(data, s->frame)) < 0) - return ret; *got_frame = 1; return buf_size; } -static av_cold int decode_end(AVCodecContext *avctx) -{ - XbinContext *s = avctx->priv_data; - - av_frame_free(&s->frame); - - return 0; -} - #if CONFIG_BINTEXT_DECODER AVCodec ff_bintext_decoder = { .name = "bintext", @@ -231,7 +216,6 @@ AVCodec ff_bintext_decoder = { .id = AV_CODEC_ID_BINTEXT, .priv_data_size = sizeof(XbinContext), .init = decode_init, - .close = decode_end, .decode = decode_frame, .capabilities = AV_CODEC_CAP_DR1, }; @@ -244,7 +228,6 @@ AVCodec ff_xbin_decoder = { .id = AV_CODEC_ID_XBIN, .priv_data_size = sizeof(XbinContext), .init = decode_init, - .close = decode_end, .decode = decode_frame, .capabilities = AV_CODEC_CAP_DR1, }; @@ -257,7 +240,6 @@ AVCodec ff_idf_decoder = { .id = AV_CODEC_ID_IDF, .priv_data_size = sizeof(XbinContext), .init = decode_init, - .close = decode_end, .decode = decode_frame, .capabilities = AV_CODEC_CAP_DR1, };