X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavfilter%2Fvf_showpalette.c;h=c0327acf5c8e7b52b15eb2762bd688509488b06e;hb=420cedd49745b284c35d97b936b71ff79b43bdf7;hp=d886ab87a7737a99eeaefe6179841f86bf7b8706;hpb=ecb5546e97c479378e057f527cc1d79a46c31cb1;p=ffmpeg diff --git a/libavfilter/vf_showpalette.c b/libavfilter/vf_showpalette.c index d886ab87a77..c0327acf5c8 100644 --- a/libavfilter/vf_showpalette.c +++ b/libavfilter/vf_showpalette.c @@ -46,26 +46,13 @@ static int query_formats(AVFilterContext *ctx) { static const enum AVPixelFormat in_fmts[] = {AV_PIX_FMT_PAL8, AV_PIX_FMT_NONE}; static const enum AVPixelFormat out_fmts[] = {AV_PIX_FMT_RGB32, AV_PIX_FMT_NONE}; - int ret; - AVFilterFormats *in = ff_make_format_list(in_fmts); - AVFilterFormats *out = ff_make_format_list(out_fmts); - if (!in || !out) { - ret = AVERROR(ENOMEM); - goto fail; - } + int ret = ff_formats_ref(ff_make_format_list(in_fmts), + &ctx->inputs[0]->outcfg.formats); + if (ret < 0) + return ret; - if ((ret = ff_formats_ref(in , &ctx->inputs[0]->out_formats)) < 0 || - (ret = ff_formats_ref(out, &ctx->outputs[0]->in_formats)) < 0) - goto fail; - return 0; -fail: - if (in) - av_freep(&in->formats); - av_freep(&in); - if (out) - av_freep(&out->formats); - av_freep(&out); - return ret; + return ff_formats_ref(ff_make_format_list(out_fmts), + &ctx->outputs[0]->incfg.formats); } static int config_output(AVFilterLink *outlink) @@ -76,7 +63,7 @@ static int config_output(AVFilterLink *outlink) return 0; } -static int disp_palette(AVFrame *out, const AVFrame *in, int size) +static void disp_palette(AVFrame *out, const AVFrame *in, int size) { int x, y, i, j; uint32_t *dst = (uint32_t *)out->data[0]; @@ -88,15 +75,13 @@ static int disp_palette(AVFrame *out, const AVFrame *in, int size) for (j = 0; j < size; j++) for (i = 0; i < size; i++) dst[(y*dst_linesize + x) * size + j*dst_linesize + i] = pal[y*16 + x]; - return 0; } static int filter_frame(AVFilterLink *inlink, AVFrame *in) { - int ret; AVFrame *out; AVFilterContext *ctx = inlink->dst; - const ShowPaletteContext *s= ctx->priv; + const ShowPaletteContext *s = ctx->priv; AVFilterLink *outlink = ctx->outputs[0]; out = ff_get_video_buffer(outlink, outlink->w, outlink->h); @@ -105,9 +90,9 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in) return AVERROR(ENOMEM); } av_frame_copy_props(out, in); - ret = disp_palette(out, in, s->size); + disp_palette(out, in, s->size); av_frame_free(&in); - return ret < 0 ? ret : ff_filter_frame(outlink, out); + return ff_filter_frame(outlink, out); } static const AVFilterPad showpalette_inputs[] = { @@ -136,5 +121,4 @@ AVFilter ff_vf_showpalette = { .inputs = showpalette_inputs, .outputs = showpalette_outputs, .priv_class = &showpalette_class, - .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC, };