diff options
author | Vittorio Giovara <vittorio.giovara@gmail.com> | 2015-11-30 12:17:31 -0500 |
---|---|---|
committer | Vittorio Giovara <vittorio.giovara@gmail.com> | 2015-12-07 11:01:22 -0500 |
commit | be00ec832c519427cd92218abac77dafdc1d5487 (patch) | |
tree | 970ca330447b69c3dc6b1efc734cbdffd613e4eb /libavcodec/targaenc.c | |
parent | f1ccd076801444ab7f524cb13e0886faaf10fd50 (diff) |
lavc: Deprecate coder_type and its symbols
Most option values are simply unused or ignored and in practice the
majory of codecs only need to check whether to enable rle or not.
Add appropriate codec private options which better expose the allowed
features.
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
Diffstat (limited to 'libavcodec/targaenc.c')
-rw-r--r-- | libavcodec/targaenc.c | 34 |
1 files changed, 33 insertions, 1 deletions
diff --git a/libavcodec/targaenc.c b/libavcodec/targaenc.c index 290054de37..204ecfeac7 100644 --- a/libavcodec/targaenc.c +++ b/libavcodec/targaenc.c @@ -24,12 +24,19 @@ #include "libavutil/imgutils.h" #include "libavutil/internal.h" #include "libavutil/intreadwrite.h" +#include "libavutil/opt.h" #include "libavutil/pixdesc.h" #include "avcodec.h" #include "internal.h" #include "rle.h" #include "targa.h" +typedef struct TargaContext { + AVClass *class; + + int rle; +} TargaContext; + /** * RLE compress the image, with maximum size of out_size * @param outbuf Output buffer @@ -78,6 +85,7 @@ static int targa_encode_normal(uint8_t *outbuf, const AVFrame *pic, int bpp, int static int targa_encode_frame(AVCodecContext *avctx, AVPacket *pkt, const AVFrame *p, int *got_packet) { + TargaContext *s = avctx->priv_data; int bpp, picsize, datasize = -1, ret; uint8_t *out; @@ -125,8 +133,15 @@ static int targa_encode_frame(AVCodecContext *avctx, AVPacket *pkt, out = pkt->data + 18; /* skip past the header we just output */ +#if FF_API_CODER_TYPE +FF_DISABLE_DEPRECATION_WARNINGS + if (avctx->coder_type == FF_CODER_TYPE_RAW) + s->rle = 0; +FF_ENABLE_DEPRECATION_WARNINGS +#endif + /* try RLE compression */ - if (avctx->coder_type != FF_CODER_TYPE_RAW) + if (s->rle) datasize = targa_encode_rle(out, picsize, p, bpp, avctx->width, avctx->height); /* if that worked well, mark the picture as RLE compressed */ @@ -162,11 +177,28 @@ FF_ENABLE_DEPRECATION_WARNINGS return 0; } +#define OFFSET(x) offsetof(TargaContext, x) +#define VE AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_ENCODING_PARAM +static const AVOption options[] = { + { "rle", "Use run-length compression", OFFSET(rle), AV_OPT_TYPE_INT, { .i64 = 1 }, 0, 1, VE }, + + { NULL }, +}; + +static const AVClass targa_class = { + .class_name = "targa", + .item_name = av_default_item_name, + .option = options, + .version = LIBAVUTIL_VERSION_INT, +}; + 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), + .priv_class = &targa_class, .init = targa_encode_init, .encode2 = targa_encode_frame, .pix_fmts = (const enum AVPixelFormat[]){ |