From 6a08d7fcc528aad1aff7a1e1e4ae9edd4f8048f2 Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Sat, 9 Nov 2013 10:14:46 +0100 Subject: sgienc: use the AVFrame API properly. --- libavcodec/sgienc.c | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) (limited to 'libavcodec/sgienc.c') diff --git a/libavcodec/sgienc.c b/libavcodec/sgienc.c index 6a595c75fb..902437f34d 100644 --- a/libavcodec/sgienc.c +++ b/libavcodec/sgienc.c @@ -28,16 +28,11 @@ #define SGI_SINGLE_CHAN 2 #define SGI_MULTI_CHAN 3 -typedef struct SgiContext { - AVFrame picture; -} SgiContext; - static av_cold int encode_init(AVCodecContext *avctx) { - SgiContext *s = avctx->priv_data; - - avcodec_get_frame_defaults(&s->picture); - avctx->coded_frame = &s->picture; + avctx->coded_frame = av_frame_alloc(); + if (!avctx->coded_frame) + return AVERROR(ENOMEM); return 0; } @@ -45,16 +40,14 @@ static av_cold int encode_init(AVCodecContext *avctx) static int encode_frame(AVCodecContext *avctx, AVPacket *pkt, const AVFrame *frame, int *got_packet) { - SgiContext *s = avctx->priv_data; - AVFrame * const p = &s->picture; + const AVFrame * const p = frame; uint8_t *offsettab, *lengthtab, *in_buf, *encode_buf, *buf; int x, y, z, length, tablesize, ret; unsigned int width, height, depth, dimension; unsigned char *end_buf; - *p = *frame; - p->pict_type = AV_PICTURE_TYPE_I; - p->key_frame = 1; + avctx->coded_frame->pict_type = AV_PICTURE_TYPE_I; + avctx->coded_frame->key_frame = 1; width = avctx->width; height = avctx->height; @@ -170,14 +163,20 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt, return 0; } +static av_cold int encode_close(AVCodecContext *avctx) +{ + av_frame_free(&avctx->coded_frame); + return 0; +} + AVCodec ff_sgi_encoder = { .name = "sgi", .long_name = NULL_IF_CONFIG_SMALL("SGI image"), .type = AVMEDIA_TYPE_VIDEO, .id = AV_CODEC_ID_SGI, - .priv_data_size = sizeof(SgiContext), .init = encode_init, .encode2 = encode_frame, + .close = encode_close, .pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_RGB24, AV_PIX_FMT_RGBA, AV_PIX_FMT_GRAY8, AV_PIX_FMT_NONE }, -- cgit v1.2.3