From patchwork Sat Jun 8 14:03:24 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 49704 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:c209:0:b0:460:55fa:d5ed with SMTP id d9csp1600017vqo; Sat, 8 Jun 2024 07:03:45 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCXMlH0TlMcS54HXTZYX7cJGwK5qJzgJdOiqchkV6QU3gttdOLDe98N78ANs6sjp2mC+DrHMHE4FGsV1fug3ONAIarPV7WJj/j0F5g== X-Google-Smtp-Source: AGHT+IE1+Gjs0orN/dovCfjjkfETdtGPchWUQbNzeuLwR/hsX8xtV3UOQ4HJgXeRe4KjGSt2+tfD X-Received: by 2002:a17:906:6899:b0:a68:a117:2635 with SMTP id a640c23a62f3a-a6cd60a18dbmr345310366b.22.1717855425625; Sat, 08 Jun 2024 07:03:45 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id a640c23a62f3a-a6effe63529si67923366b.897.2024.06.08.07.03.45; Sat, 08 Jun 2024 07:03:45 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@outlook.com header.s=selector1 header.b=gUzECzmB; arc=fail (body hash mismatch); spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id A5DF068D6A6; Sat, 8 Jun 2024 17:03:41 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-he1eur04olkn2070.outbound.protection.outlook.com [40.92.73.70]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C228668D52E for ; Sat, 8 Jun 2024 17:03:34 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WafXtIUHuSt3tinmGL5Ni2Me5IM5jvHcmXCtVb7INxdCcICxa1v/TqLwVD/z4llNv8sSMBLBlqHd/QzCyTWA8phmrEPvLozohAWd/EWs3Ly91Jyrah3dJDkQn8h9IeLDJ1f6lLQtdy66/7NhvYQMhZaz8b6fZrFBZ4IoK4Bv1pKjDQcuDZxlfoo+zpRFKcyF1kMz0xQ0g05WZml6+2tdI+/WozfuYNUu5wfkoIl/xp153vaN4mr1q63epidJ3GXHhc7fs6zaPD13lfWkPxGwamMP6eyhqQVl1dFILJhJa1T8hKygUyhx1Hp06Iz/dGEohe35DL9bzSVaMeJrykNhOw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=CUugF/5k9L0lonZUtCePXUNU+DmrAogKjUP+yshIHBM=; b=CZcjsSOBtJw/yiaEaDSFEBXHXWczM5oBLUG+ljarqiQU0dl7NaSA5maSk4QxoR8pr192oP/KYSGYVSKjRl2QOL+sRwUmxrvu2rDDOTMRAVLPIT2o1Ll0uPecKj9Hd6WvqUPWVBG6YTpk0eZGMuA3jdN1kSHfmg5UraMtaWrgEm6syCXiW262VJRVHJ9L0wznoGrLCKUoGklTWjJAjT7tr3UPqNVNxdwNCxjQTAAyMh4WvadvL8KFl/ceI6dpU7q+mnYHbOCMzJrtAwNJ9DOJVjcnSZ2plyguDdNaGcsaaFLvgHbXNOIm9NyZtGFEJbZMDVjAR1EVfSdLeyN3YF7Y9w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=CUugF/5k9L0lonZUtCePXUNU+DmrAogKjUP+yshIHBM=; b=gUzECzmBoQwtgwEfzaR+OKb9+CD87z0+7goYRHEOo3D3ddoihQyP1V9UEK2SK6LCUGsqCbW8qKJwtq+sP1DycYFg76Fxg87yNC2yERdlihpqoesTzDTIA++v08JA+qDk2u6w/EMvAwANCuOIBZRrLqV8UKH5SiqMfgo5iLI2l/vEHSudwKbaG7fg1JDBa0WSgg6fVxHXxtorZT69w/JsOCkWWmL6vtxJ1ohIEK40XHJVzGmREN3AL5D9BRrcSt7yiPYz9UCNr8R2OyIilhHbemaOdOztySi8W//7AbWQC1bZZpNMZGEGAfuC1Sl7LmCXe+ZrgaTnbGNuUWcJZbot/g== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by AS8P250MB0086.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:371::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7633.36; Sat, 8 Jun 2024 14:03:33 +0000 Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::384d:40d4:ecb7:1c9]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::384d:40d4:ecb7:1c9%4]) with mapi id 15.20.7633.021; Sat, 8 Jun 2024 14:03:32 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sat, 8 Jun 2024 16:03:24 +0200 Message-ID: X-Mailer: git-send-email 2.40.1 In-Reply-To: <20240512195540.GW6420@pb2> References: <20240512195540.GW6420@pb2> X-TMN: [ynsCVwHNwV8GWNQqUx5NpEiCuHojTkrFbsFXUisR86A=] X-ClientProxiedBy: ZR0P278CA0198.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:44::12) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) X-Microsoft-Original-Message-ID: <20240608140324.2616493-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|AS8P250MB0086:EE_ X-MS-Office365-Filtering-Correlation-Id: 571e25ea-7502-4c35-1ec6-08dc87c3c829 X-Microsoft-Antispam: BCL:0; ARA:14566002|461199019|440099019|3412199016|1710799017; X-Microsoft-Antispam-Message-Info: iTvjt0siuxautJNPVrDPUAgo/W3/yIt/lnoRVJypmjx7sVX4/sq5YQMWlAbYLeRGzMd4TKPZWr+vEdWBWljGcqJnXaYbGBYSUdS/QZ4mDBioOr4SqrO4UQYwRMQrdWh93lxwAblzEuGAL1r7206ee+YYuS/2qETPFDVRJjaV8lKIQvtEknKIMDTfsjqXFc6PaPMJGSNrBYUCxuJRr8w1dLhKjGRi0YkE8AZOnXS/MkVDEd6bXoqGxhW7Alm8rmFfnT4kJg3dzD4j9JGLP7PZ0mONg5KDi8UcSwc9LV38EtTFFr43Bf6mJEwcycNaybHij04a1cEXzwO+X4JLdkuw7Jbtp0rwiPUU7+B161bcHv3AxsOCeQkyo/4l4CX1wIlYUmjX+LBu87PW95WWlfZZjgM0oZNbTLzmXf+fhzrCn33ldMUW7VbBMIUdj+JQX/khlVPa29e3Tyk6/mO8C1kEkfN0WXWQrrCYesbXkx5Pr/nyyCDFmQoOu3D8y4KeVXFsDpNG4vkyWzhTlO3BmEPy1Vir44sIle50/6R3PdlNmY17QLIbHnFX+fwzNTv2zAfwemQPlr4di5segTDCe6JD+eiTdGtFoyW0dSEwO4ZYHiF9M0dQaWbEmW1FtgzR/IZ9 X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 56IO4ZyUw9mMDgnZ6LtGuskUhmzSCs2Iq33bLF5CEEyQ21jmXPtnc3OJzg8esNJeAbOaGqm2bPiEsdOO60WmV+oJpCQ6LqY8OqLWksCxtAfHCfak6wvfu9M2YXFSphI/EX2kmBhL+H1LJhG+HMSsZ+5Gmff/FOZNBCHUG8E0pEpEo9unsljTeRvvN72EvL8SYpWAntdMpNcz4BeNC8BnlaQgS92irsjf4jCgdioktFVNsVbnFvFfnJ+U4U0ERVsG1H0spozt6foYvxy5KwCK1F9uIhjkgonEsWEz6rsoFmRMJSeunKdKe65gao5sJJsOmC5aAJljWyKTB7/bSdYOEbfQX51LRL3bFIwHDtiCmfqjhMW3JR67mA8/+VJaIu2RRxKvUvOV8VVX1+bmo5EVqocpshpVld/N5PxLI+TRcfnkSwEyQ0qRBgn3lPPHELSmsoYtntFBJK/wPEjgf9cxH6KTNvAmisfUgzFByfssX/HxhArkTIfxNuezqywlu0Jn7iIeC4Lam/iYpGCfUk0aDRmE4GayfFlqrxMZZv4OFKWNZLMYB0stG6s9tiM1P24tR1K/xrWwf+uWbGmFBzdR/pNKOmZ3ejuz0L8gEeWVoY+4gUqYlkRuIB9B2KI37zmCKHTY7zVUsgQE6F7b59t8bpe8N9dx/yMRkY0Tm4ymnO0rSdFTWjFWGsBw8PeDism+8KAB3XJLStQwsFTdN8Yuy5NDV07RL4iu8kNK8j6PiepzkgNRH28VGE8yJPCynRkXvKkA2bkGCUc7AI0IygcsZPm8A8d//ovbm8MXRYD2Ww4LQlA/RLF9R+Q84q9ih4l2mRGGXGbVCj+BoqiTjik3qlISpq6vn79tuVBOlN/vw3NQHJuMTnwTgS7KdpZEBY+HeRttq6WfUXSMwkRoz4XxK2+dNcEeBvhNTgqv6aczl1zTMBqsMmw33j2xGMXhe7R7BzM7DEsXG4RiLhhyyG6RYYebJuYlOnsiZ/61JN305VZwZ8np3O+oHieWLVtZB8nZsqjcjg0e7ELSY3HmiLhc0u6a++m3NDtjAodRB+/PwU9km8uNix1u0BuoFw8QS4BpXQ4t5GE0QUSoJEXq4knYJp/iZv8HOPoj5VahoA4zxxP0jBFiTuBAKrFi0cejb8sS5wbWzEwrpsWKXIkb+sfqez1ZAH6BZt0kyQ0IJ0huG4HTi4FK70jcveVUFM2PLFsxX3TsrxdrQb6NJFe4YvPmZ4/edb7n68hcmc7O8Or3RQj7ioPLdHqCqod3L14gEzR8wG/EW4GpEu7rB4mHM5tMfA== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 571e25ea-7502-4c35-1ec6-08dc87c3c829 X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Jun 2024 14:03:32.8474 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8P250MB0086 Subject: [FFmpeg-devel] [PATCH v3 40/71] avcodec/mpegvideo_enc: Move copying properties to alloc_picture() 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: dzsQ27xuL9Uq This way said function sets everything (except for the actual contents of the frame's data). Also rename it to prepare_picture() given its new role. Signed-off-by: Andreas Rheinhardt --- Now calling av_frame_copy_props() after setting the frame's dimensions to the actually valid (i.e. unpadded) dimensions. (The earlier code did it before this block for aesthetical reasons.) It matters because av_frame_copy_props() only copies pan&scan side data when the dimensions match. And once again: Thanks for testing. libavcodec/mpegvideo_enc.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/libavcodec/mpegvideo_enc.c b/libavcodec/mpegvideo_enc.c index f54ec93cf2..3e86737d26 100644 --- a/libavcodec/mpegvideo_enc.c +++ b/libavcodec/mpegvideo_enc.c @@ -1091,7 +1091,11 @@ static int get_intra_count(MpegEncContext *s, const uint8_t *src, return acc; } -static int alloc_picture(MpegEncContext *s, AVFrame *f) +/** + * Allocates new buffers for an AVFrame and copies the properties + * from another AVFrame. + */ +static int prepare_picture(MpegEncContext *s, AVFrame *f, const AVFrame *props_frame) { AVCodecContext *avctx = s->avctx; int ret; @@ -1116,6 +1120,10 @@ static int alloc_picture(MpegEncContext *s, AVFrame *f) f->width = avctx->width; f->height = avctx->height; + ret = av_frame_copy_props(f, props_frame); + if (ret < 0) + return ret; + return 0; } @@ -1186,14 +1194,9 @@ static int load_input_picture(MpegEncContext *s, const AVFrame *pic_arg) return ret; pic->shared = 1; } else { - ret = alloc_picture(s, pic->f); + ret = prepare_picture(s, pic->f, pic_arg); if (ret < 0) goto fail; - ret = av_frame_copy_props(pic->f, pic_arg); - if (ret < 0) { - ff_mpeg_unref_picture(pic); - return ret; - } for (int i = 0; i < 3; i++) { ptrdiff_t src_stride = pic_arg->linesize[i]; @@ -1607,11 +1610,8 @@ no_output_pic: // input is a shared pix, so we can't modify it -> allocate a new // one & ensure that the shared one is reuseable av_frame_move_ref(s->new_pic, s->reordered_input_picture[0]->f); - ret = alloc_picture(s, s->reordered_input_picture[0]->f); - if (ret < 0) - goto fail; - ret = av_frame_copy_props(s->reordered_input_picture[0]->f, s->new_pic); + ret = prepare_picture(s, s->reordered_input_picture[0]->f, s->new_pic); if (ret < 0) goto fail; } else {