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:42:36 +0100 |
commit | 6a08d7fcc528aad1aff7a1e1e4ae9edd4f8048f2 (patch) | |
tree | e8fa979474c48e6e2da31b3b70b40ad07111fe81 | |
parent | 730bac7bab3c7dcd9fcb7c70f154e5f4cfaef9a7 (diff) | |
download | ffmpeg-6a08d7fcc528aad1aff7a1e1e4ae9edd4f8048f2.tar.gz |
sgienc: use the AVFrame API properly.
-rw-r--r-- | libavcodec/sgienc.c | 27 |
1 files changed, 13 insertions, 14 deletions
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 }, |