Mercurial > libavcodec.hg
changeset 10399:136334ad62b3 libavcodec
Release frame after decoding is done
author | kostya |
---|---|
date | Wed, 14 Oct 2009 05:28:24 +0000 |
parents | 11b685acd280 |
children | 866dffa620d1 |
files | indeo2.c loco.c qdrw.c truemotion2.c ulti.c wnv1.c xl.c |
diffstat | 7 files changed, 78 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/indeo2.c Tue Oct 13 20:48:51 2009 +0000 +++ b/indeo2.c Wed Oct 14 05:28:24 2009 +0000 @@ -213,6 +213,17 @@ return 0; } +static av_cold int ir2_decode_end(AVCodecContext *avctx){ + Ir2Context * const ic = avctx->priv_data; + AVFrame *pic = &ic->picture; + + if (pic->data[0]) + avctx->release_buffer(avctx, pic); + av_freep(&ic->picture); + + return 0; +} + AVCodec indeo2_decoder = { "indeo2", CODEC_TYPE_VIDEO, @@ -220,7 +231,7 @@ sizeof(Ir2Context), ir2_decode_init, NULL, - NULL, + ir2_decode_end, ir2_decode_frame, CODEC_CAP_DR1, .long_name = NULL_IF_CONFIG_SMALL("Intel Indeo 2"),
--- a/loco.c Tue Oct 13 20:48:51 2009 +0000 +++ b/loco.c Wed Oct 14 05:28:24 2009 +0000 @@ -275,6 +275,17 @@ return 0; } +static av_cold int decode_end(AVCodecContext *avctx){ + LOCOContext * const l = avctx->priv_data; + AVFrame *pic = &l->pic; + + if (pic->data[0]) + avctx->release_buffer(avctx, pic); + av_freep(&l->pic); + + return 0; +} + AVCodec loco_decoder = { "loco", CODEC_TYPE_VIDEO, @@ -282,7 +293,7 @@ sizeof(LOCOContext), decode_init, NULL, - NULL, + decode_end, decode_frame, CODEC_CAP_DR1, .long_name = NULL_IF_CONFIG_SMALL("LOCO"),
--- a/qdrw.c Tue Oct 13 20:48:51 2009 +0000 +++ b/qdrw.c Wed Oct 14 05:28:24 2009 +0000 @@ -140,6 +140,17 @@ return 0; } +static av_cold int decode_end(AVCodecContext *avctx){ + QdrawContext * const a = avctx->priv_data; + AVFrame *pic = &a->pic; + + if (pic->data[0]) + avctx->release_buffer(avctx, pic); + av_freep(&a->pic); + + return 0; +} + AVCodec qdraw_decoder = { "qdraw", CODEC_TYPE_VIDEO, @@ -147,7 +158,7 @@ sizeof(QdrawContext), decode_init, NULL, - NULL, + decode_end, decode_frame, CODEC_CAP_DR1, .long_name = NULL_IF_CONFIG_SMALL("Apple QuickDraw"),
--- a/truemotion2.c Tue Oct 13 20:48:51 2009 +0000 +++ b/truemotion2.c Wed Oct 14 05:28:24 2009 +0000 @@ -845,6 +845,7 @@ static av_cold int decode_end(AVCodecContext *avctx){ TM2Context * const l = avctx->priv_data; + AVFrame *pic = &l->pic; int i; if(l->last) @@ -862,6 +863,11 @@ av_free(l->U2); av_free(l->V2); } + + if (pic->data[0]) + avctx->release_buffer(avctx, pic); + av_freep(&l->pic); + return 0; }
--- a/ulti.c Tue Oct 13 20:48:51 2009 +0000 +++ b/ulti.c Wed Oct 14 05:28:24 2009 +0000 @@ -55,6 +55,17 @@ return 0; } +static av_cold int ulti_decode_end(AVCodecContext *avctx){ + UltimotionDecodeContext *s = avctx->priv_data; + AVFrame *pic = &s->frame; + + if (pic->data[0]) + avctx->release_buffer(avctx, pic); + av_freep(&s->frame); + + return 0; +} + static const int block_coords[8] = // 4x4 block coords in 8x8 superblock { 0, 0, 0, 4, 4, 4, 4, 0}; @@ -401,7 +412,7 @@ sizeof(UltimotionDecodeContext), ulti_decode_init, NULL, - NULL, + ulti_decode_end, ulti_decode_frame, CODEC_CAP_DR1, NULL,
--- a/wnv1.c Tue Oct 13 20:48:51 2009 +0000 +++ b/wnv1.c Wed Oct 14 05:28:24 2009 +0000 @@ -143,6 +143,17 @@ return 0; } +static av_cold int decode_end(AVCodecContext *avctx){ + WNV1Context * const l = avctx->priv_data; + AVFrame *pic = &l->pic; + + if (pic->data[0]) + avctx->release_buffer(avctx, pic); + av_freep(&l->pic); + + return 0; +} + AVCodec wnv1_decoder = { "wnv1", CODEC_TYPE_VIDEO, @@ -150,7 +161,7 @@ sizeof(WNV1Context), decode_init, NULL, - NULL, + decode_end, decode_frame, CODEC_CAP_DR1, .long_name = NULL_IF_CONFIG_SMALL("Winnov WNV1"),
--- a/xl.c Tue Oct 13 20:48:51 2009 +0000 +++ b/xl.c Wed Oct 14 05:28:24 2009 +0000 @@ -128,6 +128,17 @@ return 0; } +static av_cold int decode_end(AVCodecContext *avctx){ + VideoXLContext * const a = avctx->priv_data; + AVFrame *pic = &a->pic; + + if (pic->data[0]) + avctx->release_buffer(avctx, pic); + av_freep(&a->pic); + + return 0; +} + AVCodec xl_decoder = { "xl", CODEC_TYPE_VIDEO, @@ -135,7 +146,7 @@ sizeof(VideoXLContext), decode_init, NULL, - NULL, + decode_end, decode_frame, CODEC_CAP_DR1, .long_name = NULL_IF_CONFIG_SMALL("Miro VideoXL"),