diff --git a/libavcodec/fic.c b/libavcodec/fic.c index 48e7a6ea0a..b5f92e5960 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, };