From patchwork Sat May 11 20:51:11 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 48773 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:1706:b0:1af:cdee:28c5 with SMTP id nv6csp299408pzb; Sat, 11 May 2024 13:58:42 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCV+L5UOU1KOFqpcdYsfTXbg2HO6NtxHFbO1XaJsSwYSyX6g2v5G0ZFLdUmoAT24QoXmJzqkkOctwuc1P061VfOOw4QoKdNkepXVRg== X-Google-Smtp-Source: AGHT+IGkSjHWPO2HoN76k9WsEo0DshjGn9e5lXjgwgVeCtRBZ1cw7rKya8E+2R+M5BFKX9EZ7YUM X-Received: by 2002:a50:f699:0:b0:572:7c99:a280 with SMTP id 4fb4d7f45d1cf-5734d5c0c28mr4364169a12.15.1715461121803; Sat, 11 May 2024 13:58:41 -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 4fb4d7f45d1cf-5733beac808si3396266a12.22.2024.05.11.13.58.41; Sat, 11 May 2024 13:58:41 -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=RMHYXdHq; 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 E5DB668D60B; Sat, 11 May 2024 23:54:52 +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-db3eur04olkn2043.outbound.protection.outlook.com [40.92.74.43]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4F6CB68D792 for ; Sat, 11 May 2024 23:54:49 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XVTHCy/b9Q6ywfNAEwu7Osxet5q+DEk05lbHOzVuPEftMmJs7+OQsN0C5IYeds7RvgIJMrQ2DGzPvXyEUybT3F7pY61YInS4aBFBweMWcB8ltRBD2sOOrPJuzJOhNG64KC0j3l7c3VYPGCU28kTXoU1cUQGrs0Cp3Cik0KCz8LnjVCImuftLt0tWuivJLz1A6TebbcdMMgMqbysjR/p5eDJRCEL0qIeudH89WEW7POkICBDkohBxO6Rba36wIEtlx+TbWxnCB6kmO3rLpfvFhy63pcUHSj7fKNcJDWth4UJ8pPFvqbF/oDFyHoTQE8urb+AUnFw+tmnjz/GI9LifDg== 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=s4eM1B4rfBiKq6VMDw9lGyWyzUSggPviosq04wLtOCY=; b=junPITb5EC1IP5Cj0+qhEEvQfX63QiP3BaI1ViShAgxes9f6KMymU7svMAnXGDgP4aEYbT2J8b5XckeIAB9gKVVmg5Uwk+bhcu9aStDs2CF3s9MEexb9piBRqrmVU0/+BbjgnNGC0LEwjE8OSeUYVw/++4dBDlt+mfH5gub4r7IXNc9JfZXmjfNcOGekezF5elwemnRIu5ez6CsVYYHVwy9tZ0/pEl8WkK0VTX6TMVb5IHBlnlvfaiy1RSfUKYwnEU57NxW2Vp7mg4V4roHd7zwh8FSKntSVwZ0yJZdxInOSNU6xjBVTU+vEnaFY6BWskiSde6BcR4rcgbjnEv02Vw== 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=s4eM1B4rfBiKq6VMDw9lGyWyzUSggPviosq04wLtOCY=; b=RMHYXdHq/ePip/LJGwSSxAHo1Ab4OU5IIqy+fPAMemdEQTVwDb2QtFaVSksVJR/18NXr/d5t7PxfEww19Gun5MOR1CJ0eZR38+If4kMI0xRQBzEXAopgyNFqbPaQRMcONAlCu4w+dBIDnquefcwHll8wV/7ocJaYuRWQ6nijhbzTMT5xAFcvFOleinNagPDI8T43c6Eg88P4C96SlC/MQNb4IdY9oU/XemXxQAJL//S5GNRyNAGTPZaUbEcdS906wfLH4H4+zdc6sr8AJ3ZG/0BHSvB/BnkZYoUiyHUGk+JIFBAUZBD/b4v6+sQUaWesEdzopF/13g89n0JO0jC/vA== 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:47 +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:46 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sat, 11 May 2024 22:51:11 +0200 Message-ID: X-Mailer: git-send-email 2.40.1 In-Reply-To: References: X-TMN: [atAmSQPAaU6k6brwEu85l9OS3x+8HsYOfmzFyIAmgP4=] 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-46-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: ef9b106e-887f-4f1e-77d6-08dc71fc9775 X-Microsoft-Antispam: BCL:0; ARA:14566002|461199019|440099019|3412199016|1710799017; X-Microsoft-Antispam-Message-Info: fWd3f1eqkFE3kzIfdmrPGy1GIgX95tRR3yD27gMVborwO9blRq4iw5WNv7eQJ9h56wEh0cgcKa0QOm9vdJOwp2UODaeHMgaMD8oX4WZ5T8MAAifNeaN0/aRa9Wfr6qs+F70hCPWzhiVu7mKHiEfo3NbOnqBKgaqJo9s84PlcYcMTppGhL1P5mIZfrOHUvNNBU/Q8NJYBaX6DCPuUFogTZVnaJqMi6p9vvNuTkxCRS06f1hm77ECyPg2mdWV7dfdhxQAhtI/Eh5KsbY3Nwo9sLreIlr0F8Dw7DdTw64HMGTfbF8w0bFNc/is9Do/TjZRx53rvY+U7FTYNpTx0Ft4irt1BdcS8HhXULcHdxeXWkcRH7pQAZ2Qgt0+wxD2HDU2tBUj8owqPmO7Xa1IsyEgkgxK9o1851T187vj56vRkfAxmKY7Twd4tXiNHnVdk5lGyobyz50I/IaMFxp3g7Oc7/Ljrnfe2d06CMN+1KCK6gRuGq+PIwIcyOqxOsqZr/aM1cdZ+PDdawo6MNE6CPPSO90qoCikALGktkZLxHqajU5GuQ788mYH9CidmNE2jTpkxEFo7Al8SeI8vLHkB0aI6cyegR23NRipPk5XnI5sA6Uy36qIwGCPhSQX5i3VNHoqD X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 1YmSjmMmN1f1/Oi3DAFVeArbsXJLwGDtu0zDPMswxmFiHssggJ+WjWuRFCvUwdLKmNYiDbubBCXDDB9/9lEyOOFmfvDE0TS+ZB6LlA/j/HRbeTpHydQPF2hosVgrpI4o4Qc282lVgo0QlDK9JRiBrugGHwByJtWjsGRQOmoWy5p+tL5F/8OOz9VVJCTatQW7o2PcU1rjkxSRuk2FHhZHqnsFaACib2Qb6ymYiHZeAYIN8Cp/Jw3OKn/DApRdg7HdTyUEbWOCthllQdYdqozrtI1pohuc/ClgX9DOLx+MSO8YxgyiSQPMCDJOlrpu72aBPcsIIIzR927Y0FStBXjuQpiosSEeFp6tkp1HUDwp9lO8QWjUli+BUKUQPpVAqfmeQv1MCjM5KitzCNu0e7OkaHim+M4rT12I/xwU3op9qkNjJr6/Z8+20w6xgZky0A9ZOSS9f4O98a6MBQ+XFkeLRzg55LCiaHFZ+RccAyRFl/mNEJskFerguFgbo2JhixnOXcdQs4nZ/7L/xt2mJ2jeM5MM9Nxun43KLq7pNmGnWtltrnN0OSMSv3kS/kjIzzEw9oKpkLOVQIsGsz0RwAowS2SgTPW7hLgGmogOOz1abUUnsaZYnYLDYRnmWFGr3iO+SRbi4T/64WkXvhzsAhcT87m41JHCcJCFsZVgx3+m29vJItaWTVA7HUMnPy5pbrhPpxaAgQJhDchczpTMha4l6VgDVr2blJUHFIUqG8MlGcXW0wWoLDm5MgLLPYK6b1K2l/oPs7ACboczHLbkczfRQb89pB9OmeXkhVi9T5A6ltJr4RXH63RSFaK1iNTc7XuM92Fi9o1BXHasfQRLUs/6atYAIRnLMeMAx9T/ru4nUJInIFGoxPIQOL2TQCZhIblvDJrQ1usu2CcZNrXA9y/E9UHhiDbiRXgeNguWpqu6kPXyO1sVsomS1M8zyyYsjmzB1uhMmqJQ9L2WqUf1IBSLH73UJnIROUPcYbMxcAH/TzdZ39NzLh0kYsAUORQwpXPBCjw1K/mg0raXe3nStTJTlFYzwDjAtW3PEW6wyBTUShJ3vcAq5GGBIlq12B1e2W+ncrjvtYi1/U4b+c64aNZE0/Rc/QLFs6j9fT/6tG8jdvoaYEL7XrkA89TIELY0Kx+PwB+jOrmuJK+/GqTd+wweHut+35lWt7MpvZYCpVSc3CdAR2WqRMGt/tdbuQxHa/mlLo6RukFFjzj+gI0l4MIxkvyp3dukZp4rUmHAwqvE4NhACD8rcKNZLajTH0o+jBe/LVOBGLF00+9+zEn/s6DTkw== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ef9b106e-887f-4f1e-77d6-08dc71fc9775 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:46.8979 (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 47/71] avcodec/mpegvideo_enc: Reindentation 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: NBpevlaAJy/M Also try to use loop-scope for iterators. Signed-off-by: Andreas Rheinhardt --- libavcodec/mpegvideo_enc.c | 193 ++++++++++++++++++------------------- 1 file changed, 96 insertions(+), 97 deletions(-) diff --git a/libavcodec/mpegvideo_enc.c b/libavcodec/mpegvideo_enc.c index 610067eaef..c9dc9959df 100644 --- a/libavcodec/mpegvideo_enc.c +++ b/libavcodec/mpegvideo_enc.c @@ -1480,129 +1480,128 @@ fail: */ static int set_bframe_chain_length(MpegEncContext *s) { - int i; - /* Either nothing to do or can't do anything */ if (s->reordered_input_picture[0] || !s->input_picture[0]) return 0; /* set next picture type & ordering */ - if (s->frame_skip_threshold || s->frame_skip_factor) { - if (s->picture_in_gop_number < s->gop_size && - s->next_pic.ptr && - skip_check(s, s->input_picture[0], s->next_pic.ptr)) { - // FIXME check that the gop check above is +-1 correct - ff_mpeg_unref_picture(s->input_picture[0]); + if (s->frame_skip_threshold || s->frame_skip_factor) { + if (s->picture_in_gop_number < s->gop_size && + s->next_pic.ptr && + skip_check(s, s->input_picture[0], s->next_pic.ptr)) { + // FIXME check that the gop check above is +-1 correct + ff_mpeg_unref_picture(s->input_picture[0]); - ff_vbv_update(s, 0); + ff_vbv_update(s, 0); - return 0; - } + return 0; } + } - if (/*s->picture_in_gop_number >= s->gop_size ||*/ - !s->next_pic.ptr || s->intra_only) { - s->reordered_input_picture[0] = s->input_picture[0]; - s->reordered_input_picture[0]->f->pict_type = AV_PICTURE_TYPE_I; - s->reordered_input_picture[0]->coded_picture_number = - s->coded_picture_number++; - } else { - int b_frames = 0; - - if (s->avctx->flags & AV_CODEC_FLAG_PASS2) { - for (i = 0; i < s->max_b_frames + 1; i++) { - int pict_num = s->input_picture[0]->display_picture_number + i; - - if (pict_num >= s->rc_context.num_entries) - break; - if (!s->input_picture[i]) { - s->rc_context.entry[pict_num - 1].new_pict_type = AV_PICTURE_TYPE_P; - break; - } + if (/*s->picture_in_gop_number >= s->gop_size ||*/ + !s->next_pic.ptr || s->intra_only) { + s->reordered_input_picture[0] = s->input_picture[0]; + s->reordered_input_picture[0]->f->pict_type = AV_PICTURE_TYPE_I; + s->reordered_input_picture[0]->coded_picture_number = + s->coded_picture_number++; + } else { + int b_frames = 0; - s->input_picture[i]->f->pict_type = - s->rc_context.entry[pict_num].new_pict_type; - } - } + if (s->avctx->flags & AV_CODEC_FLAG_PASS2) { + for (int i = 0; i < s->max_b_frames + 1; i++) { + int pict_num = s->input_picture[0]->display_picture_number + i; - if (s->b_frame_strategy == 0) { - b_frames = s->max_b_frames; - while (b_frames && !s->input_picture[b_frames]) - b_frames--; - } else if (s->b_frame_strategy == 1) { - for (i = 1; i < s->max_b_frames + 1; i++) { - if (s->input_picture[i] && - s->input_picture[i]->b_frame_score == 0) { - s->input_picture[i]->b_frame_score = - get_intra_count(s, - s->input_picture[i ]->f->data[0], - s->input_picture[i - 1]->f->data[0], - s->linesize) + 1; - } - } - for (i = 0; i < s->max_b_frames + 1; i++) { - if (!s->input_picture[i] || - s->input_picture[i]->b_frame_score - 1 > - s->mb_num / s->b_sensitivity) - break; + if (pict_num >= s->rc_context.num_entries) + break; + if (!s->input_picture[i]) { + s->rc_context.entry[pict_num - 1].new_pict_type = AV_PICTURE_TYPE_P; + break; } - b_frames = FFMAX(0, i - 1); + s->input_picture[i]->f->pict_type = + s->rc_context.entry[pict_num].new_pict_type; + } + } - /* reset scores */ - for (i = 0; i < b_frames + 1; i++) { - s->input_picture[i]->b_frame_score = 0; - } - } else if (s->b_frame_strategy == 2) { - b_frames = estimate_best_b_count(s); - if (b_frames < 0) { - ff_mpeg_unref_picture(s->input_picture[0]); - return b_frames; + if (s->b_frame_strategy == 0) { + b_frames = s->max_b_frames; + while (b_frames && !s->input_picture[b_frames]) + b_frames--; + } else if (s->b_frame_strategy == 1) { + int i; + for (i = 1; i < s->max_b_frames + 1; i++) { + if (s->input_picture[i] && + s->input_picture[i]->b_frame_score == 0) { + s->input_picture[i]->b_frame_score = + get_intra_count(s, + s->input_picture[i ]->f->data[0], + s->input_picture[i - 1]->f->data[0], + s->linesize) + 1; } } + for (i = 0; i < s->max_b_frames + 1; i++) { + if (!s->input_picture[i] || + s->input_picture[i]->b_frame_score - 1 > + s->mb_num / s->b_sensitivity) + break; + } - emms_c(); + b_frames = FFMAX(0, i - 1); - for (i = b_frames - 1; i >= 0; i--) { - int type = s->input_picture[i]->f->pict_type; - if (type && type != AV_PICTURE_TYPE_B) - b_frames = i; + /* reset scores */ + for (i = 0; i < b_frames + 1; i++) { + s->input_picture[i]->b_frame_score = 0; } - if (s->input_picture[b_frames]->f->pict_type == AV_PICTURE_TYPE_B && - b_frames == s->max_b_frames) { - av_log(s->avctx, AV_LOG_ERROR, - "warning, too many B-frames in a row\n"); + } else if (s->b_frame_strategy == 2) { + b_frames = estimate_best_b_count(s); + if (b_frames < 0) { + ff_mpeg_unref_picture(s->input_picture[0]); + return b_frames; } + } - if (s->picture_in_gop_number + b_frames >= s->gop_size) { - if ((s->mpv_flags & FF_MPV_FLAG_STRICT_GOP) && - s->gop_size > s->picture_in_gop_number) { - b_frames = s->gop_size - s->picture_in_gop_number - 1; - } else { - if (s->avctx->flags & AV_CODEC_FLAG_CLOSED_GOP) - b_frames = 0; - s->input_picture[b_frames]->f->pict_type = AV_PICTURE_TYPE_I; - } - } + emms_c(); - if ((s->avctx->flags & AV_CODEC_FLAG_CLOSED_GOP) && b_frames && - s->input_picture[b_frames]->f->pict_type == AV_PICTURE_TYPE_I) - b_frames--; + for (int i = b_frames - 1; i >= 0; i--) { + int type = s->input_picture[i]->f->pict_type; + if (type && type != AV_PICTURE_TYPE_B) + b_frames = i; + } + if (s->input_picture[b_frames]->f->pict_type == AV_PICTURE_TYPE_B && + b_frames == s->max_b_frames) { + av_log(s->avctx, AV_LOG_ERROR, + "warning, too many B-frames in a row\n"); + } - s->reordered_input_picture[0] = s->input_picture[b_frames]; - if (s->reordered_input_picture[0]->f->pict_type != AV_PICTURE_TYPE_I) - s->reordered_input_picture[0]->f->pict_type = AV_PICTURE_TYPE_P; - s->reordered_input_picture[0]->coded_picture_number = - s->coded_picture_number++; - for (i = 0; i < b_frames; i++) { - s->reordered_input_picture[i + 1] = s->input_picture[i]; - s->reordered_input_picture[i + 1]->f->pict_type = - AV_PICTURE_TYPE_B; - s->reordered_input_picture[i + 1]->coded_picture_number = - s->coded_picture_number++; + if (s->picture_in_gop_number + b_frames >= s->gop_size) { + if ((s->mpv_flags & FF_MPV_FLAG_STRICT_GOP) && + s->gop_size > s->picture_in_gop_number) { + b_frames = s->gop_size - s->picture_in_gop_number - 1; + } else { + if (s->avctx->flags & AV_CODEC_FLAG_CLOSED_GOP) + b_frames = 0; + s->input_picture[b_frames]->f->pict_type = AV_PICTURE_TYPE_I; } } + if ((s->avctx->flags & AV_CODEC_FLAG_CLOSED_GOP) && b_frames && + s->input_picture[b_frames]->f->pict_type == AV_PICTURE_TYPE_I) + b_frames--; + + s->reordered_input_picture[0] = s->input_picture[b_frames]; + if (s->reordered_input_picture[0]->f->pict_type != AV_PICTURE_TYPE_I) + s->reordered_input_picture[0]->f->pict_type = AV_PICTURE_TYPE_P; + s->reordered_input_picture[0]->coded_picture_number = + s->coded_picture_number++; + for (int i = 0; i < b_frames; i++) { + s->reordered_input_picture[i + 1] = s->input_picture[i]; + s->reordered_input_picture[i + 1]->f->pict_type = + AV_PICTURE_TYPE_B; + s->reordered_input_picture[i + 1]->coded_picture_number = + s->coded_picture_number++; + } + } + return 0; }