X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Ffic.c;h=b5f92e5960edcbdeee54a726716dde60a03e5556;hb=0416b5e0330c5eb226f92cf6c150eb6b7daa8b92;hp=48e7a6ea0a9bcc1973703a25494dc9245f824cbf;hpb=d52c5e9d75e92dfb2a304d523567e201f2393047;p=ffmpeg diff --git a/libavcodec/fic.c b/libavcodec/fic.c index 48e7a6ea0a9..b5f92e5960e 100644 --- a/libavcodec/fic.c +++ b/libavcodec/fic.c @@ -22,6 +22,7 @@ */ #include "libavutil/common.h" +#include "libavutil/opt.h" #include "avcodec.h" #include "internal.h" #include "get_bits.h" @@ -36,6 +37,7 @@ typedef struct FICThreadContext { } FICThreadContext; typedef struct FICContext { + AVClass *class; AVCodecContext *avctx; AVFrame *frame; AVFrame *final_frame; @@ -51,6 +53,7 @@ typedef struct FICContext { int num_slices, slice_h; uint8_t cursor_buf[4096]; + int skip_cursor; } FICContext; static const uint8_t fic_qmat_hq[64] = { @@ -263,7 +266,7 @@ static int fic_decode_frame(AVCodecContext *avctx, void *data, int msize; int tsize; int cur_x, cur_y; - int skip_cursor = 0; + int skip_cursor = ctx->skip_cursor; uint8_t *sdata; if ((ret = ff_reget_buffer(avctx, ctx->frame)) < 0) @@ -452,6 +455,18 @@ static av_cold int fic_decode_init(AVCodecContext *avctx) return 0; } +static const AVOption options[] = { +{ "skip_cursor", "skip the cursor", offsetof(FICContext, skip_cursor), AV_OPT_TYPE_INT, {.i64 = 0 }, 0, 1, AV_OPT_FLAG_DECODING_PARAM | AV_OPT_FLAG_VIDEO_PARAM }, +{ NULL }, +}; + +static const AVClass fic_decoder_class = { + .class_name = "FIC encoder", + .item_name = av_default_item_name, + .option = options, + .version = LIBAVUTIL_VERSION_INT, +}; + AVCodec ff_fic_decoder = { .name = "fic", .long_name = NULL_IF_CONFIG_SMALL("Mirillis FIC"), @@ -462,4 +477,5 @@ AVCodec ff_fic_decoder = { .decode = fic_decode_frame, .close = fic_decode_close, .capabilities = CODEC_CAP_DR1 | CODEC_CAP_SLICE_THREADS, + .priv_class = &fic_decoder_class, };