From patchwork Sun Jan 30 06:27:29 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 33922 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6602:2c4e:0:0:0:0 with SMTP id x14csp1771114iov; Sat, 29 Jan 2022 22:31:37 -0800 (PST) X-Google-Smtp-Source: ABdhPJzhkIghpa0uvQH+OzBkubmvFZSDcHAbEM26//g67nr7LqnvMXWLwbFH+ywyI9JiDtnKOina X-Received: by 2002:a17:907:6e09:: with SMTP id sd9mr9136889ejc.259.1643524297325; Sat, 29 Jan 2022 22:31:37 -0800 (PST) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id b1si5750366ejl.766.2022.01.29.22.31.37; Sat, 29 Jan 2022 22:31:37 -0800 (PST) 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=Vh5CsmtM; 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 45EFE68B246; Sun, 30 Jan 2022 08:28:52 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05olkn2108.outbound.protection.outlook.com [40.92.90.108]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id EF59268B228 for ; Sun, 30 Jan 2022 08:28:48 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=nHaktdwKxMHhIcZEZZyhEf7g2T4vgvEbyruwfXCdZUJEiXyh/dNDuQKm410/FJxAvnLQdfIlVas0bIvbSPkikca6jt12OuD3HtOd/ddYdPw++HJN+4nNYXiyc+uaeJMH7L/OBXZ2cguyL70XrRHfBO8Pn3VntzVwjqwQB6Iz4/nhAmV9sH2hCZ2rFgxwDH6CqNZ6Yx08pmYK0cfTKz8yOfWTyXO9EYO5zd7oujr/BCtpO9rMVQSrOOZFp/WueUXd9GETotsMTLAG82deDSnYHhB4k9MFBiK45D9eoJeHGtjD8j2XUyqbpBP8P8cjE5KvK7SpCzqFTSb5C604O9BduA== 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=8QekzsSykIA7OvApI98OkWDknDWmivtzYH65Z3UYS8I=; b=fp4QvbjvP7JTuMUVDi1X7ZOtWsI9uzjKa9pY/Mj/IehYmON1hy4vfA2PVTzWmcFfko0gTmGwSGkcGBkxjVYhmmQfW2v/+BeS88lL3d8BIkyvuPoK0NcHsG5xKzY/227UJYLCiTAeXJYuvXLW7n52+S3al3FcuQMWDz+2MmmCIxByUwiOTgiN0KniJzPGEtQOObUvYwhcNlIKuj4OFmBusI3JTYPaOLU5FNLEu7BhlpFSxtlQBSuCjEUD3K8tuBH66usXr0Anw/qxCqzdX3MDfgjEv5lmImSlxTmIGgId5sp1Fkw5d04D2G/StHiRg8ZBprSutkJf19uGYfqKFl6yQw== 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=8QekzsSykIA7OvApI98OkWDknDWmivtzYH65Z3UYS8I=; b=Vh5CsmtM9LzUTVfrrvV/duf0aOgY5HU2dX4OnM/Lb/JfnwMCx7okIUDRkBgzOXGZRHGmAB80WMNU1Zj+Rx+EEQ28XhsLQnbxU4XGk8ckFFnNwq4tryetGVUbBB27Xv9fWzkqlcycjrtOWR0biWIK+Lh9ML1Wd+C7aXw2RWEGeTjdYO38byPd0NcclvZXdIFijLpodWP2eCoLMCeTMFBA6n4Ut05YxraXFnLPNPYONaPkVOnvWlND8x7vpZ9lcaA7qYe5FpHq0kD9JsDRQzVVMAuc218f5oD/AC6bKP1RkMdYXKcjMNir4LvwrZ23W/ZHH8QbIP2rlyN08nOKEiuPZA== Received: from AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) by PAXPR03MB7666.eurprd03.prod.outlook.com (2603:10a6:102:202::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4930.20; Sun, 30 Jan 2022 06:28:45 +0000 Received: from AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::ac56:2ff4:d304:ab22]) by AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::ac56:2ff4:d304:ab22%6]) with mapi id 15.20.4930.021; Sun, 30 Jan 2022 06:28:44 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sun, 30 Jan 2022 07:27:29 +0100 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [a9PBGLe2x7nr4Tl3VbZqcCbNReZaOyMt] X-ClientProxiedBy: AM6PR10CA0044.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:209:80::21) To AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) X-Microsoft-Original-Message-ID: <20220130062749.936489-20-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f27ff222-7690-4f74-a5a0-08d9e3b9c3da X-MS-TrafficTypeDiagnostic: PAXPR03MB7666:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: +OIoquu4WEi7btDK7FfAu8rF8Ek1huUjcHcXzOWdMnk9fr4JdqnmikTuSlS/ejSO9rx46EPBEQph/xG29HRdopdXp4I/Pd10BsQw67R1SE+sTlOA9UwaOoB/nB2OcUg9rV4ntl7LWWwVgN1apHn5e1XIujMEMJQK5uYGxjGPrrHWunilaMvd7SC2sfHIY3xU7004JPgout52Jwd55rPRzGgMLY8tD9McTBGikuCO3efVTWg0z7V5XdFWwM2onYRxsXC49gELNWFPyxwfJvsUtRfjxtdlkhO6DNq6Vbo9b65uNudacKGghT/+G+L11RLEJva83IOlJw9nBSktkHDfQ3X6EV1TpdqQBHnlJK0Rs+spH5c0JWGkYou8QxCQoQxgjEQ6LPKbvyB/exvaYnXHScZPjfM+791ZeV6jrd09rZvenA9jgRZ/pg/ri2FcYegVQisC7CWu2nXbhvKuPpUPXcOb2oTq+0+ryyYsingincKEue3hre4i3C5ylCCfH9o5Wc8XUmCUuVmJ0PGiOqAPYsc21t7/dxZK7I8uWZ5pmQ+LQ3lXxvmzZu6K9mRAJl9B X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: TSgJ9GYWvJJE2r2oTr5wTu99r4wlPpm4orsCsZhzXtHiX6zUw73xyA9edEZSb96nxUOZ5OAgXtuWafKZUgRRNsFmOFyB/9881zHBiDGAGH5B4wRvUDBiKeA57eKNIHGfVfv7LnjJUnouV4kM8nBKvsJn+TviMXaVxy7teXbbzHYubinj4JdOTPeoz0ljDBfwWtkXo9kLB+WrDc/AHbKHscdxRPiTGcsFqwAyR+VtRFmZqSZ7lypcJ7IpaoR+0miToK82oAXTYXlTkgwDhBL+YXnc6aOB6g6YCkskzFC/2Q6eidllYdXQ1u1xdEXf61TOLvehZSzVgioUah6tBsjSaSkzu5Z12GCAzIRHfUxlasfEtDRw5lSQnj1iyn4mOPa+JwIFCrfOAMCMjC/V9KtuODBcu5E0Uri4O6OaGIGpe0LvwFyuzZYN+ierFwJaVS0zlEthOZQ27SQsEr5FZISiqlFdIeyKhrPkIYVMkkWCyQZGgYALlE/2A0wxXTs7kfnR9lokobGp0byhH1oSRt3Lowuje0lR1OiK/i3Te1QiXLx7F4f+DLuCEv2VO6VAMm87hg5hVmRLg4xxFMO+zg73lEJpAiFaPtcEt7p+egZWUBs3pSjH9yc/G4qcL+skxQ18UxVQ46zfifB4xrXQSpJ2ELS+b/MsmZCSyrjm6HA8RZmhuwH//Hw9hl9kMxWs5qZpoXPtUHoNjgg/MUVk9d6rJ6QZhpR5WEk0UeSSgLzrbSQZBZH9soFSqcqak+llEC4aY173mL4Uio0GenJprXpfBSVWD9Hh++FamItCe5EjwKT32wniYdyZKkYhyktdpS6fI7lr8TN/g4VcGA+lwBzmfSSj8skAlDHuhUjs773dlW+YdtQBZC/mkzNMw/eY5Sto5jCjeutE5h12IHg2oUmVZjzVFdgUsndiLh/lGBRDiRufAZ4pZD8bcQtd4D1HZgQjlmWAqC2i3wo4pmh3xMeYtQ== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: f27ff222-7690-4f74-a5a0-08d9e3b9c3da X-MS-Exchange-CrossTenant-AuthSource: AM7PR03MB6660.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Jan 2022 06:28:44.4758 (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: PAXPR03MB7666 Subject: [FFmpeg-devel] [PATCH 21/41] avcodec/mpegvideo: Move me_pre and me_penalty_compensation to enc-ctx 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: o18WGeZQ6F0q Signed-off-by: Andreas Rheinhardt --- libavcodec/mpegvideo.h | 2 -- libavcodec/mpegvideo_enc.c | 8 ++++---- libavcodec/mpegvideoenc.h | 7 +++++-- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/libavcodec/mpegvideo.h b/libavcodec/mpegvideo.h index c9467f0752..7089160765 100644 --- a/libavcodec/mpegvideo.h +++ b/libavcodec/mpegvideo.h @@ -239,8 +239,6 @@ typedef struct MPVContext { uint8_t (*p_field_select_table[2]); ///< Only the first element is allocated uint8_t (*b_field_select_table[2][2]); ///< Only the first element is allocated int motion_est; ///< ME algorithm - int me_penalty_compensation; - int me_pre; ///< prepass for motion estimation int mv_dir; #define MV_DIR_FORWARD 1 #define MV_DIR_BACKWARD 2 diff --git a/libavcodec/mpegvideo_enc.c b/libavcodec/mpegvideo_enc.c index 3eb8260b06..4da765a617 100644 --- a/libavcodec/mpegvideo_enc.c +++ b/libavcodec/mpegvideo_enc.c @@ -3561,11 +3561,11 @@ static int encode_picture(MPVMainEncContext *m, int picture_number) /* Estimate motion for every MB */ if(s->pict_type != AV_PICTURE_TYPE_I){ - s->lambda = (s->lambda * s->me_penalty_compensation + 128) >> 8; - s->lambda2 = (s->lambda2 * (int64_t) s->me_penalty_compensation + 128) >> 8; + s->lambda = (s->lambda * m->me_penalty_compensation + 128) >> 8; + s->lambda2 = (s->lambda2 * (int64_t) m->me_penalty_compensation + 128) >> 8; if (s->pict_type != AV_PICTURE_TYPE_B) { - if ((s->me_pre && s->last_non_b_pict_type == AV_PICTURE_TYPE_I) || - s->me_pre == 2) { + if ((m->me_pre && s->last_non_b_pict_type == AV_PICTURE_TYPE_I) || + m->me_pre == 2) { s->avctx->execute(s->avctx, pre_estimate_motion_thread, &s->thread_context[0], NULL, context_count, sizeof(void*)); } } diff --git a/libavcodec/mpegvideoenc.h b/libavcodec/mpegvideoenc.h index 6a96909e17..d32e4372a7 100644 --- a/libavcodec/mpegvideoenc.h +++ b/libavcodec/mpegvideoenc.h @@ -37,6 +37,9 @@ typedef MPVContext MPVEncContext; typedef struct MPVMainEncContext { MPVMainContext common; + int me_penalty_compensation; + int me_pre; ///< prepass for motion estimation + /* bit rate control */ int64_t total_bits; int frame_bits; ///< bits used for the current frame @@ -123,8 +126,8 @@ FF_MPV_OPT_CMP_FUNC, \ {"sc_threshold", "Scene change threshold", FF_MPV_OFFSET(scenechange_threshold), AV_OPT_TYPE_INT, {.i64 = 0 }, INT_MIN, INT_MAX, FF_MPV_OPT_FLAGS }, \ {"noise_reduction", "Noise reduction", FF_MPV_OFFSET(noise_reduction), AV_OPT_TYPE_INT, {.i64 = 0 }, INT_MIN, INT_MAX, FF_MPV_OPT_FLAGS }, \ {"ps", "RTP payload size in bytes", FF_MPV_OFFSET(rtp_payload_size), AV_OPT_TYPE_INT, {.i64 = 0 }, INT_MIN, INT_MAX, FF_MPV_OPT_FLAGS }, \ -{"mepc", "Motion estimation bitrate penalty compensation (1.0 = 256)", FF_MPV_OFFSET(me_penalty_compensation), AV_OPT_TYPE_INT, {.i64 = 256 }, INT_MIN, INT_MAX, FF_MPV_OPT_FLAGS }, \ -{"mepre", "pre motion estimation", FF_MPV_OFFSET(me_pre), AV_OPT_TYPE_INT, {.i64 = 0 }, INT_MIN, INT_MAX, FF_MPV_OPT_FLAGS }, \ +{"mepc", "Motion estimation bitrate penalty compensation (1.0 = 256)", FF_MPV_MAIN_OFFSET(me_penalty_compensation), AV_OPT_TYPE_INT, {.i64 = 256 }, INT_MIN, INT_MAX, FF_MPV_OPT_FLAGS }, \ +{"mepre", "pre motion estimation", FF_MPV_MAIN_OFFSET(me_pre), AV_OPT_TYPE_INT, {.i64 = 0 }, INT_MIN, INT_MAX, FF_MPV_OPT_FLAGS }, \ {"intra_penalty", "Penalty for intra blocks in block decision", FF_MPV_OFFSET(intra_penalty), AV_OPT_TYPE_INT, {.i64 = 0 }, 0, INT_MAX/2, FF_MPV_OPT_FLAGS }, \ #define FF_MPV_COMMON_BFRAME_OPTS \