[FFmpeg-devel] [PATCH 08/12] avfilter/vf_premultiply: tag correct alpha mode on result

Niklas Haas ffmpeg at haasn.xyz
Wed Feb 19 22:45:44 EET 2025


From: Niklas Haas <git at haasn.dev>

---
 libavfilter/vf_premultiply.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/libavfilter/vf_premultiply.c b/libavfilter/vf_premultiply.c
index 322fc39094..1c08cf524a 100644
--- a/libavfilter/vf_premultiply.c
+++ b/libavfilter/vf_premultiply.c
@@ -512,6 +512,7 @@ static int filter_frame(AVFilterContext *ctx,
 {
     PreMultiplyContext *s = ctx->priv;
     AVFilterLink *outlink = ctx->outputs[0];
+    const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(outlink->format);
 
     if (ctx->is_disabled) {
         *out = av_frame_clone(base);
@@ -529,6 +530,13 @@ static int filter_frame(AVFilterContext *ctx,
         full = base->color_range == AVCOL_RANGE_JPEG;
         limited = base->color_range == AVCOL_RANGE_MPEG;
 
+        if (desc->flags & AV_PIX_FMT_FLAG_ALPHA) {
+            (*out)->alpha_mode = s->inverse ? AVALPHA_MODE_STRAIGHT
+                                            : AVALPHA_MODE_PREMULTIPLIED;
+        } else {
+            (*out)->alpha_mode = AVALPHA_MODE_UNSPECIFIED;
+        }
+
         if (s->inverse) {
             switch (outlink->format) {
             case AV_PIX_FMT_YUV444P:
-- 
2.47.0



More information about the ffmpeg-devel mailing list