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 BF18E4B72A for ; Wed, 12 Jun 2024 13:53:19 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 6A01768D836; Wed, 12 Jun 2024 16:52:25 +0300 (EEST) Received: from EUR02-DB5-obe.outbound.protection.outlook.com (mail-db5eur02olkn2043.outbound.protection.outlook.com [40.92.50.43]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 827B468D9B5 for ; Wed, 12 Jun 2024 16:52:24 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Ceei2jQY8OIxLOkp9OK5w7YGcLzFyQMZFb2l9nhytT4bpXVVSg1g3gnUx8XkC2eDSZ82L3b5Zg+DACx9GCuvXwzJKXa6vAFSSKgBYxF89CLbbP9TiG+mXKZqixUMXZOTNU1L8B1o8M097Qb33zqYfmcdTwmmDTtFEpVKzbLNSFZM9Czzl0MeH7f6Qulwf6D8BecKv+KrCKRKt7wQeSb3q4iNnHIk5XhmxMcRgTax5qDZNJg7A+fcWVMxprNasdt0ES8gyZG4RpRuUtw7tRZ7oApVQ8AAPuOxuasfxlz9bYt5545AnHxGS1Uml/kB8w8RAVJYjNbO+E5oYVJSl1ROcw== 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=lMXmBnxJ452cteBmTQLJKGqaAS0nZqKrPhuFdQ9q9h4=; b=iBSwKfXEiWeAE99pEpAsLChaPI5zVTkR+hjRmNvcsdJKXhAyazCb7Z091XlnM2Scv5d6g6mBmKhYDPhP9bO4gr/ywacUYIg4dcGTJURnGP1rzgD7loGeLO2AGpmtBOnSZfdnXhpRFJIBNo8B6fYtFOtk9rQ5MiDV2o0/jsUgVKoLjVcFh4VdcIGArKAUOJkW8rTBpwQBx6lyxoUnoeRsR1/nJK5cEi35c9lD9Gpi2ETsZYiphhowLRtc9PIsCnNQiwmK6cldLirUg7wWU/uqIPIaIVNtcJc8iJ36SnHhXY/q3mwurR6GU+1pUHQcybx1JJTYyi9fKlYflFc52RDfEg== 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=lMXmBnxJ452cteBmTQLJKGqaAS0nZqKrPhuFdQ9q9h4=; b=ksNK0iQoXEMhoSHCw+qAsTzMsF7+8fRh+LhGhT0srLbHudk8aKLfUr1ST187bIoqiBE1+wAq6Yf2ScdPOpkbu3c2gZvJGT5RFEN9oBorUgZT1XhFq5ixj2wuGDnRjWCB1j06Lcq3b2MNrLeL5D4HVBEfuRYKd+MWOfmqDXqDK5zNlWkvKXTIOVRzihkG3f/HdhOFEhkcb3nJoi2B3/jDn5clm14Ui2JY+G8QkfbWvoXs0f8jagV2fN/qSgnaFGk+NDZcowkaaJFgxD/Ouxb6LbjBlqFsH1QCyGhSZS+U4N4j02AHkrF/mMaWdfhhChnVG67ua1UcEq0ucqQwyRYZMA== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AS1P250MB0479.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:4a4::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7633.36; Wed, 12 Jun 2024 13:52:22 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::d6a1:e3af:a5f1:b614]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::d6a1:e3af:a5f1:b614%3]) with mapi id 15.20.7633.036; Wed, 12 Jun 2024 13:52:22 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 12 Jun 2024 15:48:20 +0200 Message-ID: X-Mailer: git-send-email 2.40.1 In-Reply-To: References: X-TMN: [25tJeVi+mxra7iGBr5stw9+xi8VdfgQeuvscN3g+/gA=] X-ClientProxiedBy: ZR0P278CA0189.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:44::6) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20240612134853.2102377-23-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AS1P250MB0479:EE_ X-MS-Office365-Filtering-Correlation-Id: 6d6efed9-b6df-4fe7-4b74-08dc8ae6e1e8 X-Microsoft-Antispam: BCL:0; ARA:14566002|461199020|440099020|3412199017|1710799020; X-Microsoft-Antispam-Message-Info: lAq7Sz/XMRstOhkgeP/oadB/GfXV6MYAash2cl7N9vCK0zBdKkyoU4qXuubZq8XpSLZg4sQmdIrww1mrsmx0KXPM34ZLfgsvJeZEsl/Nzj09RLG96F2lcW9hBKEO9GpZFz/yFVKFjEGC4c+X4Slv0UIiT5F4rWkrUdiSiwK+a6gJGFb0yP/RdMDom+o1ilMYUQCBX20yfeKztdQrWnd/lJGdtUXoZia2kwSZdi65TpgRpEpRykTdveQm+I3Wvm1pkn/O2AaGt8S0fGOYiCTU0KGOjxGCBIWZXiR9eSisyyHaq/1yS9KAhviDngpemtAEYTgStQp/Ja2ysBZXGKYRA4Ja4PdyWeX2GR7/FcH8WjsqF2R1YECN+9PJTcPOEuFos8a+JUNN7Z07Q4YcRjc0S21TsbQ2g/hqaB2mCBr9++hHI+XFb0P/czNxWUTygPyEY9MIp3ZSs1xBAFEOr3oX7tzPM2CEzaU9f01gUk8ggcX3LZwKvrTK2nfSXYUZGEPBtQlCfzeEB2qOyyOj8SfOKMVYsw2in6ctPF6XlNUK0BEVteAX1eEJ0bGRs6AvrcqyOjc//iA5+5RNTvc7VGNxb6iPnGd/4UF83wcrMYzp9dmNFm6PEZJqUyVrmYNW+sAr X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?iji3YO2kOXjxE7erGUfpF+PQtIgb8xlmbX8WqgnaqmR8sRACgeArID96/NSL?= =?us-ascii?Q?2AD3xvffhSENZgM04QUMKjinrkX3UeTzYKdFX9VfdjGOqKuVbQMMminPvMIB?= =?us-ascii?Q?hc9Nsz8vjJcs/AUXKBOEp74r2zcdsQRogcAfjjSjZy7mrRa+kVqnD3OwsbZN?= =?us-ascii?Q?V1wopVGl/wrBDH23p0g0EMvz5AaEYwy4I+pS+tcZ9Kk1j8ff3pSHmUwUHMDD?= =?us-ascii?Q?YvQjordD00juh9f86fV4APj8tGO02ULDdnPFUARnXYkk3VKxc+FW2nYZrLhz?= =?us-ascii?Q?w6YrvNNFQvdBq/YxJHdoiJQsyCudTydPKblTxiBsxJoxCAmPE7Qcj1FvGg9E?= =?us-ascii?Q?1dQj0mrQyQroguUfvmpAxDSlx7xq/ocjhozFb1jEBlJ1BNm5lmaEz598843r?= =?us-ascii?Q?VAzDG4AUcA/7peJ96kBBkMQ58bkdnJjHt0RR61j01J3Zz7eE5Dnas1vYBYDe?= =?us-ascii?Q?946UWTsa2FD/kQwgVdfFkwceZjdcwAbwo82ITWSzJDOixKrbVvqB4vWaWPhk?= =?us-ascii?Q?JoNKL2UB9eJAm9ly+mEnnSd4miTo717RrWVU/NZgIHTs01j7UmY0Rkc5kly9?= =?us-ascii?Q?UMc1IMOS7JS+dCeUBj4ahsUbuJXuCiyJ3SRG4e1xTT25We5VpQqScVRkI7Rq?= =?us-ascii?Q?EuRHZvuVYkO0is9zkrMb0MJYcVYGE62YXZBRjEUEu4sieciN2lPNZR3tV8m2?= =?us-ascii?Q?tIDZTREqg0/pIQUThWt1Revm+azK2hZaVDcTNHalIpvIWKQ9S54Owp7q5SyS?= =?us-ascii?Q?mHCTEZCwpqdeWUKmIZ0L+tJv5E9qur/jBxEOJBfCkSI10+Gl4wtGjVQFZ0bG?= =?us-ascii?Q?fs9vwiFLFzniioQpGYYNdhH72jf6acXPR6UCVR0zRIt8Hp8VNy7EQ1X4t7t7?= =?us-ascii?Q?FTpXmYblABXQR3jfEdHUPOr04WRI1gK0wNo5Yn4k3KAEXbcYj0VnXeJG2wlW?= =?us-ascii?Q?xpkUlRz04LswDxOAEwDCUduIQw4gOveAg3uzjr5syKlsr1mbhkqk5yfmtc2r?= =?us-ascii?Q?D0p31mplhSRxoVEsBzZziOQaj9qFJh8xB6kJ1W3ez7rukGz6OtDsnQAtGa6L?= =?us-ascii?Q?UYEH3Q7ThN8xwRjAyaQLz28Yj3lzy7+YchXa6jrmctuoJiVp1ffZO4USSltl?= =?us-ascii?Q?9gtWiG/guRxAy0kSAOGi8qReD4ana0DsxcITMU/riPNPRvDq+mdlKFX5RmpR?= =?us-ascii?Q?UmnfWZUC2ofFM1RG7KNJFxpzwGTywhPEwI6lH1ft7VQyUzKYhS8RXxldZkRl?= =?us-ascii?Q?z0I+OJTIGmdho3F09iGq/0WGcH3JaEtA8fXntPu1bA=3D=3D?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6d6efed9-b6df-4fe7-4b74-08dc8ae6e1e8 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jun 2024 13:52:21.9126 (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: AS1P250MB0479 Subject: [FFmpeg-devel] [PATCH 24/57] avcodec/me_cmp, dvenc, mpegvideo: Move ildct_cmp to its users 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: MECmpContext.ildct_cmp is an array of function pointers that are not set by ff_me_cmp_init(), but that are set by users to one of the other arrays via ff_set_cmp(). Remove these pointers from MECmpContext and add pointers for the actually used functions to its users. (The DV encoder already did so.) Signed-off-by: Andreas Rheinhardt --- libavcodec/dvenc.c | 7 +++--- libavcodec/me_cmp.h | 2 -- libavcodec/mpegvideo.h | 2 ++ libavcodec/mpegvideo_enc.c | 49 +++++++++++++++++++------------------- tests/checkasm/motion.c | 1 - 5 files changed, 31 insertions(+), 30 deletions(-) diff --git a/libavcodec/dvenc.c b/libavcodec/dvenc.c index 08ed53d823..784340744e 100644 --- a/libavcodec/dvenc.c +++ b/libavcodec/dvenc.c @@ -96,15 +96,16 @@ static av_cold int dvvideo_encode_init(AVCodecContext *avctx) if (avctx->flags & AV_CODEC_FLAG_INTERLACED_DCT) { MECmpContext mecc; + me_cmp_func ildct_cmp[6]; memset(&mecc,0, sizeof(mecc)); ff_me_cmp_init(&mecc, avctx); - ret = ff_set_cmp(&mecc, mecc.ildct_cmp, avctx->ildct_cmp); + ret = ff_set_cmp(&mecc, ildct_cmp, avctx->ildct_cmp); if (ret < 0) return ret; - if (!mecc.ildct_cmp[5]) + if (!ildct_cmp[5]) return AVERROR(EINVAL); - s->ildct_cmp = mecc.ildct_cmp[5]; + s->ildct_cmp = ildct_cmp[5]; } memset(&fdsp,0, sizeof(fdsp)); diff --git a/libavcodec/me_cmp.h b/libavcodec/me_cmp.h index 4f964ca188..b9abc7fb8e 100644 --- a/libavcodec/me_cmp.h +++ b/libavcodec/me_cmp.h @@ -70,8 +70,6 @@ typedef struct MECmpContext { me_cmp_func dct_max[6]; me_cmp_func dct264_sad[6]; - me_cmp_func ildct_cmp[6]; // only width 16 used - me_cmp_func pix_abs[2][4]; me_cmp_func median_sad[6]; } MECmpContext; diff --git a/libavcodec/mpegvideo.h b/libavcodec/mpegvideo.h index df46433a82..44695776ad 100644 --- a/libavcodec/mpegvideo.h +++ b/libavcodec/mpegvideo.h @@ -506,6 +506,8 @@ typedef struct MpegEncContext { int mpv_flags; ///< flags set by private options int quantizer_noise_shaping; + me_cmp_func ildct_cmp[2]; ///< 0 = intra, 1 = non-intra + /** * ratecontrol qmin qmax limiting method * 0-> clipping, 1-> use a nice continuous function to limit qscale within qmin/qmax. diff --git a/libavcodec/mpegvideo_enc.c b/libavcodec/mpegvideo_enc.c index 6ec8fa2e0b..6059bdee11 100644 --- a/libavcodec/mpegvideo_enc.c +++ b/libavcodec/mpegvideo_enc.c @@ -319,6 +319,15 @@ static av_cold int me_cmp_init(MpegEncContext *s, AVCodecContext *avctx) if (ret < 0) return ret; s->frame_skip_cmp_fn = me_cmp[1]; + if (avctx->flags & AV_CODEC_FLAG_INTERLACED_DCT) { + ret = ff_set_cmp(&s->mecc, me_cmp, avctx->ildct_cmp); + if (ret < 0) + return ret; + if (!me_cmp[0] || !me_cmp[4]) + return AVERROR(EINVAL); + s->ildct_cmp[0] = me_cmp[0]; + s->ildct_cmp[1] = me_cmp[4]; + } return 0; } @@ -929,14 +938,6 @@ av_cold int ff_mpv_encode_init(AVCodecContext *avctx) s->quant_precision = 5; - if (avctx->flags & AV_CODEC_FLAG_INTERLACED_DCT) { - ret = ff_set_cmp(&s->mecc, s->mecc.ildct_cmp, avctx->ildct_cmp); - if (ret < 0) - return ret; - if (!s->mecc.ildct_cmp[0] || !s->mecc.ildct_cmp[4]) - return AVERROR(EINVAL); - } - if (CONFIG_H263_ENCODER && s->out_format == FMT_H263) { ff_h263_encode_init(s); #if CONFIG_MSMPEG4ENC @@ -2209,15 +2210,15 @@ static av_always_inline void encode_mb_internal(MpegEncContext *s, int progressive_score, interlaced_score; s->interlaced_dct = 0; - progressive_score = s->mecc.ildct_cmp[4](s, ptr_y, NULL, wrap_y, 8) + - s->mecc.ildct_cmp[4](s, ptr_y + wrap_y * 8, - NULL, wrap_y, 8) - 400; + progressive_score = s->ildct_cmp[1](s, ptr_y, NULL, wrap_y, 8) + + s->ildct_cmp[1](s, ptr_y + wrap_y * 8, + NULL, wrap_y, 8) - 400; if (progressive_score > 0) { - interlaced_score = s->mecc.ildct_cmp[4](s, ptr_y, - NULL, wrap_y * 2, 8) + - s->mecc.ildct_cmp[4](s, ptr_y + wrap_y, - NULL, wrap_y * 2, 8); + interlaced_score = s->ildct_cmp[1](s, ptr_y, + NULL, wrap_y * 2, 8) + + s->ildct_cmp[1](s, ptr_y + wrap_y, + NULL, wrap_y * 2, 8); if (progressive_score > interlaced_score) { s->interlaced_dct = 1; @@ -2288,20 +2289,20 @@ static av_always_inline void encode_mb_internal(MpegEncContext *s, int progressive_score, interlaced_score; s->interlaced_dct = 0; - progressive_score = s->mecc.ildct_cmp[0](s, dest_y, ptr_y, wrap_y, 8) + - s->mecc.ildct_cmp[0](s, dest_y + wrap_y * 8, - ptr_y + wrap_y * 8, - wrap_y, 8) - 400; + progressive_score = s->ildct_cmp[0](s, dest_y, ptr_y, wrap_y, 8) + + s->ildct_cmp[0](s, dest_y + wrap_y * 8, + ptr_y + wrap_y * 8, + wrap_y, 8) - 400; if (s->avctx->ildct_cmp == FF_CMP_VSSE) progressive_score -= 400; if (progressive_score > 0) { - interlaced_score = s->mecc.ildct_cmp[0](s, dest_y, ptr_y, - wrap_y * 2, 8) + - s->mecc.ildct_cmp[0](s, dest_y + wrap_y, - ptr_y + wrap_y, - wrap_y * 2, 8); + interlaced_score = s->ildct_cmp[0](s, dest_y, ptr_y, + wrap_y * 2, 8) + + s->ildct_cmp[0](s, dest_y + wrap_y, + ptr_y + wrap_y, + wrap_y * 2, 8); if (progressive_score > interlaced_score) { s->interlaced_dct = 1; diff --git a/tests/checkasm/motion.c b/tests/checkasm/motion.c index 8f9915c63a..bfd1a3c17b 100644 --- a/tests/checkasm/motion.c +++ b/tests/checkasm/motion.c @@ -94,7 +94,6 @@ static void test_motion(const char *name, me_cmp_func test_func) XX(vsad) \ XX(vsse) \ XX(nsse) \ - XX(ildct_cmp) \ XX(median_sad) // tests for functions not yet implemented -- 2.40.1 _______________________________________________ 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".