X-Git-Url: http://git.ffmpeg.org/gitweb/ffmpeg.git/blobdiff_plain/36ef5369ee9b336febc2c270f8718cec4476cb85..45bde93eefa78c1bdb0936109fbd2e2fb27fbfe7:/libavcodec/sunrastenc.c diff --git a/libavcodec/sunrastenc.c b/libavcodec/sunrastenc.c index 8bcfdf4..25ae9bd 100644 --- a/libavcodec/sunrastenc.c +++ b/libavcodec/sunrastenc.c @@ -25,7 +25,6 @@ #include "sunrast.h" typedef struct SUNRASTContext { - AVFrame picture; PutByteContext p; int depth; ///< depth of pixel int length; ///< length (bytes) of image @@ -154,23 +153,26 @@ static av_cold int sunrast_encode_init(AVCodecContext *avctx) return AVERROR(EINVAL); } - avctx->coded_frame = &s->picture; + avctx->coded_frame = av_frame_alloc(); + if (!avctx->coded_frame) + return AVERROR(ENOMEM); + avctx->coded_frame->key_frame = 1; avctx->coded_frame->pict_type = AV_PICTURE_TYPE_I; s->maptype = RMT_NONE; s->maplength = 0; switch (avctx->pix_fmt) { - case PIX_FMT_MONOWHITE: + case AV_PIX_FMT_MONOWHITE: s->depth = 1; break; - case PIX_FMT_PAL8 : + case AV_PIX_FMT_PAL8 : s->maptype = RMT_EQUAL_RGB; s->maplength = 3 * 256; - case PIX_FMT_GRAY8: + case AV_PIX_FMT_GRAY8: s->depth = 8; break; - case PIX_FMT_BGR24: + case AV_PIX_FMT_BGR24: s->depth = 24; break; default: @@ -207,6 +209,12 @@ static int sunrast_encode_frame(AVCodecContext *avctx, AVPacket *avpkt, return 0; } +static av_cold int sunrast_encode_close(AVCodecContext *avctx) +{ + av_frame_free(&avctx->coded_frame); + return 0; +} + static const AVCodecDefault sunrast_defaults[] = { { "coder", "rle" }, { NULL }, @@ -214,16 +222,17 @@ static const AVCodecDefault sunrast_defaults[] = { AVCodec ff_sunrast_encoder = { .name = "sunrast", + .long_name = NULL_IF_CONFIG_SMALL("Sun Rasterfile image"), .type = AVMEDIA_TYPE_VIDEO, .id = AV_CODEC_ID_SUNRAST, .priv_data_size = sizeof(SUNRASTContext), .init = sunrast_encode_init, + .close = sunrast_encode_close, .encode2 = sunrast_encode_frame, .defaults = sunrast_defaults, - .pix_fmts = (const enum PixelFormat[]){ PIX_FMT_BGR24, - PIX_FMT_PAL8, - PIX_FMT_GRAY8, - PIX_FMT_MONOWHITE, - PIX_FMT_NONE }, - .long_name = NULL_IF_CONFIG_SMALL("Sun Rasterfile image"), + .pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_BGR24, + AV_PIX_FMT_PAL8, + AV_PIX_FMT_GRAY8, + AV_PIX_FMT_MONOWHITE, + AV_PIX_FMT_NONE }, };