From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.ffmpeg.org (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id 8EEBC4CAEF for ; Thu, 7 Aug 2025 19:58:53 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id 62B6F68CA5E; Thu, 7 Aug 2025 22:58:49 +0300 (EEST) Received: from mail-pg1-f181.google.com (mail-pg1-f181.google.com [209.85.215.181]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTPS id D60AA68BFFD for ; Thu, 7 Aug 2025 22:58:42 +0300 (EEST) Received: by mail-pg1-f181.google.com with SMTP id 41be03b00d2f7-b34c068faf8so1387031a12.2 for ; Thu, 07 Aug 2025 12:58:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1754596720; x=1755201520; darn=ffmpeg.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=5X63dFlS8dbNBLhrB6DnoDE/MNRD/1IqmpRWw5dyyKA=; b=IcS8j5wpnTKzWGiPI3QZmosLTS1QKmq3f1SGf87yRBJ5rTr2mUaXJ2Um+dTqvzYZrU CjVyYh/BcUZz1FgiyC+n+ddQQC2kF/6J2f8nqFim/tmJZbMjdEZfpobE9NfPJjqFZiVP ImR2GbhQpMGdz5kk1kYF9mqYHhjhUC3eev/C1kd6zK2QgGCpCQprqwRjmZLoVnOrI5OQ TtgrGsDUw3mSyZVm+dONiyvQf3RJ5VP9rNlWzIIGfsp5Go72j5gENl+84Yq+Bg6OHLii HeWXDySOnBv/HG9GZsbPcrC8hHDEc3jH3J1fY4uvML8orgDzZEevZcSxueZSG26Fu+Qu vhzg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754596720; x=1755201520; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=5X63dFlS8dbNBLhrB6DnoDE/MNRD/1IqmpRWw5dyyKA=; b=Ou8afVcfejGFuWA27vJUAJuYa7M6z9dRNFji4jKrxbomdX2wgruRmZU0jGhaS7cTR+ Xii1kJW2uBz5JOf8t10CCyN2srGlcQyKciPXcpM5MT9BV/J8CO5OTs5dBRjm//rVnrG/ 92hsT9oJv06d9sxO/34m0DamAC49xNtmzAxAiObcyVb926MIbQqDhDZTLJXv88le/p13 of9Z4ZhWFKchoqaj0z0/oot1ivjG1D3iDLnZcoq4jTPODSUTCqHXQbyVRGfnXOpudGNw tLH170HL6m7zK2XJIH8ZYqzxwVSpCFICoGRVB4GYc1kKTIlrT2F9uWFfW7sWBWJAmllG hOGA== X-Gm-Message-State: AOJu0YxSFtkE0Y36akp+6uY4pFoeVEBxSi7sLRhutGvNzjGUuVSLOpRa YpxmzmoqN/mSQNl+3GL4M2/A5IBJDnq56sCz+93L11bnoqtYADphTAxYgFonQg== X-Gm-Gg: ASbGnctTYwyNji1/jMg3+K23Oq3ysk00V8+MGPKtgXtEZR462mUO5jNsULQnYcWhdzC sgGK9CCnozfjQCgeAvAXvCw6c+NKWNO+xx2sQgl24vvPT2P8QMig8hTK5PZUUL63XPvPHzGu9Zq Z9KCwtqadbMv4YdMEHcST1mWjbp23Pomf4zR+IdP8wacaGNF4fcGO8uQOA/Dze106Nq4gf39Q25 wjaH8s/VWb4UKPlvU/pZNdMe+kr/cED2BS1EIBQqAavoZlObbc44plhK12+VtcQyxMi+YeuQqma 4IItYrPg6wiT/VAy31iRynEz2JaUgrdxM+JY8bUfLrQbc3FVRQtDqDwf2TFu1Ide4FN47IIog84 X4y3Yd5dt71UZpLgycDHnv73GVWBCTdEJnZINfGJJ X-Google-Smtp-Source: AGHT+IHXe1+/viyUibbnEhBXUFizKgBJ23obYzNDVd7AClTWI1bQl80aN952XLvXGNzm9kJUUd6SEA== X-Received: by 2002:a17:903:3b87:b0:242:460e:4ab8 with SMTP id d9443c01a7336-242c222b0ebmr3793665ad.46.1754596719263; Thu, 07 Aug 2025 12:58:39 -0700 (PDT) Received: from JESTRADA-PC.localdomain ([98.97.30.252]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-241d1ef7d96sm191595345ad.18.2025.08.07.12.58.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 Aug 2025 12:58:38 -0700 (PDT) From: Jorge Estrada To: ffmpeg-devel@ffmpeg.org Date: Thu, 7 Aug 2025 12:58:00 -0700 Message-Id: <20250807195800.77462-1-jestrada.list@gmail.com> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] avfilter/vf_alphamerge: use refcounting for planar formats X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Jorge Estrada Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: Use reference plane when handling planar formats. Should address https://code.ffmpeg.org/FFmpeg/FFmpeg/issues/20153 Example: ffmpeg -f lavfi -i "color=red:s=640x480:d=5,format=yuva420p" \ -f lavfi -i "color=black:s=640x480:d=5,format=yuv420p,geq=lum='255*gt(150,hypot(X-W/2,Y-H/2))':a=0" \ -f lavfi -i "color=blue:s=640x480:d=5,format=yuv420p" \ -filter_complex "[0:v][1:v]alphamerge[merged_with_alpha];[2:v][merged_with_alpha]overlay" \ -c:v libx264 \ -y out.mp4 --- libavfilter/vf_alphamerge.c | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/libavfilter/vf_alphamerge.c b/libavfilter/vf_alphamerge.c index f5779484a9..9f53806537 100644 --- a/libavfilter/vf_alphamerge.c +++ b/libavfilter/vf_alphamerge.c @@ -28,12 +28,12 @@ #include "libavutil/imgutils.h" #include "libavutil/opt.h" #include "libavutil/pixfmt.h" +#include "libavutil/frame.h" #include "avfilter.h" #include "drawutils.h" #include "formats.h" #include "filters.h" #include "framesync.h" -#include "video.h" enum { Y, U, V, A }; @@ -78,11 +78,23 @@ static int do_alphamerge(FFFrameSync *fs) } } } else { - const int main_linesize = main_buf->linesize[A]; - const int alpha_linesize = alpha_buf->linesize[Y]; - av_image_copy_plane(main_buf->data[A], main_linesize, - alpha_buf->data[Y], alpha_linesize, - FFMIN(main_linesize, alpha_linesize), alpha_buf->height); + AVBufferRef *alpha_plane_buf = av_frame_get_plane_buffer(alpha_buf, Y); + + if (!alpha_plane_buf) { + av_log(ctx, AV_LOG_ERROR, "Could not get buffer for alpha plane.\n"); + return AVERROR(EINVAL); + } + + av_buffer_unref(&main_buf->buf[A]); + + main_buf->buf[A] = av_buffer_ref(alpha_plane_buf); + if (!main_buf->buf[A]) { + av_log(ctx, AV_LOG_ERROR, "Failed to reference alpha plane buffer.\n"); + return AVERROR(ENOMEM); + } + + main_buf->data[A] = alpha_buf->data[Y]; + main_buf->linesize[A] = alpha_buf->linesize[Y]; } return ff_filter_frame(ctx->outputs[0], main_buf); @@ -212,4 +224,4 @@ const FFFilter ff_vf_alphamerge = { FILTER_QUERY_FUNC2(query_formats), .uninit = uninit, .activate = activate, -}; +}; \ No newline at end of file -- 2.34.1 _______________________________________________ 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".