From patchwork Tue Feb 1 13:06:46 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 34021 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6602:2c4e:0:0:0:0 with SMTP id x14csp609465iov; Tue, 1 Feb 2022 05:18:36 -0800 (PST) X-Google-Smtp-Source: ABdhPJy46H75rgRuSYDXgZcHnH+sbXnpZXJ+pLsOxFWBtZDJ+h+Ixv1vK0yORmtf6XFp5/tB0Ag8 X-Received: by 2002:a05:6402:3554:: with SMTP id f20mr25535706edd.375.1643721515790; Tue, 01 Feb 2022 05:18:35 -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 x18si9786699edd.417.2022.02.01.05.18.35; Tue, 01 Feb 2022 05:18:35 -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=NsQ3I8g8; 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 C3ABA68AED4; Tue, 1 Feb 2022 15:08:52 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05olkn2064.outbound.protection.outlook.com [40.92.91.64]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B79BE68B39E for ; Tue, 1 Feb 2022 15:08:40 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=FEPoUCbeP061hTj1NS3dh4HnZ9kf+mAkXTA4T8TZMcumZeWnxqwlvuIAcHKNmkBU7gg7yCduztplPT7Wff8FNWpvks/sBDfLy+l3Z54AVZLdsFrXyQnboUEtRdE8/FWe1UbbCP1Tuc8FtoNCLZ65rJrs2k9Yd6JS0eAgEsRebXGNI3Gr4AKe+Lnrt7xUylS4Y09n2tWwN5A83ategXC2y3fqjNGMobJTSzUtUJAKFIKfjvrT+6hOY8hH4ofB2uMqf/03GMxz6tNP755/prXEt66yU3Pxv/SIvlcBao52GC5DMQS2EaC/QvuWVbGd4paBJwBrO9tdb6ZrNvkr1NhocA== 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=5spjA3VrLbRtd0qBtg/WvJ4j3cbYtjbrJoaeM+WXsiA=; b=kp11xZ5tKTA19sw2V679NnJ8o3V6jeYhhzKy3eTV8VaoHQs6f0jMlqG8WHEhm8NA25s5h7oEHKbR9a7GShgaw7JY0hV4QgUrDBs2zS0phXa61evop9+6kcOsRLnWQIgmB7LfrikPLYnQ4t+dSO52uFrQoMCwJdmHrNLDKoUSXwaQpYuinor5fqzFi3wlV7Dk0O/9ozg84AopsYy8YONe/6NoMRIdgxNB74Z/9D3Y/dtaW9AwV9ccaOZ1WYCP7aU1fU1asNSRhdeRcOrQHFX2sJDZa5kUNp+kz7q0gfeYVHTzcLONqxNMG5YFxxGYbZAyO5xCRmxCIMwdubkT3ijQSw== 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=5spjA3VrLbRtd0qBtg/WvJ4j3cbYtjbrJoaeM+WXsiA=; b=NsQ3I8g8pKrBswTsJnN+DywRUrxE7z8d2rZZG+tlQHFyMVh8EkH5/D620s7hyk1QwpT1c87eKDDpM+jhzi9lptiqTO8j8PxXPJR5+rIme9YOPlMjsz+zy5ddH9l1sR3CKTkV3iI2Kcw9tfZ4YUhwZ8CxDa9EPwA7q9A0ynUJK8h8ggRqAvqLYT41/IAFVI294U7XkzpyuiJ7bTwJcvxO7f1p9E45p4nwvQQW566adp4/K0ci6nVOMAw+YGoE34nTZY/BFKcCEoMb6eM06MGBi8wQa6aqWnavnT/dUnfU+QRk5F6mm9p15EtQwKSwt85E1NBFI6ByVpPfU3925fn6yA== Received: from AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) by AM9PR03MB7962.eurprd03.prod.outlook.com (2603:10a6:20b:439::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4930.22; Tue, 1 Feb 2022 13:08:38 +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.4951.011; Tue, 1 Feb 2022 13:08:38 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Tue, 1 Feb 2022 14:06:46 +0100 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [fna8eURrTzofBYRZuEYqFcyqyjQHAHgB] X-ClientProxiedBy: AM6P195CA0092.EURP195.PROD.OUTLOOK.COM (2603:10a6:209:86::33) To AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) X-Microsoft-Original-Message-ID: <20220201130706.1420875-48-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 981af294-2692-4782-decf-08d9e583efdf X-MS-TrafficTypeDiagnostic: AM9PR03MB7962:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: k2hQsAp6/PkhVSlUAkf6lHYjedxi0zZ4r6DaVhqJsLcNHFciRc69bXxCBqEtYaV1fmrX2eN+qjfa/gpl5vW13Xc9UMKRu1fdb/dN1FUInXYA25Q6dzeEZco5zarILmrkFcaIjfoRuOnZyAEFHVdBu7aH9IM19YM7SOj4DZIgMLdKQUqdhLgtipu2QhqwC+FM9puxXhKDpNJc3i/yeMuLLL2DmwVZrlJLrRMaaqpsUTGr6Wt+LxiN02sV6LB1eBX/uCu+dNf+LItzU4UmCTAzkIA7e7bB92OXn453AfFO/i05fJtmnIdtGOWKL6LHPQVtUS+qJyEhpPoCVfIueX7zcBfVt/XGGHAL8/SrT4FQF0N05VNlwIrE9CE4HBP3/c7xvddKd93rG/AsXqu4FpKe6/zcmHVqcKjBEfyTDttuCo58xGAtH4E4WWlA5DhHtkmkv7xkF6cPysKV0cSEgCMjT0B1xLv3IpPvS2JxRC4XZMX4qMigbyjYMOvtrBZuR1eIajDNBxB7bGaTW1RqCQUtEJYvjWs7l7eKbj0itHKAErm+cImGYQYywMRhrfppGT7l X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: zEPDlsYUkh6s6+XtuReQG4IsgPdGwyR6I31N4U3muKDAu6frJsbJI9Ug0O4u3mx97czMdCKTvm7g2O9BMb4+CqUd02U+Vj31XuXWRZYgEZisuGJ/mFUSzVjTxkjxKDVWLPs4ZGACXnoLZAvy0lL8FjmeoIrBhJ3ctljhKCcX+XM31YRWu8x/pWT1TiuAGwuwEYHfGi7zhL1bQ/JaSGy9EV3dbHUK28s2VfsJ8XVQOv2ZWLtpnC8XSLDnTgx3NYBRCkqy9QvPcqrCeC/2buc3LxFBgdT8RTialbSNzFrcA/H1GmUGhQMKL9zWdPKLGiFmeyF3WBp4d7YQQoT/Y9BNY+3bwj2sSEyJ7AUEGdRftXBeA/bpkK3YRr9xa0f6FOqKdPH1eZq4TiBktmSoNCRHQvL8LJT/lFaoLzN5A3Lti3+IGvnifwiOAJSP9Do0fKNQhaHoM0lj3QOR7Yw1uC4ipG6f5RuzTivAgXCee9hTh2B6PHNI0b/vPpH9w10nsHSbcq/85bfO6BFV7bdDTRQ6kHB/0tIxISIE2OcTdhlweP+GbhZdaLK4TfoOnAXfwkaKCqtQoeSCBNCZRoe1rDfes2kg5hGtNxw3xopyNQZLkJ5sVIcyRNrzJhApe+ScFdAB4HA8P4uCMjkXdC9TmtFF+vWZ6oqw3+v2xQvem4LJZXNS4mL32EovgeQGOvYiN9GPv4Mp+29CHMK5b8LDpald0y+aidawirDHC3drFO37g3uVJP8sixE2SxdWrYHoSILBxS21asqr5TuPI7owBSekJB4MN+/ovamtW7DLSKbXbCDYxk70xkeORBguPxMbpIgePYATAi+lpYrip9fX7lzC1DjHGeuLZAFqzV1T6K2xsPgND3uHBMXo5AMubeEYPMWhPJFSsdhaBQTMT1a6dbtRexkjsTkPb9Bi0yuEzPLAGEtOfO++Q8sfvP27tYQPZXCNezCKNnJJM80Iu0f6ldI51A== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 981af294-2692-4782-decf-08d9e583efdf X-MS-Exchange-CrossTenant-AuthSource: AM7PR03MB6660.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Feb 2022 13:08:27.8475 (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: AM9PR03MB7962 Subject: [FFmpeg-devel] [PATCH v2 49/69] avcodec/mpegvideo: Move scenechange_threshold to MPVMainEncContext 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: oeECNk46D3Uq Signed-off-by: Andreas Rheinhardt --- libavcodec/mpegvideo.h | 1 - libavcodec/mpegvideo_enc.c | 4 ++-- libavcodec/mpegvideoenc.h | 4 +++- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/libavcodec/mpegvideo.h b/libavcodec/mpegvideo.h index 0d6b79fe5d..4601c4be64 100644 --- a/libavcodec/mpegvideo.h +++ b/libavcodec/mpegvideo.h @@ -478,7 +478,6 @@ typedef struct MPVContext { int frame_skip_exp; int frame_skip_cmp; - int scenechange_threshold; int noise_reduction; int intra_penalty; diff --git a/libavcodec/mpegvideo_enc.c b/libavcodec/mpegvideo_enc.c index 0e14cebb3f..093f3b948f 100644 --- a/libavcodec/mpegvideo_enc.c +++ b/libavcodec/mpegvideo_enc.c @@ -574,7 +574,7 @@ av_cold int ff_mpv_encode_init(AVCodecContext *avctx) return AVERROR(EINVAL); } - if (s->scenechange_threshold < 1000000000 && + if (m->scenechange_threshold < 1000000000 && (avctx->flags & AV_CODEC_FLAG_CLOSED_GOP)) { av_log(avctx, AV_LOG_ERROR, "closed gop with scene change detection are not supported yet, " @@ -3634,7 +3634,7 @@ static int encode_picture(MPVMainEncContext *m, int picture_number) s->current_picture. mb_var_sum= s->current_picture_ptr-> mb_var_sum= s->me. mb_var_sum_temp; emms_c(); - if (s->me.scene_change_score > s->scenechange_threshold && + if (s->me.scene_change_score > m->scenechange_threshold && s->pict_type == AV_PICTURE_TYPE_P) { s->pict_type= AV_PICTURE_TYPE_I; for(i=0; imb_stride*s->mb_height; i++) diff --git a/libavcodec/mpegvideoenc.h b/libavcodec/mpegvideoenc.h index b83c24debb..0abd315846 100644 --- a/libavcodec/mpegvideoenc.h +++ b/libavcodec/mpegvideoenc.h @@ -44,6 +44,8 @@ typedef struct MPVMainEncContext { int me_penalty_compensation; int me_pre; ///< prepass for motion estimation + int scenechange_threshold; + int gop_size; int picture_in_gop_number; ///< 0-> first pic in gop, ... @@ -179,7 +181,7 @@ FF_MPV_OPT_CMP_FUNC, \ {"skip_factor", "Frame skip factor", FF_MPV_OFFSET(frame_skip_factor), AV_OPT_TYPE_INT, {.i64 = 0 }, INT_MIN, INT_MAX, FF_MPV_OPT_FLAGS }, \ {"skip_exp", "Frame skip exponent", FF_MPV_OFFSET(frame_skip_exp), AV_OPT_TYPE_INT, {.i64 = 0 }, INT_MIN, INT_MAX, FF_MPV_OPT_FLAGS }, \ {"skip_cmp", "Frame skip compare function", FF_MPV_OFFSET(frame_skip_cmp), AV_OPT_TYPE_INT, {.i64 = FF_CMP_DCTMAX }, INT_MIN, INT_MAX, FF_MPV_OPT_FLAGS, "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 }, \ +{"sc_threshold", "Scene change threshold", FF_MPV_MAIN_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_MAIN_OFFSET(me_penalty_compensation), AV_OPT_TYPE_INT, {.i64 = 256 }, INT_MIN, INT_MAX, FF_MPV_OPT_FLAGS }, \