From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 4233140769 for ; Sun, 30 Jan 2022 06:34:38 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 6C54B68B320; Sun, 30 Jan 2022 08:30:00 +0200 (EET) Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05olkn2061.outbound.protection.outlook.com [40.92.91.61]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E18D468B140 for ; Sun, 30 Jan 2022 08:29:53 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Izm2/bMLoECRd67a7eZAyjFAoBI3IfhQzgfKstLawKcPsWGLGc+ZcUlH0DoYozgqXoo3oO/P8PgJGoIHamx+yfFNZJIOjRV30XithOf2YshwWL0IX0IUONcvuamH+aJIBap0NQBe/4rw11ZcJqJHqOXiNePBrd1k59BSWsB7CQYnegO51+Rvc8anqPHmJj0soCH/UJBimgNfbt0jQftFMDjt556PsE/eRIRfJzpwvhhiFKrxtqdTtwdyeLPdHnJSdd9ZP2dTln1EsTaYubW9xRJlhskIA1VbmFlrnbcSikStHcYSQwxXqK5u6RHE8t97O9EsdjMU5I86GQadq6Y8Aw== 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=xtpQaXWRcVHes1H3lP6enwcEzLkyPQiBOCJwmVl5wKw=; b=jpHdw0dnNrWMpeBo9u4dCt9oemJqhiSwN14L4B4/WHHgREGzhfocOdFZHjeZAHfQi3YBlK81A9UGGXO0v/BBQeF+6sQ/JEBM46iqRYBzwPWAuqRthP5VxHSiqU999/2F6GDBLjDLmaTB4cwI+WnHt8wEAP2voXdnUTqCMAr2yIeHXb5JMT+FIYtlok1TfaguCQNarwA5dM/yTQe+ZdR+jb/W5XxqrkZNU57B+pG72Edcu85G9BjUsesrW/9ycfq4JwoVHd4Db/7wspaecBvnN+cljyNcacEJkVFykRprmank0czdHmAw2g7zMohw0XgxCpYeCduQDwg22Omtfh1gDg== 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=xtpQaXWRcVHes1H3lP6enwcEzLkyPQiBOCJwmVl5wKw=; b=RW8+2W414VjQ7/bUClLWnWpgkoJAox8+FpsH2qg9k5kqCNK4lIdVZ4SLfbEP9DlQQoDsYS6eEseuwdGx6j9XLdB/KxCSsmY/fpDUOsfe7pAdXtfSxNP+B9+BetGe6f7WrDTLgRGLAPset4n86PTNO5m7RwIIsITzSKKdlKpQ9hj285b490maZft6XzKKOyhPjljfMzfWfUWOxx6uFPeInpSLVo1WbJcFh/nW0a8dE8th7+z53hNPFw+bvzhIjn4Eet7vXPGhbE7GurV4o2J3swwfs4QypFNMFDb5vorYw40tWJSnVCN/pl+8So1AkLOIYtiek8NC2LICP2/q2dZraw== Received: from AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) by VI1PR03MB6239.eurprd03.prod.outlook.com (2603:10a6:800:140::12) 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:29:52 +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:29:52 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sun, 30 Jan 2022 07:27:49 +0100 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [Z0HgFJrDGJ4eo5jjqrT3ZbwOFSpQrBK/] 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-40-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 29f49970-7114-49bd-c987-08d9e3b9dab2 X-MS-TrafficTypeDiagnostic: VI1PR03MB6239:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 99eiYkFItyZ+gwyGfrDJPSeWXlECc6V59x5yD9sYF6UUpSLYDgbU+w6ODmOWm35UW00XWcgh971Fmu8vQifqrmht7Cupohmt8iKT1tm6sO+RgXB/NMIwosUexrqT1uBzJ/uYGnAiCWGDhzvvK1/dBZpUdCy5S3lO1/ilWDFTN+YMcNdaJAJ+DHoQZQ7e3BqVX+RgTfCgBp1wIb41QOd4r26DjUnbrpsdl9DIZiswLr/kEagU/9o6KH906xLNHNNKmRosRLs3Rx4kQMzZvOam1GHYejOaOGXqNVrz2QIgMCRK/eJCggCIo2WbtDObTE9EXRpiCFmxGgyZJXOCHbjMcyLm4aMycM+OCgwVlWeZIwcnxg2RP/rTmq1e/k1O9tEn3R9ErT4LImOTONS1XC3WiGim8hqSl18NFv4OxFTZP3AQKzVOp6MQBTvocrq6CgEr0UkvQcxtCnH+lySl++Hrx1ed5wzwYzZt7CTTXrUVtR3fg63INtOxQp6IAMdE6xV9MifBxpD534CuwVjKylWHK8XPG/zbNdFpT7l1GO9jFiA= X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?S6yEM0ckjnwGJC1OV2jbdYfmGcC8PUIxbZRrlgjtnJ2e/QmUHxucI3HrFiHd?= =?us-ascii?Q?b7XFe8XPfkcqVToQj2fZDCaQAIr3vTNBXeEBNDyea7TgAlGz0ATUXbePMV87?= =?us-ascii?Q?Vn8c1Kdm75qo1Y5kNxP+7+iAwcBhFBcOjKhgnBXZJH19/iXECJk5PJqwnAlE?= =?us-ascii?Q?jXszopXIBew3kozo/XB4Fj2H2YOQ9svPBu/0Skwisb3cN6xShquoRQnDg0sv?= =?us-ascii?Q?A6CG3Zvbx/JbjrxluAjf4UZWiVPx4PljW0FTT/UF+WrwOoSblhHnW1KGiaj4?= =?us-ascii?Q?ml0Dq+Qn4uW/X446dh+oT662aA4oyI4K2lYMbL9Wv8MUxoTiEnYW68QG+3PZ?= =?us-ascii?Q?DmGwY/buoKlWZI6CNgLqL/XHZDb5Iyay287KRG0s7qYs2N05mDuR+S/OtAHY?= =?us-ascii?Q?G3remVDncz5mUg/eEaDPlixNAKxfQ3VARWB5CguXiFCKEZoXBgWB/pqylnAN?= =?us-ascii?Q?gsPvn5F8aT5DIYbRxRvWIhZy7/gGTwn3Cy44fpGqJNurfEFJzFpsfSnG/rld?= =?us-ascii?Q?bqzIYJ9tU1AKEvheeadEYzoBoGngFDOhG598jjW40StS1uIVe4XTmb3Ua1R5?= =?us-ascii?Q?W0RPoPc0VDvMeeVE3IwkFlCyb+iRJr/v8HqDGu79v49U3XuVRGf7kjBXYk65?= =?us-ascii?Q?P8RprJYjlVbmeMe3q6ho4Ee54U6TYo3Stbh1KaQxAAt189gUniX3D8mR0pdZ?= =?us-ascii?Q?a3HnXIm4HhwsFxTKHdAYrcGcKNufphwq1x10Ko4TqxjC0eB2bcqGQiwQKLCQ?= =?us-ascii?Q?IonpattnwzZ8XpNdyIkUWksNGrmD+LhnJIU3rFI6d+p94DSQQSwQSPYgytHd?= =?us-ascii?Q?XhLUPfVR5/nDu0rVPuabYfBahBRVNmJlmAafGeDUeQHWDhty2h5WCyk/R+p/?= =?us-ascii?Q?FykrFYFn1+hEyZDrd0YyZBOtwFkNHrTsuBLPb+11TZG/d2wR1O0Ov/bSRAiw?= =?us-ascii?Q?sDPtY5RQLwZXVsr6YcDuKw=3D=3D?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 29f49970-7114-49bd-c987-08d9e3b9dab2 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:29:22.8178 (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: VI1PR03MB6239 Subject: [FFmpeg-devel] [PATCH 41/41] avcodec/mpegvideo: Move frame_skip_(exp|cmp) 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 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: Only used by the main encoding thread. Signed-off-by: Andreas Rheinhardt --- frame_skip_factor/threshold are used by slice threads; they (and several other fields) could be moved by adding a pointer to the const MPVMainContext. I intend to do this in the future. 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 bf71d6242b..fc271991fd 100644 --- a/libavcodec/mpegvideo.h +++ b/libavcodec/mpegvideo.h @@ -479,8 +479,6 @@ typedef struct MPVContext { /* frame skip options for encoding */ int frame_skip_threshold; int frame_skip_factor; - int frame_skip_exp; - int frame_skip_cmp; int noise_reduction; diff --git a/libavcodec/mpegvideo_enc.c b/libavcodec/mpegvideo_enc.c index 1a88e4fb93..8c369a94ec 100644 --- a/libavcodec/mpegvideo_enc.c +++ b/libavcodec/mpegvideo_enc.c @@ -892,7 +892,7 @@ av_cold int ff_mpv_encode_init(AVCodecContext *avctx) s->quant_precision = 5; ff_set_cmp(&s->mecc, s->mecc.ildct_cmp, avctx->ildct_cmp); - ff_set_cmp(&s->mecc, s->mecc.frame_skip_cmp, s->frame_skip_cmp); + ff_set_cmp(&s->mecc, s->mecc.frame_skip_cmp, m->frame_skip_cmp); if (CONFIG_H261_ENCODER && s->out_format == FMT_H261) { ff_h261_encode_init(m); @@ -1234,7 +1234,7 @@ static int skip_check(MPVMainEncContext *m, Picture *p, Picture *ref) uint8_t *rptr = ref->f->data[plane] + 8 * (x + y * stride); int v = s->mecc.frame_skip_cmp[1](s, dptr, rptr, stride, 8); - switch (FFABS(s->frame_skip_exp)) { + switch (FFABS(m->frame_skip_exp)) { case 0: score = FFMAX(score, v); break; case 1: score += FFABS(v); break; case 2: score64 += v * (int64_t)v; break; @@ -1248,9 +1248,9 @@ static int skip_check(MPVMainEncContext *m, Picture *p, Picture *ref) if (score) score64 = score; - if (s->frame_skip_exp < 0) + if (m->frame_skip_exp < 0) score64 = pow(score64 / (double)(s->mb_width * s->mb_height), - -1.0/s->frame_skip_exp); + -1.0/m->frame_skip_exp); if (score64 < s->frame_skip_threshold) return 1; diff --git a/libavcodec/mpegvideoenc.h b/libavcodec/mpegvideoenc.h index ad55448363..f18463c2bb 100644 --- a/libavcodec/mpegvideoenc.h +++ b/libavcodec/mpegvideoenc.h @@ -87,6 +87,9 @@ typedef struct MPVMainEncContext { /* temp buffers for rate control */ float *cplx_tab, *bits_tab; + int frame_skip_exp; + int frame_skip_cmp; + /* temporary frames used by b_frame_strategy == 2 */ AVFrame *tmp_frames[MAX_B_FRAMES + 2]; int b_frame_strategy; @@ -181,8 +184,8 @@ FF_MPV_OPT_CMP_FUNC, \ { "xone", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = FF_ME_XONE }, 0, 0, FF_MPV_OPT_FLAGS, "motion_est" }, \ {"skip_threshold", "Frame skip threshold", FF_MPV_OFFSET(frame_skip_threshold), AV_OPT_TYPE_INT, {.i64 = 0 }, INT_MIN, INT_MAX, FF_MPV_OPT_FLAGS }, \ {"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" }, \ +{"skip_exp", "Frame skip exponent", FF_MPV_MAIN_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_MAIN_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_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 }, \ -- 2.32.0 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".