From 759001c534287a96dc96d1e274665feb7059145d Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Wed, 21 Nov 2012 21:34:46 +0100 Subject: lavc decoders: work with refcounted frames. --- libavcodec/targa.c | 30 ++---------------------------- 1 file changed, 2 insertions(+), 28 deletions(-) (limited to 'libavcodec/targa.c') diff --git a/libavcodec/targa.c b/libavcodec/targa.c index 54eea7df65..993f02c011 100644 --- a/libavcodec/targa.c +++ b/libavcodec/targa.c @@ -27,7 +27,6 @@ #include "targa.h" typedef struct TargaContext { - AVFrame picture; GetByteContext gb; int color_type; @@ -99,8 +98,7 @@ static int decode_frame(AVCodecContext *avctx, AVPacket *avpkt) { TargaContext * const s = avctx->priv_data; - AVFrame *picture = data; - AVFrame * const p = &s->picture; + AVFrame * const p = data; uint8_t *dst; int stride; int idlen, compr, y, w, h, bpp, flags, ret; @@ -144,14 +142,11 @@ static int decode_frame(AVCodecContext *avctx, return AVERROR_INVALIDDATA; } - if(s->picture.data[0]) - avctx->release_buffer(avctx, &s->picture); - if ((ret = av_image_check_size(w, h, 0, avctx)) < 0) return ret; if(w != avctx->width || h != avctx->height) avcodec_set_dimensions(avctx, w, h); - if ((ret = ff_get_buffer(avctx, p)) < 0){ + if ((ret = ff_get_buffer(avctx, p, 0)) < 0){ av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n"); return ret; } @@ -232,37 +227,16 @@ static int decode_frame(AVCodecContext *avctx, } } - *picture = s->picture; *got_frame = 1; return avpkt->size; } -static av_cold int targa_init(AVCodecContext *avctx){ - TargaContext *s = avctx->priv_data; - - avcodec_get_frame_defaults(&s->picture); - avctx->coded_frame = &s->picture; - - return 0; -} - -static av_cold int targa_end(AVCodecContext *avctx){ - TargaContext *s = avctx->priv_data; - - if(s->picture.data[0]) - avctx->release_buffer(avctx, &s->picture); - - return 0; -} - AVCodec ff_targa_decoder = { .name = "targa", .type = AVMEDIA_TYPE_VIDEO, .id = AV_CODEC_ID_TARGA, .priv_data_size = sizeof(TargaContext), - .init = targa_init, - .close = targa_end, .decode = decode_frame, .capabilities = CODEC_CAP_DR1, .long_name = NULL_IF_CONFIG_SMALL("Truevision Targa image"), -- cgit v1.2.3