X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Fsunrastenc.c;h=411d184a1468d7feddc2f42b9f583270b92845d7;hb=be00ec832c519427cd92218abac77dafdc1d5487;hp=ddf624eee280fbaed1192cd6e0495ed98a69e4f0;hpb=f1ccd076801444ab7f524cb13e0886faaf10fd50;p=ffmpeg diff --git a/libavcodec/sunrastenc.c b/libavcodec/sunrastenc.c index ddf624eee28..411d184a146 100644 --- a/libavcodec/sunrastenc.c +++ b/libavcodec/sunrastenc.c @@ -19,6 +19,8 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "libavutil/opt.h" + #include "avcodec.h" #include "bytestream.h" #include "internal.h" @@ -141,6 +143,8 @@ static av_cold int sunrast_encode_init(AVCodecContext *avctx) { SUNRASTContext *s = avctx->priv_data; +#if FF_API_CODER_TYPE +FF_DISABLE_DEPRECATION_WARNINGS switch (avctx->coder_type) { case FF_CODER_TYPE_RLE: s->type = RT_BYTE_ENCODED; @@ -152,6 +156,11 @@ static av_cold int sunrast_encode_init(AVCodecContext *avctx) av_log(avctx, AV_LOG_ERROR, "invalid coder_type\n"); return AVERROR(EINVAL); } +FF_ENABLE_DEPRECATION_WARNINGS + if (s->type != RT_BYTE_ENCODED && s->type != RT_STANDARD) +#endif + // adjust boolean option to RT equivalent + s->type++; #if FF_API_CODED_FRAME FF_DISABLE_DEPRECATION_WARNINGS @@ -180,8 +189,7 @@ FF_ENABLE_DEPRECATION_WARNINGS return AVERROR_BUG; } s->length = avctx->height * (FFALIGN(avctx->width * s->depth, 16) >> 3); - s->size = 32 + s->maplength + - s->length * (s->type == RT_BYTE_ENCODED ? 2 : 1); + s->size = 32 + s->maplength + s->length * s->type; return 0; } @@ -210,10 +218,27 @@ static int sunrast_encode_frame(AVCodecContext *avctx, AVPacket *avpkt, return 0; } +#define OFFSET(x) offsetof(SUNRASTContext, x) +#define VE AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_ENCODING_PARAM +static const AVOption options[] = { + { "rle", "Use run-length compression", OFFSET(type), AV_OPT_TYPE_INT, { .i64 = 1 }, 0, 1, VE }, + + { NULL }, +}; + +static const AVClass utvideo_class = { + .class_name = "sunrast", + .item_name = av_default_item_name, + .option = options, + .version = LIBAVUTIL_VERSION_INT, +}; + +#if FF_API_CODER_TYPE static const AVCodecDefault sunrast_defaults[] = { { "coder", "rle" }, { NULL }, }; +#endif AVCodec ff_sunrast_encoder = { .name = "sunrast", @@ -223,7 +248,9 @@ AVCodec ff_sunrast_encoder = { .priv_data_size = sizeof(SUNRASTContext), .init = sunrast_encode_init, .encode2 = sunrast_encode_frame, +#if FF_API_CODER_TYPE .defaults = sunrast_defaults, +#endif .pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_BGR24, AV_PIX_FMT_PAL8, AV_PIX_FMT_GRAY8,