diff options
author | Anton Khirnov <anton@khirnov.net> | 2013-11-09 10:14:46 +0100 |
---|---|---|
committer | Anton Khirnov <anton@khirnov.net> | 2013-11-16 17:46:51 +0100 |
commit | fb26d761676ffbf3394b767b9c199947c160c344 (patch) | |
tree | 19ac986001c71e31f5144780ce3c65bbbdca72b5 /libavcodec/targaenc.c | |
parent | f26f71139faf3dfd23d0b7738178f233fe64247d (diff) | |
download | ffmpeg-fb26d761676ffbf3394b767b9c199947c160c344.tar.gz |
targaenc: use the AVFrame API properly.
Diffstat (limited to 'libavcodec/targaenc.c')
-rw-r--r-- | libavcodec/targaenc.c | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/libavcodec/targaenc.c b/libavcodec/targaenc.c index 610621fcc3..7679029643 100644 --- a/libavcodec/targaenc.c +++ b/libavcodec/targaenc.c @@ -29,10 +29,6 @@ #include "rle.h" #include "targa.h" -typedef struct TargaContext { - AVFrame picture; -} TargaContext; - /** * RLE compress the image, with maximum size of out_size * @param outbuf Output buffer @@ -154,23 +150,29 @@ static int targa_encode_frame(AVCodecContext *avctx, AVPacket *pkt, static av_cold int targa_encode_init(AVCodecContext *avctx) { - TargaContext *s = avctx->priv_data; + avctx->coded_frame = av_frame_alloc(); + if (!avctx->coded_frame) + return AVERROR(ENOMEM); - avcodec_get_frame_defaults(&s->picture); - s->picture.key_frame= 1; - s->picture.pict_type = AV_PICTURE_TYPE_I; - avctx->coded_frame= &s->picture; + avctx->coded_frame->key_frame = 1; + avctx->coded_frame->pict_type = AV_PICTURE_TYPE_I; return 0; } +static av_cold int targa_encode_close(AVCodecContext *avctx) +{ + av_frame_free(&avctx->coded_frame); + return 0; +} + AVCodec ff_targa_encoder = { .name = "targa", .long_name = NULL_IF_CONFIG_SMALL("Truevision Targa image"), .type = AVMEDIA_TYPE_VIDEO, .id = AV_CODEC_ID_TARGA, - .priv_data_size = sizeof(TargaContext), .init = targa_encode_init, + .close = targa_encode_close, .encode2 = targa_encode_frame, .pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_BGR24, AV_PIX_FMT_BGRA, AV_PIX_FMT_RGB555LE, AV_PIX_FMT_GRAY8, |