From patchwork Sat May 11 20:51:09 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 48771 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:1706:b0:1af:cdee:28c5 with SMTP id nv6csp299349pzb; Sat, 11 May 2024 13:58:25 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCWsolUjNBn57Tt45qrVUdyLKOjbHrpixSTa9qodzzGwYG6JwWvx9csRrh1Q99mJ++AOyZQseRsAbQlp40BIoCtPW4Jk/Z48kvwjPg== X-Google-Smtp-Source: AGHT+IFwzMJGHuys5tCmIj9jpgzHgQgO38nHwa6Vfod9Y6BiajaAgaEXwbrlfI0deTCsHzgoh+P6 X-Received: by 2002:a17:906:7110:b0:a59:a18e:3fd9 with SMTP id a640c23a62f3a-a5a2d54c365mr353667266b.5.1715461105334; Sat, 11 May 2024 13:58:25 -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-a5a1794691esi339990066b.57.2024.05.11.13.58.24; Sat, 11 May 2024 13:58:25 -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=W85g4J4P; 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 8872168D79E; Sat, 11 May 2024 23:54:50 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-db3eur04olkn2046.outbound.protection.outlook.com [40.92.74.46]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 7921168D786 for ; Sat, 11 May 2024 23:54:45 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=k3ZFumCmIY/DHV/A+o/MhPaci/SXtYHHubAkQRyyK9J9UdUHDW1mgKu9Ud+xMy2JbJipyKD63eDK3cvMGtx+0ZmqOz8Tvz9c7bTSedKT7zANoeEd/bxxlS5Huc0y431Mvu9X/UMEvn/xQpKSZw53+CRTKUTuB4BRU6zNoS2xtUbJQqYz8UEEwYyYMeM/ZC/medTF0y0nB63KI6Wr4xIMNHhCv0i3DxkN8EVw4fW8WvVG5gBmet/wNFrXuzQyGvYm141m2mrDkatMkpXp1ZV8ptm8r1vIJr7alCgCNg/dmirE5/WOhhEbEw7xl/2Z+48rEXlXSc9GLvdkk0NO1uAreQ== 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=SjG+JYYVgfQnztSTcY04J3EOCZWo+k72hwqiUNyHbOA=; b=lzFS7cfLUuMXjnre0hr8RYtS1V1Nwu0WpU+qanbYktNoyunuoWSj+xQHejThlx835C/3KjiIjp6GwSYYToTSS9FiKgiMrkZ5zKuW+TLL2vkqtyV0ywrh+18ZsUm3iAgtfhCR8OgKVSEeHsv7l89QMuL7hiHEpz0TGuz+HyCpkOaaPlE4tj7STIXzDR26kwQ5lw/f2rUZaG4sE8qBHK5li+AlMBYPXc0Z2TAN+nPWwK/x0L6/j2kf4kXpiOGHKmRkQWsbopYRiLqB0PJIioEU369WXwFjfKCBuvXDeBxLNfZSHr8dtQy5Zfd2BBg6nW0fbTJ41IQt3evgE+Tldu8a5Q== 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=SjG+JYYVgfQnztSTcY04J3EOCZWo+k72hwqiUNyHbOA=; b=W85g4J4Pa/cNmdD5Nm7MK57aRQc+Z/o4b9HD0S+VUEJELJx7smxpxYc/OBLsyyGqBTjogTFw3UQ3d6Jn1OROKmfTNKX+JVCuE+d5M1FC60jYMs5Yy7L8snYHqUzGQCBT24kpwhsNoh7x4ybt2y7aS/mofSMOCX2RlreWMA2PTh7TkZJDEITMQaqvej+krYHrwmWSJZe0FAaJjpBK6x31mClvLCi4cvcB6Upm2jZiBbwY6AhoiuCnTZnBM+y2qjj5+HODq+Er+RFBBoh6TeiIYzOox1eYomEQDyNjJj70EK+Rnodk1xRl9EgiL3jfT7l05txxwNCOBM9TyOUk92bmrQ== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by DB9P250MB0403.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:327::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7544.54; Sat, 11 May 2024 20:54:43 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::d6a1:e3af:a5f1:b614]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::d6a1:e3af:a5f1:b614%7]) with mapi id 15.20.7544.052; Sat, 11 May 2024 20:54:43 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sat, 11 May 2024 22:51:09 +0200 Message-ID: X-Mailer: git-send-email 2.40.1 In-Reply-To: References: X-TMN: [bikEGAOt64QjngHphtygj0knCyWFJFYK7RQ0YWlRGNM=] X-ClientProxiedBy: ZR0P278CA0172.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:45::6) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20240511205135.2411886-44-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|DB9P250MB0403:EE_ X-MS-Office365-Filtering-Correlation-Id: 9b88c708-a367-41c4-9f86-08dc71fc9563 X-Microsoft-Antispam: BCL:0; ARA:14566002|461199019|440099019|3412199016|1710799017; X-Microsoft-Antispam-Message-Info: 1HSEe+5KAnlEYglUXxlOEitD0rAaohoDbECdYPKxxT9Kuw+W3U8kujWq/qhdGtEIDBbza2xhai9ISr7wdXZ8NkWrk5hOajDOUcl8v3J5jmIHX70g+i5YZwQWXzojZ7+MZgQ2VFkbGDVu4mcTEhwDnZbQzNg/SQzyTpwfmTya2Fy1q6BvePLHmeJjEooaohk2CRf3MfBd5xPUGiVrzddUEbJNEJWiMPa7kt3n0kMJanaP2U8j+RqADVxDrBYHk22dgBOMi2xw/WZ8nGYhfogotyFfv1cuArnImLzJKR2oXhMhssY+xRUehGoaquH1mJtUHc3WKgX8SpqljynjcaHNFoG/Qws6ukfZlhNnZj2t74mrrzjaDDPHrb79MhgJuil4gLunFCldr8HtCN3t3QtBVyvOhO/xiH/FMdhbn5ySh0DzpY9KiZ9sL4T6ZOGTFagDbSy1eYbPH27/2Zd0rlx7dI6PPq30xgDgPJXBGWq98/rqKbZkO1ihJ9uyZ5MfC5bgcMCBSif4PIQO2xztGl4a7lsIzIDDgbkCMU8Gd3KVr53oceB7yCfwY4zQheTI8Ohw8B4oXUDkYzhW8bS7OHM4m62O2pLSAPg4nimxhr4ZKpWBmGKcnCDwGsECjKJh0lYp X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: fN6o8zZQRMsraF+QTbwlhbf25srIpwlRG8ad63qXzn/gUJZSJdHIpQzTyZMZTGVcKLlbUSSWRxu9Jnibcv6+Y+OMWrjeD93UsmcpBhINX0JJH1wARDtgonlglyNYDgYOdeMhM0dQb08QByGyT8YuyZOIvqVjXLLX025ec/MdKP9enkDLJ62nHTZcy9JpyqqTY3LzSIRACKIaCmPhINM92ivMOzexrKqwI6Ar28e3XkMRHck+AN9BAnrtGuh9khv8XfIspTrIUhKHw8AE3xc/YXwg1EJLqiJBs+P0EE7V8GhjjX/SG0LTQFs4E8yJKRLnn96TMfP7sNEzrLP3SeUVbIxf0cv6Ky9vhYezi/llbo6bpSsIr2o8Sr469NiQxSMZDCzxBE4eF9zqP2/L3Wedxopg8dYfTYqbUusBnX5I1By2BYa1OMAN9iNsDFE7hIHH6yCMk7cEPgYJbp/teH1ys/TGb8u734Y2nRnhfcxmgjy1sjfvKjoEwsBlUFPK+1w/1QaFfq/Y4vPHLl8jd1QcVRFujPSi5SNx0tLHSXrp/0lgtJ1FF5+uJb6qLuI10GN3xR7jKar9DhL4Vkdh7T0CH0u994D+86W4Hb4PuJA0g4VywOn1roqx3N1KQL5E+Vm97Mf38lePJ/1fPthNGp+ndlTznCRN+vZRa6RO3YGxTku6QgOEPJz3rFlmrBD3Hb3pM75azC11Za64OO22R0HLTqh3k0UifWmtT8FlYj8EXCq2rN0VRCk+sPYbh6UQIGJlHUjBKvghgZfMSvc7M6JIx2Vc1ercJQvVC57jSq7Bicr9hTaOfNwD/aHtrGZkmsnkhFwvRQZW/p30f51DMOwpWTHcUBINPzy5esfJS8fMizWvm8ZtyHVv+Tq/6xapFnT9EM6/a22V2EijjemBs96jd6QZR4Kg6gE5VXCw8pUlnc/4++wzrTKmyAcrdDn0jNix53mfD8Yq3DeSan/efu1BvwSdrmlTjF0lCidLoAjucHfQK7kcfbD0HiUDIvq4KrFzWBDZqtHvhxZleDHdd5yuLUNGZjlcgork2GT7HXHDMaoTsVnGs7je0Yl7l+07B9nqLXwlQML8csNTLVjMtaF5Sey/JcFDKARFizLuuDpxU0wZkKwpCeeB95SaAwQC9cOYjN8kSNkZfqgisVnnxacYxLA9G84EN951GO+CvHRAKaxKVzBj1iGJhDFZLypvZ6px/fWYJOc9TeIRTj3rgHeJbMQuykq+e3OfzHFJS5IjQdhBlSrZ0G4G+cZ4/UV6XLaLzL7KY4IaDapmDoltbhYO2Q== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9b88c708-a367-41c4-9f86-08dc71fc9563 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 May 2024 20:54:43.3864 (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: DB9P250MB0403 Subject: [FFmpeg-devel] [PATCH v2 45/71] avcodec/mpegvideo_enc: Factor setting length of B frame chain out 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: aO+v6a7zi5qc It already avoids a goto and will be useful in the future to be able to specify each functions tasks and obligations. Signed-off-by: Andreas Rheinhardt --- libavcodec/mpegvideo_enc.c | 33 +++++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/libavcodec/mpegvideo_enc.c b/libavcodec/mpegvideo_enc.c index cd25cd3221..025204f395 100644 --- a/libavcodec/mpegvideo_enc.c +++ b/libavcodec/mpegvideo_enc.c @@ -1472,13 +1472,15 @@ fail: return best_b_count; } -static int select_input_picture(MpegEncContext *s) +/** + * Determines whether an input picture is discarded or not + * and if not determines the length of the next chain of B frames + * and puts these pictures (including the P frame) into + * reordered_input_picture. + */ +static int set_bframe_chain_length(MpegEncContext *s) { - int i, ret; - - for (int i = 1; i <= MAX_B_FRAMES; i++) - s->reordered_input_picture[i - 1] = s->reordered_input_picture[i]; - s->reordered_input_picture[MAX_B_FRAMES] = NULL; + int i; /* set next picture type & ordering */ if (!s->reordered_input_picture[0] && s->input_picture[0]) { @@ -1491,7 +1493,7 @@ static int select_input_picture(MpegEncContext *s) ff_vbv_update(s, 0); - goto no_output_pic; + return 0; } } @@ -1598,7 +1600,22 @@ static int select_input_picture(MpegEncContext *s) } } } -no_output_pic: + + return 0; +} + +static int select_input_picture(MpegEncContext *s) +{ + int ret; + + for (int i = 1; i <= MAX_B_FRAMES; i++) + s->reordered_input_picture[i - 1] = s->reordered_input_picture[i]; + s->reordered_input_picture[MAX_B_FRAMES] = NULL; + + ret = set_bframe_chain_length(s); + if (ret < 0) + return ret; + av_frame_unref(s->new_pic); if (s->reordered_input_picture[0]) {