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 775954F173 for ; Sun, 15 Jun 2025 17:04:04 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id 9222168DA41; Sun, 15 Jun 2025 19:59:11 +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 4B06E68D9F2 for ; Sun, 15 Jun 2025 19:59:10 +0300 (EEST) Received: by mail-pg1-f181.google.com with SMTP id 41be03b00d2f7-879d2e419b9so3675892a12.2 for ; Sun, 15 Jun 2025 09:59:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1750006748; x=1750611548; darn=ffmpeg.org; h=cc:to:mime-version:content-transfer-encoding:fcc:subject:date :references:in-reply-to:message-id:from:from:to:cc:subject:date :message-id:reply-to; bh=pHnlPHR7x3A0XPH2l0hdVtuGraRQQ16ONnukxITWvNs=; b=bnOTU0/mtrMrKVqsw+uxCmci86Kxyq5Xvjt+ug3gsw9pVIwaENZzhZrK6ASly6HFWK s0PtPre0fTzHYPCdfvnUvIgp5u+Ok0oD8Jb9mIsojhlPalWHYePSaehGP7A6GRwNng0M L/iU7Ts64lcMCi0ZlV7WEdfZv4Rpl5IQv1YCVeLwudopozgjIkbs+nR/+P5ANXtvvQ9F WC4q15DgFKlR19BP3TsJ/k6Y1AVK7D9OK+vn4UFBH+NcjQ8MiJRfjcDPVH7RTwDNGL// LmSTzNcmILWdV8SHCC9QP2kHXEFk/YG87uvUGPEDJ9G1VkgoRoe7SbT1lBViTrUlxPHa rAGg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750006748; x=1750611548; h=cc:to:mime-version:content-transfer-encoding:fcc:subject:date :references:in-reply-to:message-id:from:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=pHnlPHR7x3A0XPH2l0hdVtuGraRQQ16ONnukxITWvNs=; b=p9Wn7N4a2rY/ve+Ytc+BYZtCbLDxO9fOTGbuw+CZFRJ6RlOjc/aIZvE+soJeDSVmOY dpvZGAlkGDTPIbClzg9vVANARcB83jgR0Lgk01FM6VCc+nrJgJ3x4nVNsRlZzrm/jROx 0pYQaLNTyNApMGLld423Efug0SPz+MtLuWJvocpJ34sZSZw+4HgUsx154DHgekkuONA0 P9+kIbE5zxXi+523WD427NGsXrB6DcndumdALKQrA2u/82+4MIXY69cFM0zsJP3TmPCQ 7TqbbR0i+z1HfrbxR0TKoviBQgt9YBK8Fg7wD5EcxPEBHCcPDb+2t9dRT4W0lpKEAQ2b 8/Qg== X-Gm-Message-State: AOJu0Yy2gAyYVDUgG79ZLLXjAWFpoJ4u0UNbCft+gGYVqScoQ8Bd3+sv z7x00spRaqxbBoLVcRKT2rSBup5G/fZZVPRCN9bh23qBbV2TRfvalfVvXJFuQQ== X-Gm-Gg: ASbGncvAK7j4nxYgXPW7swJXfXKw7ep+3dPVUukNSjUPVNEUD5Zuto/f22ESjNFiZu3 yfVi/KAnDfcLUi9C7FYl7TV+6kG/cj8WTvasi7ydWR04fZsF8njm3uEgTMh7juyn7owBmBu/lNt 8TkHIjeOw1UJwuJMY32gKM0gMlFIfX3Fhqv6ggxw8hSTaNqxMCIuIa7UEuW9ZAyuW1DOzPuChO0 AMk5I71dlJ09SNPYGu+kNV9yS1XVZV1ingKSStrY8T/D/6RjENE7G/NezsGgVOxFb5uEwLwQXkJ jawg6B0QhPsQ2K8qSja5tBaGW6J3Ol6f5NAqlScYFfhJodrXCP8SX3Z9Gd6iarWEUk30zI6ukbG Hn8Sp8IiGo+I1aT9z X-Google-Smtp-Source: AGHT+IE5fjd7ASeo93usNG2w2kEjBLPZuAxJQRcD9jINQ3Yl2v1VOVLOW9kLYKVPrq0BGK5St2qdcg== X-Received: by 2002:a17:90a:c110:b0:311:e2ce:66ea with SMTP id 98e67ed59e1d1-313f18d816fmr11442495a91.0.1750006748432; Sun, 15 Jun 2025 09:59:08 -0700 (PDT) Received: from [127.0.0.1] (master.gitmailbox.com. [34.83.118.50]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2365deb0f55sm45942655ad.188.2025.06.15.09.59.08 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sun, 15 Jun 2025 09:59:08 -0700 (PDT) From: Andreas Rheinhardt X-Google-Original-From: Andreas Rheinhardt Message-Id: <491674fecfd98d610ff2f0fe99e6be9888992911.1750006480.git.ffmpegagent@gmail.com> In-Reply-To: References: Date: Sun, 15 Jun 2025 16:54:37 +0000 Fcc: Sent MIME-Version: 1.0 To: ffmpeg-devel@ffmpeg.org Subject: [FFmpeg-devel] [PATCH 46/47] avcodec/mpegvideo: Reduce stack usage when copying MpegEncContext 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: Andreas Rheinhardt 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: From: Andreas Rheinhardt (GCC did not perform this on its own; Clang did.) Signed-off-by: Andreas Rheinhardt --- libavcodec/mpegvideo.c | 29 +++++++++++++---------------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/libavcodec/mpegvideo.c b/libavcodec/mpegvideo.c index 4701267d81..ff2703f487 100644 --- a/libavcodec/mpegvideo.c +++ b/libavcodec/mpegvideo.c @@ -171,27 +171,24 @@ static av_cold void free_duplicate_contexts(MpegEncContext *s) free_duplicate_context(s); } -static void backup_duplicate_context(MpegEncContext *bak, MpegEncContext *src) -{ -#define COPY(a) bak->a = src->a - COPY(sc); - COPY(blocks); - COPY(block); - COPY(start_mb_y); - COPY(end_mb_y); - COPY(dc_val); - COPY(ac_val); -#undef COPY -} - int ff_update_duplicate_context(MpegEncContext *dst, const MpegEncContext *src) { - MpegEncContext bak; +#define COPY(M) \ + M(ScratchpadContext, sc) \ + M(void*, blocks) \ + M(void*, block) \ + M(int, start_mb_y) \ + M(int, end_mb_y) \ + M(int16_t*, dc_val) \ + M(void*, ac_val) + int ret; // FIXME copy only needed parts - backup_duplicate_context(&bak, dst); +#define BACKUP(T, member) T member = dst->member; + COPY(BACKUP) memcpy(dst, src, sizeof(MpegEncContext)); - backup_duplicate_context(dst, &bak); +#define RESTORE(T, member) dst->member = member; + COPY(RESTORE) ret = ff_mpv_framesize_alloc(dst->avctx, &dst->sc, dst->linesize); if (ret < 0) { -- ffmpeg-codebot _______________________________________________ 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".