From: Niklas Haas <ffmpeg@haasn.xyz> To: ffmpeg-devel@ffmpeg.org Cc: Niklas Haas <git@haasn.dev> Subject: [FFmpeg-devel] [PATCH 1/2] avfilter/buffersink: add color_spaces, color_ranges params Date: Mon, 5 Feb 2024 19:39:20 +0100 Message-ID: <20240205183921.52633-1-ffmpeg@haasn.xyz> (raw) From: Niklas Haas <git@haasn.dev> An oversight in my previous series. This omission slipped under the radar because fftools/ffmpeg_filter.c did not use these options, instead preferring to insert an explicit format filter. --- libavfilter/buffersink.c | 29 ++++++++++++++++++++++++++--- libavfilter/buffersink.h | 2 ++ 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/libavfilter/buffersink.c b/libavfilter/buffersink.c index 6ba2970dd5..af7f8ab58a 100644 --- a/libavfilter/buffersink.c +++ b/libavfilter/buffersink.c @@ -48,6 +48,10 @@ typedef struct BufferSinkContext { /* only used for video */ enum AVPixelFormat *pixel_fmts; ///< list of accepted pixel formats int pixel_fmts_size; + enum AVColorSpace *color_spaces; ///< list of accepted color spaces + int color_spaces_size; + enum AVColorRange *color_ranges; ///< list of accepted color ranges + int color_ranges_size; /* only used for audio */ enum AVSampleFormat *sample_fmts; ///< list of accepted sample formats @@ -250,19 +254,36 @@ int av_buffersink_get_ch_layout(const AVFilterContext *ctx, AVChannelLayout *out static int vsink_query_formats(AVFilterContext *ctx) { BufferSinkContext *buf = ctx->priv; - AVFilterFormats *formats = NULL; unsigned i; int ret; CHECK_LIST_SIZE(pixel_fmts) + CHECK_LIST_SIZE(color_spaces) + CHECK_LIST_SIZE(color_ranges) if (buf->pixel_fmts_size) { + AVFilterFormats *formats = NULL; for (i = 0; i < NB_ITEMS(buf->pixel_fmts); i++) if ((ret = ff_add_format(&formats, buf->pixel_fmts[i])) < 0) return ret; if ((ret = ff_set_common_formats(ctx, formats)) < 0) return ret; - } else { - if ((ret = ff_default_query_formats(ctx)) < 0) + } + + if (buf->color_spaces_size) { + AVFilterFormats *formats = NULL; + for (i = 0; i < NB_ITEMS(buf->color_spaces); i++) + if ((ret = ff_add_format(&formats, buf->color_spaces[i])) < 0) + return ret; + if ((ret = ff_set_common_color_spaces(ctx, formats)) < 0) + return ret; + } + + if (buf->color_ranges_size) { + AVFilterFormats *formats = NULL; + for (i = 0; i < NB_ITEMS(buf->color_ranges); i++) + if ((ret = ff_add_format(&formats, buf->color_ranges[i])) < 0) + return ret; + if ((ret = ff_set_common_color_ranges(ctx, formats)) < 0) return ret; } @@ -365,6 +386,8 @@ static int asink_query_formats(AVFilterContext *ctx) #define FLAGS AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_VIDEO_PARAM static const AVOption buffersink_options[] = { { "pix_fmts", "set the supported pixel formats", OFFSET(pixel_fmts), AV_OPT_TYPE_BINARY, .flags = FLAGS }, + { "color_spaces", "set the supported color spaces", OFFSET(color_spaces), AV_OPT_TYPE_BINARY, .flags = FLAGS }, + { "color_ranges", "set the supported color ranges", OFFSET(color_ranges), AV_OPT_TYPE_BINARY, .flags = FLAGS }, { NULL }, }; #undef FLAGS diff --git a/libavfilter/buffersink.h b/libavfilter/buffersink.h index a9374b8b4f..5f7172028d 100644 --- a/libavfilter/buffersink.h +++ b/libavfilter/buffersink.h @@ -55,6 +55,8 @@ * The format can be constrained by setting options, using av_opt_set() and * related functions with the AV_OPT_SEARCH_CHILDREN flag. * - pix_fmts (int list), + * - color_spaces (int list), + * - color_ranges (int list), * - sample_fmts (int list), * - sample_rates (int list), * - ch_layouts (string), -- 2.43.0 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
next reply other threads:[~2024-02-05 18:39 UTC|newest] Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top 2024-02-05 18:39 Niklas Haas [this message] 2024-02-05 18:39 ` [FFmpeg-devel] [PATCH 2/2] fftools/ffplay: constrain supported YUV color spaces Niklas Haas 2024-02-08 10:57 ` [FFmpeg-devel] [PATCH 1/2] avfilter/buffersink: add color_spaces, color_ranges params Niklas Haas
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20240205183921.52633-1-ffmpeg@haasn.xyz \ --to=ffmpeg@haasn.xyz \ --cc=ffmpeg-devel@ffmpeg.org \ --cc=git@haasn.dev \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel This inbox may be cloned and mirrored by anyone: git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \ ffmpegdev@gitmailbox.com public-inbox-index ffmpegdev Example config snippet for mirrors. AGPL code for this site: git clone https://public-inbox.org/public-inbox.git