From patchwork Tue Aug 9 19:55:32 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 37206 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:3d0d:b0:8d:a68e:8a0e with SMTP id y13csp463261pzi; Tue, 9 Aug 2022 12:55:54 -0700 (PDT) X-Google-Smtp-Source: AA6agR4uJ7xhuF4stLGPAqBOFC/CHRgVAOFYPSioVbwGqSG3//omUpm5kB11fipBl+g7QohCMAuc X-Received: by 2002:a17:907:d9e:b0:731:1a5:8c68 with SMTP id go30-20020a1709070d9e00b0073101a58c68mr14345369ejc.365.1660074954493; Tue, 09 Aug 2022 12:55:54 -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 du14-20020a17090772ce00b0073301a22cb7si640491ejc.294.2022.08.09.12.55.53; Tue, 09 Aug 2022 12:55:54 -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=V7O9vRXA; 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 ECDED68B808; Tue, 9 Aug 2022 22:55:50 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-oln040092075014.outbound.protection.outlook.com [40.92.75.14]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 729F068B650 for ; Tue, 9 Aug 2022 22:55:44 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=nTVkZJucwRO8HvpqIEbMuE/iKLQWE8DrHc7zCde1OfjvGc30ePNOiDsl1z64uioe+kb4A3981lSM8HAKCGtZRlb26+00QDbloCHdGdDKVk0/bjqJ+TbvhyjwI/L0OkYHTvHuBX/kH+L5gbNSYL8u6ucMC5w72oseX9qMdkZGHEyWO/2UjRAreVzWjHb/YE2Qg0XGFYjECKnLLamaFrb9lnACzhvj201jrBhWPrJdE4sVoFyTxeHDjjida5O2JJSPG6K/zlSHg2X/aFDrGI+SUeWny+RyuSJPhXpDEtLhbQFjzq+HO4KdoSerfrKQYPfEL7eV739KeHx5tynsME3suA== 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=6mY0LpxVc6PmK85ACk/U2U/0sfrJkegWpK4CcAjBE5Q=; b=hS2Hd5egdw4KdMJ1+xp74aXABoWtZWDUH4Dz0De80M4f13cotMcIfoc4k/9iANd3n7vGwLsLJMWoxvyJipc/heup2JN3ITe25LLY2BhLcE54xNxGd8/VdbKLiVhEmM/zLx7GRjyrHmaFCBOW6k+TZ9eOspycpLOjEvrZRIyMl7JiY9Es2tVTDhC5MloIpH2LW5q3lnZYaAxz/N7VKwQHEl474eoIfMfFf+5S1tgMi7mkkBVn+sNBkc9uV4Jtr4hsmhw4TXy/neOYzZCOLi+be4r6pDHG5Vd9wJuAglQf9c4/Bs5gF99BomjDTwjWPKjxPfplmWgYg4dvgADo5l1HEQ== 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=6mY0LpxVc6PmK85ACk/U2U/0sfrJkegWpK4CcAjBE5Q=; b=V7O9vRXAPYlqUbat6G+UuH7fD+zpESUEdN4pCnR4nI6b7U219mAOywmMDezuHo0lQKESiTLpIjXKVnftk9igtBRVTZAPX9Te51kWNiaeQnz5mbyyO8Lnoq//RR2XxBEfbDlXNx+a5je1p4RFMKWinGavn4T8BJQi0C68q9botpAAtKsf0BuvIyvl/H9JKY7Ys9jc5VONP6FC6EvU8xs80UqVEgXygp5raP164iTr1gfVIV5hWjj1Usx/p66Z7VEhATf+dJmPq9TIEniHt70uNb4XOEWPoDcVt5gWmONYrqun8K32H/J4o17E7JpSEPHUxg5y6IcCIQaeC01j6oiGBA== Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) by AS8PR01MB8276.eurprd01.prod.exchangelabs.com (2603:10a6:20b:343::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5504.16; Tue, 9 Aug 2022 19:55:43 +0000 Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::210e:b627:bcc9:8c46]) by DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::210e:b627:bcc9:8c46%11]) with mapi id 15.20.5504.020; Tue, 9 Aug 2022 19:55:43 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Tue, 9 Aug 2022 21:55:32 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [MNzDNJ80ly2wsgh12QS+c5jCgwrzdwvk] X-ClientProxiedBy: ZR0P278CA0019.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:1c::6) To DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) X-Microsoft-Original-Message-ID: <20220809195533.361307-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: dc549829-45ab-44cd-ffe5-08da7a412449 X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiTC4ziyQch4o322A/V1AY5qaUN2lY0rncuO8Iqe3tS0kXrzr5l7yKferufzEo22bkGJz5pTz7lFdbmBLJmGJ41UIVByvq3+lufnw4OHXgwBe6SwxQ/v2fY9m/5CJo5y6jZCKJY3letxM87uiIuGx1qTmGitcbCMdSS8LqLS6RkvuPzm3yYgRKp+mj28cjPedWoQwWRxOiZCeQ4oxHMEX+LlMxlMfSJ1+imRk/1Kwb1X0FmbRZ3ZjM+YV5lhYZ8FaDsKOVSWcNrxqGDKeTRe3RPzMaeQlx+Rk5si71eYnyjtOT1ikUwgQWCiC00J5VMXWQEBtsZNOEOal2qVeHRF1AFFjYpUlivfvCzPGdwnyaMFQekhLLPXMOglPT6iVCrx+XhaZx8hcpDWa7hijlwJuuzK84oojtZVWwvtlSdls3wPGEo2SObH5Khqls9G7/Jx8hA3uQ+SgYtV/N9qPLXbhfEhNyIQPN/MtwJ14FSrATm+ZVmj53zpLkAxEKwEuGfFP+QnMS8KWokmYzL/J+WeStpKeyDmkvoAyw9BHSQ/9HT4q19mnFncGSCW79ABkNqxXGr2YR8H6BBo48NfwqPoYgBjsi+RAWSCQb7Fd4hk9hHE21phFeF5FFMc1+Qt6E+iyK0m+yWewfNruISY+BY7T6Y6gbDcH118haHz+YCNMk6twk7zG6m9+KMZfgvFd5+uPibWBvVj4svuAJK2aZ8WXPxmBKF8lZS5Xbz2YbFDCtqIJaNnZdQoJ4iUSMOSYDVrZck= X-MS-TrafficTypeDiagnostic: AS8PR01MB8276:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: TGyz6N4QpGhG3ae2scGrBPsdXK11a/jxvWIrz1ZfDoDzUd+Mbw9L+8AjO34ih/fvMsBwNB6LFrQQtrRz1sqQ9JcpEN+WxvNW0Tyd8fOAqn3PRGsD1moBKbYhZCXriBOzXKj4DDPSa2bGkcsiW3iRvyTgT3brzTDpYXh082m68uwxhvKPtFvjUWF9Cs0ExV/ujilQDeNOTVTm9E9kYX5Y4DEA6P6d6cQvfLzwvyzpmhDbrJLUAJM4RCAS2/5q5Qf7f/UjX/E+JeR5BZOEszWnalPVMcZgn12g1uZnxF7kLJWkJkXQZFsOowWgoNea5yswjjWRvgJKBOPc9/YyQoeE6bVsmXMgqi3nEeGE6GyieMntMMTOXIQ07XyUqxSoLuwzIWY0pVhJ+3Kyd3Q60vQK+xFf340UhNqCRQjBgJ5kEmQAkvzwj01je2JCTk1fJhSK+CYtr9p3SP1ZSqDfI9wumEoC0gnvQT0gKhYzo7XbXNoPFfuaqwIMb+5Dx47D09tVuY1eACvWsk8lBBZjwbkCr8SUNJUMjEsMHbRNNDvGV45H7yTUCzze0ESaXWMvMyzvt4BvumuwITOTdqSHRWQNXUQ0A+hXHKFViaFnZBFxRv712TvVfyVgdq7ZSIkaNnkK3nXe2mifHc5PXnkQ5ioKVw== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Wxd/dAb/LsyJeUIjjhIhQiV0HIoLMi8FZskDOcKnMk4i2DZ5lxzjmSHAJoMOJpsSFoRG2CzYOUWFpthEvHNvO9g2Z9NYuZTEZCM07R3kZGjGykiUL+UpNAR2xOzNS+oejdmkdq1vZ2MLehsbVIf6I0DFxt644CG5AFq33dm9PXDkU2cPhl1FQzk7ar3dG8SJEQd6KSMiayLzgSJIyDUQdUhBWtTA7Epss6rnsjz2FXpn/YC/3jsbiQcpRLqedgzECxFnMwwKsWZs05h9XUR/3TMqsCjUiuJivqb4IFtyI/jnHsBaHmfw3haoqpuSVqSNq0WbZCJDcUsj2Zms3DEng4SHybYkHU1KaLPzm+ngO4A7/jgZgqCNHCEG7KooSpfXStbecFmNCP4/KPr7yyxGwMpWHZMSa2NcA5TV+YM37ZjkxWkjfx5XfT5DOVMObVsHJtk2Wj3Nj8gAVXKMEUHEH+4K2CBujlZ9R9Ctao21dwUsjU6JVVg4Daqm64dUy2/Djntc6js/+aNCpAKfXEyDkcx/WWrCoErK7CAUMUeunXP+prGS0l3l4P6TAAIuZL0S39PYBUFKWxz+sY+tRimKIwm6LoDYGSYCzy3aNJ29IyAtskhMnrfyrr4hQ6kyeH9kLqhtt9hlrM2HSCE7Xr7yDxF1G13YT1g65a+Nqxzfm2v2+1gtVEu+wCPzS30GPqI7KwZxtxnU8Moe2MZGphTm1U/NiuVlAHJcy1hIkUQo0o91Vif4cvrsSLQ7hAz1FYV0QL5J6imGt+9YG2Be5qUp6oxrI4dbUxj7bDrT+FT/0m9GDO/qmeygTItzMcWLYFJ4nJb9JcOqN5PtgmOALQlkU88zn76Sh7PF42Guqp9s/7n7aNtW9k5vz3gZQTy/cLJu6RFhyfG7zPj4g0jwS7iyt+YpnYwA2kehX+VGn3AZoG78TF9kJ3xeAGQsv7aPcvpg2tS/S9MpkMl7Mrju8q/qdtZ6O5oKYz7fXEVgZmXPE38td6VlEzXkztmIPdRiDO5zTQSDGuX4QL73zZ1/lCDwHH0AA7pg03XMw8EEsJ/wag1SX4aQ5P1uUBwY6h1lF8HmCzpN3PJoyq/eE4oS9iAmYBbtp2n+TAoETQNIHWv9TAyNV1OXTfOYXh7GsjcZQzwLr33UwThneaDp8NTAi/BkeeWOlWrNcnSZ+ttPjZQqzFd9Mp86nsvfBlQEOVnD6RTSq0k/1V2qGbkcUNtXpvG2VAYMrZCM62U8Fv1ByYVZ50tsTnTKHhTCzoncu6pU5e5sx257GOBRQ+AyoWvm5cUjrTx4n8c4zqjEDZHTOpZ6/Kw= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: dc549829-45ab-44cd-ffe5-08da7a412449 X-MS-Exchange-CrossTenant-AuthSource: DB6PR0101MB2214.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Aug 2022 19:55:42.9451 (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: AS8PR01MB8276 Subject: [FFmpeg-devel] [PATCH 10/11] avcodec/mpegvideo: Move setting mb_height to ff_mpv_init_context_frame 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: dSAcl3B5qEnF It is the proper place to set it, directly besides mb_width and mb_stride. The reason for doing it the way it is done now seems to be that the code does not create more slice contexts than necessary (i.e. not more than one per row), so that this number needs to be known before setting the number of slices. But this can always be arranged by just moving the code that sets the number of slices. Signed-off-by: Andreas Rheinhardt --- Unfortunately, there is another place where these values are set: ff_vc1_parse_frame_header_adv() sets mb_height; it might change it by one. libavcodec/mpegvideo.c | 32 ++++++++++++++++---------------- libavcodec/mpegvideo_dec.c | 6 ------ 2 files changed, 16 insertions(+), 22 deletions(-) diff --git a/libavcodec/mpegvideo.c b/libavcodec/mpegvideo.c index 1405176c06..ff08168362 100644 --- a/libavcodec/mpegvideo.c +++ b/libavcodec/mpegvideo.c @@ -526,6 +526,11 @@ int ff_mpv_init_context_frame(MpegEncContext *s) { int y_size, c_size, yc_size, i, mb_array_size, mv_table_size, x, y; + if (s->codec_id == AV_CODEC_ID_MPEG2VIDEO && !s->progressive_sequence) + s->mb_height = (s->height + 31) / 32 * 2; + else + s->mb_height = (s->height + 15) / 16; + s->mb_width = (s->width + 15) / 16; s->mb_stride = s->mb_width + 1; s->b8_stride = s->mb_width * 2 + 1; @@ -747,28 +752,12 @@ av_cold int ff_mpv_common_init(MpegEncContext *s) if (s->encoding && s->avctx->slices) nb_slices = s->avctx->slices; - if (s->codec_id == AV_CODEC_ID_MPEG2VIDEO && !s->progressive_sequence) - s->mb_height = (s->height + 31) / 32 * 2; - else - s->mb_height = (s->height + 15) / 16; - if (s->avctx->pix_fmt == AV_PIX_FMT_NONE) { av_log(s->avctx, AV_LOG_ERROR, "decoding to AV_PIX_FMT_NONE is not supported.\n"); return AVERROR(EINVAL); } - if (nb_slices > MAX_THREADS || (nb_slices > s->mb_height && s->mb_height)) { - int max_slices; - if (s->mb_height) - max_slices = FFMIN(MAX_THREADS, s->mb_height); - else - max_slices = MAX_THREADS; - av_log(s->avctx, AV_LOG_WARNING, "too many threads/slices (%d)," - " reducing to %d\n", nb_slices, max_slices); - nb_slices = max_slices; - } - if ((s->width || s->height) && av_image_check_size(s->width, s->height, 0, s->avctx)) return AVERROR(EINVAL); @@ -799,6 +788,17 @@ av_cold int ff_mpv_common_init(MpegEncContext *s) if ((ret = ff_mpv_init_context_frame(s))) goto fail; + if (nb_slices > MAX_THREADS || (nb_slices > s->mb_height && s->mb_height)) { + int max_slices; + if (s->mb_height) + max_slices = FFMIN(MAX_THREADS, s->mb_height); + else + max_slices = MAX_THREADS; + av_log(s->avctx, AV_LOG_WARNING, "too many threads/slices (%d)," + " reducing to %d\n", nb_slices, max_slices); + nb_slices = max_slices; + } + #if FF_API_FLAG_TRUNCATED s->parse_context.state = -1; #endif diff --git a/libavcodec/mpegvideo_dec.c b/libavcodec/mpegvideo_dec.c index 7caaf0596d..93ba4e31b3 100644 --- a/libavcodec/mpegvideo_dec.c +++ b/libavcodec/mpegvideo_dec.c @@ -208,12 +208,6 @@ int ff_mpv_common_frame_size_change(MpegEncContext *s) s->next_picture_ptr = s->current_picture_ptr = NULL; - // init - if (s->codec_id == AV_CODEC_ID_MPEG2VIDEO && !s->progressive_sequence) - s->mb_height = (s->height + 31) / 32 * 2; - else - s->mb_height = (s->height + 15) / 16; - if ((s->width || s->height) && (err = av_image_check_size(s->width, s->height, 0, s->avctx)) < 0) goto fail;