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 109E24CD12 for ; Sat, 9 Aug 2025 02:07:37 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id 82C0868CC9D; Sat, 9 Aug 2025 05:07:33 +0300 (EEST) Received: from mail-pg1-f173.google.com (mail-pg1-f173.google.com [209.85.215.173]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTPS id 4880368C154 for ; Sat, 9 Aug 2025 05:07:27 +0300 (EEST) Received: by mail-pg1-f173.google.com with SMTP id 41be03b00d2f7-b3bcb168fd5so1924147a12.3 for ; Fri, 08 Aug 2025 19:07:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1754705245; x=1755310045; 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=uGOksK7kFEBpZKPrvBXTPeqDx5KPKnqt5Ivfy6k38Iw=; b=khQTgJbWpTe7vMGEbHhv4JLdLJfLHchNTDMLuPIBJq9KQ862qg6GCCkSSy+niNGCej soYbx650mLDrnnuKOXPWr7gFJg9/sd94fEdGYIRp8gfSErNpKMd3wznuqNNhaZtr/A+O 75YeBv0rYKCops9HBprcMlVdGDTe1isa7vDKVPI80G4LeXnkz3EXKM/5q9VpVbo0sl3t uJZnUwtKDeqr93w/ZpXuMO5h3SPSjR7hC9EKW/MM/NffKSlBskAtoxAyoxCBZ27q70Q7 7PuyIjDexiz4iKHv59JzNTwxnt5n2fEsa7bTyfIsPwH2O1cuUvrUzva1PcEbUyD58FWw FUyQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754705245; x=1755310045; 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=uGOksK7kFEBpZKPrvBXTPeqDx5KPKnqt5Ivfy6k38Iw=; b=g9iQvpPWrX1xW2GnJZRY0oPbhiG6VjRwjH1eKi1GMZw67DSREWvdfdXhzTwSCpWzK1 QvyNp6MkpwFKjOy+RADDpZiXcxJycnVpZERgK0ldtqVIAaPyX641y2CQixZHFETsxfyb z3TOIB1OD7QMYNScO7WXDfIxwONYekCUwUUo7d9obIw8D+mA96hXkdFAQcswc0osyy/L muGrTp6Zf5hVE7u1YToKPnj9Gc/FFZ3MXIv5KV7m9679gRhhVjXXJ/KSXcaARQN8/tQu IOdgPmmJFuV1cBTaP2z9wrIOid5KiN9RbstBYZPp0sf/CZqn5z19ljAG/gLcR4A8xFgC 9EpA== X-Gm-Message-State: AOJu0Yw6Y6b+Cwy54w3eyoKmBc01ty0s4XQVz5D4076flY5yeEiaaUCn tbLJMyskuY6O9Fl+L5JztRvr2oQRNclDCVJubjE6r1QdLuhJHech2cuIG9WBAA== X-Gm-Gg: ASbGncvN4vKqaUA4Akc/jXoTka8iq0t4gNeuN2UIYSIYIpdEKbE9ac8u6CoY0zehWDi 4SpZgztBjr5XyUwCbHStwlLiwQRR+9F2RNbeyT4JGFnF4QFyXEr6cjvjvs9VMlWR9Ugr1D/5/QU +8sm8UjB2eLlV1YxXPMeKDYH76Q8tLKOFB8t2eUqIbnLIQYgHjjY1wrVMSLkigRUp9cxQFiMkg1 Gafx2n8WhLOM2ZoBXebZaX3o58Cl2xpVOg31V06S7oPYLkuFkg1OZyJ8ZAwg9pO8D3LuCCMWq0B 3seF4H/5DUEBs/iAqB1EweKEut/i+xaQVHLtwy/CXwp/kzF6ZVZtXrDnslaMBl8DHKex8p4Wsji AVDRKbP6r9W/r6zBMMjPTS3l6VRbq8+QwOB80lANs X-Google-Smtp-Source: AGHT+IGekca1raqfz1fjpzaCoT6LbGPLpj+asyshlRMcFf0exK3DTmsivLhcFfWh9mqTIgMA4ybd2A== X-Received: by 2002:a17:90b:2fc8:b0:321:87fa:e206 with SMTP id 98e67ed59e1d1-32187fae455mr5469528a91.20.1754705244690; Fri, 08 Aug 2025 19:07:24 -0700 (PDT) Received: from JESTRADA-PC.localdomain ([98.97.30.252]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-b4248f1d75dsm15011794a12.51.2025.08.08.19.07.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 Aug 2025 19:07:24 -0700 (PDT) From: Jorge Estrada To: ffmpeg-devel@ffmpeg.org Date: Fri, 8 Aug 2025 19:06:24 -0700 Message-Id: <20250809020624.87270-1-jestrada.list@gmail.com> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] avfilter/vf_extractplanes: 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: As recommended by Nicholas George. Uses refcounting for planar formats similar to this change for alphamerge https://patchwork.ffmpeg.org/project/ffmpeg/patch/20250807195800.77462-1-jestrada.list@gmail.com/ --- libavfilter/vf_extractplanes.c | 41 +++++++++++++++++++++++++--------- 1 file changed, 31 insertions(+), 10 deletions(-) diff --git a/libavfilter/vf_extractplanes.c b/libavfilter/vf_extractplanes.c index 99e37ba04a..cc64d96e1c 100644 --- a/libavfilter/vf_extractplanes.c +++ b/libavfilter/vf_extractplanes.c @@ -307,25 +307,46 @@ static int extract_plane(AVFilterLink *outlink, AVFrame *frame) const int idx = s->map[FF_OUTLINK_IDX(outlink)]; AVFrame *out; - out = ff_get_video_buffer(outlink, outlink->w, outlink->h); - if (!out) - return AVERROR(ENOMEM); - av_frame_copy_props(out, frame); - if (idx == 3 /* alpha */) - out->color_range = AVCOL_RANGE_JPEG; - if (s->is_packed) { + out = ff_get_video_buffer(outlink, outlink->w, outlink->h); + if (!out) + return AVERROR(ENOMEM); + extract_from_packed(out->data[0], out->linesize[0], frame->data[0], frame->linesize[0], outlink->w, outlink->h, s->depth, s->step, idx); } else { - av_image_copy_plane(out->data[0], out->linesize[0], - frame->data[idx], frame->linesize[idx], - s->linesize[idx], outlink->h); + out = av_frame_alloc(); + if (!out) + return AVERROR(ENOMEM); + + AVBufferRef *source_plane_buf = av_frame_get_plane_buffer(frame, idx); + if (!source_plane_buf) { + av_frame_free(&out); + av_log(ctx, AV_LOG_ERROR, "Could not get buffer for source plane %d.\n", idx); + return AVERROR(EINVAL); + } + + out->format = outlink->format; + out->width = outlink->w; + out->height = outlink->h; + + out->buf[0] = av_buffer_ref(source_plane_buf); + if (!out->buf[0]) { + av_frame_free(&out); + return AVERROR(ENOMEM); + } + + out->data[0] = frame->data[idx]; + out->linesize[0] = frame->linesize[idx]; } + av_frame_copy_props(out, frame); + if (idx == 3 /* alpha */) + out->color_range = AVCOL_RANGE_JPEG; + return ff_filter_frame(outlink, out); } -- 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".