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 C010B4AB35 for ; Wed, 12 Jun 2024 13:53:00 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id E211868D99F; Wed, 12 Jun 2024 16:52:12 +0300 (EEST) Received: from EUR02-DB5-obe.outbound.protection.outlook.com (mail-db5eur02olkn2086.outbound.protection.outlook.com [40.92.50.86]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B971168D930 for ; Wed, 12 Jun 2024 16:52:10 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=B1gKf7RmGsOBLvqohbNSy2YOGhT16+XayignoW8SSQFnaM0LeBMJW3WlurLviNCqPWsVmzD9Duyo9fm2B1eCm9JtmTTf+jCEhWYkXJufV5PrT8VeBIQF3wjkbAWrhlq1QqWHl2ytmgc8crBi2Qtb4Gw7pqSL3068iMpSQxDHMYeBJtNSdkJh1SYhSFoVuGCR+ELQm+Q6WGWo2yY/p4o1q4nkWcK08Ipxx6Udx2bWlRZbKiTlq/MPROGipynS8JkIVDt//sL8oypIBs1NyWZ2DKZIeGCxNIfkBCpQMI0KO5So2lhdb8MHNWafjLwrIgPeY+rgN+Aeu1ESOYD44qgldA== 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=aqm0HmWKr1c5G90u2Uq3wJG/2IOuFtkbypuHgtmr02Y=; b=Q13nJzNK9iBBZy2vBs8v5eFqJqfpYqDrTSguGGV45my9i/0AF9skgoiSDiGQr7TxZ6Ucnt6PbYk11S6edFjqwEx0jaCulrGbo42cdAxUxOFxNSHM3CSAj/qxOaRxvyD8f8dES2rKl/my5Sp7U9o9UHeRb6NoqDLwxq3gxOxAbn2wrnNoNrNBRYaulyvekjWJc0+3L6FipnE3NHf5tRhDEJQtnpGPvtAbuNjBFyc2Z8ZhD/OGr/UOwtlCD7OYJ/MLzsMmILFQ4gGUiPUTFsyr0blUFTl/S7Olk+SrKWMF6KJ7Z83l2UanXn4y8eQOcjNM39/7bkXAiqcqSraWRLz/KQ== 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=aqm0HmWKr1c5G90u2Uq3wJG/2IOuFtkbypuHgtmr02Y=; b=GtNYbdO5aUC5oYs1/68aKavSwA0OwdFq+msIs8APnW4ip7DVN6X3hiEQ7oGtbfmfNdBDxLHXqMkWfSwJ/Wu8iV1REeeOCGGGPTgWnsEUobFTgE7ORqz41JxbeIgGOiJG76M++tTFqOYHho+8kEpofQKAeXKkOLoO8O8PLnDuiT/quFNqMQR2ufIFfYjMZ+xolKuFNJ1U3b7Y/DVldiAH/HxV9BKtno3HUooQE4E2YiHOLcBWRYzFNHOwJPqnkPUwcaFDU0Lbk8KJofT493KeM+iYIVcjC830WL9DoPhHgclvxoDQW0/xX4Ie/mYvFGKg5e8xmRGOTWz3m38wGHVSOA== 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:08 +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:08 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 12 Jun 2024 15:48:18 +0200 Message-ID: X-Mailer: git-send-email 2.40.1 In-Reply-To: References: X-TMN: [D1x6Uzw+WthlxujZ4JmuUncrswYQNruGulDuio01iBM=] 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-21-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: df7b32f6-8b03-4e5c-0ff4-08dc8ae6d9be X-Microsoft-Antispam: BCL:0; ARA:14566002|461199020|440099020|3412199017|1710799020; X-Microsoft-Antispam-Message-Info: 8PM6lKZF4om9ZjFVVgnymZd+ToJOC7BYNiWviE5m63rsgzAjo3fO1yyBVRce5yIOhLENLa00IrSZKawhRWhQSsl6EaWHJCk4zpCj3A8DjFEP0wGLGKfRtDqvGRXdi3NG/pAqQSbIqpWIQKi2RyhCHMgMp4bLQOOvUxPgWJeRhAvd9t7EgobzLV+R+tE3i8ZcR09bs1OzNNtJVYUvCxfGgq+itJ89SGVxgqN3qiiILq0U+a4MlsGG2GmdhtMKqXzGmBXNRWMgbdFb+lezK630J54pyoptsvnmlUKfQnE2ijbCWNBaSxKndJMuJwY5HpQ4KAjWLd2ubQAKV0SzPok8CISOdobGY7qIKCiWrsNHa+41stYVe4eBVxueeYoiDIOrVgoz5TNBShyBz4hRBJaJHxEasfVWY81lfMeGaMvw32x3stuu8RbX9pCg8q9vDnhC0nR+2cjRV9ViCbMxnKTJedmI5V/xEcoQFd2y//9uuGzTl60yoz2hKQfSvijZFrPwk9mnJE2PSmhFEqWle2SpJUWtZ2p3q3TeDPrymyTpI5eiXhAjptnwCTUvecndPOUwB6PqjQaSWclNimSLsp9/emDebfg2ldVzzgJANmKPcIge7slSypJSpSaaErkLWa70 X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?b3UA3MkdCmjqCWf/TMy/DQ5lSa8FQAjN4pLLXK1TZnWsk2C4Xlm1rshFPXw6?= =?us-ascii?Q?gpRuhCbx/13CZ7JGPAUqO0VfM3rZZBY/AmhfyNmCD4eDeyzEcckyzdug2UtS?= =?us-ascii?Q?7eUFLQ6IRuFMpF8Fi9ibOYupVzX+1UGiggbHcUiWgByUdL/kx7gOEsPBOEeD?= =?us-ascii?Q?eX7ciA/f0Yi4DntRxH73CIac6bFpLLXnqwVrCA9hrmlgagn1r9VDTIIXJ/B5?= =?us-ascii?Q?pYSZ/C0DmJ4z4vNFwbXskwTkUHEQE8CdKSQVM9D1tstEF0cHUR8iMTM+9bTR?= =?us-ascii?Q?euQBp2k/PlsQ3qj+ySFmX3vf2pqucAp6Xhrprb/QjeZWzHI4umLoyEc/mtq5?= =?us-ascii?Q?gEH/SYIsa6ll/VI5fjkLnZUMUoHlxFd5l+H0p4JWhocaLnoNJrVdmvWfiNoO?= =?us-ascii?Q?Gzy0XkaRp3PGq7WiKSVPJ8kzHETLR6W4bSqYqQuDJtYCjvUqPwwJ2zHZiJ11?= =?us-ascii?Q?p/skXzYo4DQsNzoGMAfzMSbf7wawRW2Ws2DH/rl9dBdxcz0uV0qy1D0Y4CKq?= =?us-ascii?Q?/NqCCtPNojrg+gY1E+GLfFyjTG8f9zGn/ItzXER6QVhDeqHXETnU+qwLbDj6?= =?us-ascii?Q?O0+/e3dnI1qEDE+p0AJs+D/Wuuu53loYj0IT9ZRPSn58vIV6Xo5NIuJHuAik?= =?us-ascii?Q?C+UC33LWwLFGqEhC/OTqjZ7A4Ol7ErJKwtahYJ9BhyvCe4tFyhuQpv2k3KiE?= =?us-ascii?Q?CIGeA4JHlZpsWBd2W7F/eSzoefCmSFSyhe0LcKsIPHmt6/EhF7GvYY2dEYQI?= =?us-ascii?Q?0mwBQbNyUgaK20woHQyoqKexGZkDfsF4it1mCIFPtBG1rS2IWbVibb0Zooy0?= =?us-ascii?Q?k+lRZgykPdPFojWdFd7B3b9zcAW82PjIjFw/yzNlG8GNq9x2E7NnHgIdb1jC?= =?us-ascii?Q?881yP/rsJZUrRZyoMZQbT6EG3o18rkODVQtvb2WJnocBTqV/VTx42maS4pT/?= =?us-ascii?Q?nabcWAEhckJMv2KozXI98Z5kiz/s46B15QkhsrluDve6zlCPFXt42yJM3fKI?= =?us-ascii?Q?hmQnhCGzxXV71pbWBli7MA6tr7STaBQDShMKOq+84tlmQFomk9IAL0F32gVU?= =?us-ascii?Q?fTlcN5x28yjnWluN7nuo5xLINP+6jzCCZY/VAXOlLj5W/VQp82h/W8tPt2A8?= =?us-ascii?Q?nx6NkH91lujntGcnZys0Xz6CuLcYgjH7wTM4B9QbSdXW/omnRA0IoDxhDQVL?= =?us-ascii?Q?IozyfHzyLKMryshO4ftk3gzBU/qR8zp/82F8BLIMl74+LBf233VEX3I27C/g?= =?us-ascii?Q?yvBnWoNblCiQVPFSWlmEnqOcEXXCg2xj35qx7pyfJA=3D=3D?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: df7b32f6-8b03-4e5c-0ff4-08dc8ae6d9be 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:08.1861 (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 22/57] avcodec/me_cmp, motion_est: Move me_(pre_)?_cmp etc. to MotionEstContext 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 has several arrays 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(). One of these other users is the motion estimation API. It uses MECmpContext.(me_pre|me|me_sub|mb)_cmp. It is basically the only user of these arrays. This commit therefore moves these arrays to MotionEstContext; this has the additional advantage of making motion_est.c more independent from MpegEncContext. Signed-off-by: Andreas Rheinhardt --- libavcodec/me_cmp.h | 4 --- libavcodec/motion_est.c | 42 +++++++++++----------- libavcodec/motion_est.h | 7 +++- libavcodec/motion_est_template.c | 60 ++++++++++++++++---------------- libavcodec/snowenc.c | 6 ++-- tests/checkasm/motion.c | 4 --- 6 files changed, 60 insertions(+), 63 deletions(-) diff --git a/libavcodec/me_cmp.h b/libavcodec/me_cmp.h index 14d19bd142..67e3816829 100644 --- a/libavcodec/me_cmp.h +++ b/libavcodec/me_cmp.h @@ -70,10 +70,6 @@ typedef struct MECmpContext { me_cmp_func dct_max[6]; me_cmp_func dct264_sad[6]; - me_cmp_func me_pre_cmp[6]; - me_cmp_func me_cmp[6]; - me_cmp_func me_sub_cmp[6]; - me_cmp_func mb_cmp[6]; me_cmp_func ildct_cmp[6]; // only width 16 used me_cmp_func frame_skip_cmp[6]; // only width 8 used diff --git a/libavcodec/motion_est.c b/libavcodec/motion_est.c index ee28a4a445..b29d0c6d96 100644 --- a/libavcodec/motion_est.c +++ b/libavcodec/motion_est.c @@ -305,7 +305,7 @@ static int zero_cmp(MpegEncContext *s, const uint8_t *a, const uint8_t *b, static void zero_hpel(uint8_t *a, const uint8_t *b, ptrdiff_t stride, int h){ } -av_cold int ff_me_init(MotionEstContext *c, AVCodecContext *avctx, MECmpContext *mecc) +av_cold int ff_me_init(MotionEstContext *c, AVCodecContext *avctx, const MECmpContext *mecc) { int cache_size = FFMIN(ME_MAP_SIZE>>ME_MAP_SHIFT, 1<dia_size) & 255, FFABS(avctx->pre_dia_size) & 255); @@ -324,10 +324,10 @@ av_cold int ff_me_init(MotionEstContext *c, AVCodecContext *avctx, MECmpContext if (cache_size < 2 * dia_size) av_log(avctx, AV_LOG_INFO, "ME_MAP size may be a little small for the selected diamond size\n"); - ret = ff_set_cmp(mecc, mecc->me_pre_cmp, avctx->me_pre_cmp); - ret |= ff_set_cmp(mecc, mecc->me_cmp, avctx->me_cmp); - ret |= ff_set_cmp(mecc, mecc->me_sub_cmp, avctx->me_sub_cmp); - ret |= ff_set_cmp(mecc, mecc->mb_cmp, avctx->mb_cmp); + ret = ff_set_cmp(mecc, c->me_pre_cmp, avctx->me_pre_cmp); + ret |= ff_set_cmp(mecc, c->me_cmp, avctx->me_cmp); + ret |= ff_set_cmp(mecc, c->me_sub_cmp, avctx->me_sub_cmp); + ret |= ff_set_cmp(mecc, c->mb_cmp, avctx->mb_cmp); if (ret < 0) return ret; @@ -354,10 +354,10 @@ av_cold int ff_me_init(MotionEstContext *c, AVCodecContext *avctx, MECmpContext * not have yet, and even if we had, the motion estimation code * does not expect it. */ if (avctx->codec_id != AV_CODEC_ID_SNOW) { - if ((avctx->me_cmp & FF_CMP_CHROMA) /* && !s->mecc.me_cmp[2] */) - mecc->me_cmp[2] = zero_cmp; - if ((avctx->me_sub_cmp & FF_CMP_CHROMA) && !mecc->me_sub_cmp[2]) - mecc->me_sub_cmp[2] = zero_cmp; + if ((avctx->me_cmp & FF_CMP_CHROMA) /* && !c->me_cmp[2] */) + c->me_cmp[2] = zero_cmp; + if ((avctx->me_sub_cmp & FF_CMP_CHROMA) && !c->me_sub_cmp[2]) + c->me_sub_cmp[2] = zero_cmp; } return 0; @@ -649,7 +649,7 @@ static inline int h263_mv4_search(MpegEncContext *s, int mx, int my, int shift) dmin4= c->sub_motion_search(s, &mx4, &my4, dmin4, block, block, size, h); - if (s->mecc.me_sub_cmp[0] != s->mecc.mb_cmp[0]) { + if (c->me_sub_cmp[0] != c->mb_cmp[0]) { int dxy; const int offset= ((block&1) + (block>>1)*stride)*8; uint8_t *dest_y = c->scratchpad + offset; @@ -691,11 +691,11 @@ static inline int h263_mv4_search(MpegEncContext *s, int mx, int my, int shift) if(same) return INT_MAX; - if (s->mecc.me_sub_cmp[0] != s->mecc.mb_cmp[0]) { - dmin_sum += s->mecc.mb_cmp[0](s, - s->new_pic->data[0] + - s->mb_x * 16 + s->mb_y * 16 * stride, - c->scratchpad, stride, 16); + if (c->me_sub_cmp[0] != c->mb_cmp[0]) { + dmin_sum += c->mb_cmp[0](s, + s->new_pic->data[0] + + s->mb_x * 16 + s->mb_y * 16 * stride, + c->scratchpad, stride, 16); } if(c->avctx->mb_cmp&FF_CMP_CHROMA){ @@ -717,8 +717,8 @@ static inline int h263_mv4_search(MpegEncContext *s, int mx, int my, int shift) s->hdsp.put_pixels_tab [1][dxy](c->scratchpad + 8, s->last_pic.data[2] + offset, s->uvlinesize, 8); } - dmin_sum += s->mecc.mb_cmp[1](s, s->new_pic->data[1] + s->mb_x * 8 + s->mb_y * 8 * s->uvlinesize, c->scratchpad, s->uvlinesize, 8); - dmin_sum += s->mecc.mb_cmp[1](s, s->new_pic->data[2] + s->mb_x * 8 + s->mb_y * 8 * s->uvlinesize, c->scratchpad + 8, s->uvlinesize, 8); + dmin_sum += c->mb_cmp[1](s, s->new_pic->data[1] + s->mb_x * 8 + s->mb_y * 8 * s->uvlinesize, c->scratchpad, s->uvlinesize, 8); + dmin_sum += c->mb_cmp[1](s, s->new_pic->data[2] + s->mb_x * 8 + s->mb_y * 8 * s->uvlinesize, c->scratchpad + 8, s->uvlinesize, 8); } c->pred_x= mx; @@ -814,7 +814,7 @@ static int interlaced_search(MpegEncContext *s, int ref_index, mv_table[xy][0]= mx_i; mv_table[xy][1]= my_i; - if (s->mecc.me_sub_cmp[0] != s->mecc.mb_cmp[0]) { + if (c->me_sub_cmp[0] != c->mb_cmp[0]) { int dxy; //FIXME chroma ME @@ -826,7 +826,7 @@ static int interlaced_search(MpegEncContext *s, int ref_index, }else{ s->hdsp.put_pixels_tab [size][dxy](c->scratchpad, ref , stride, h); } - dmin = s->mecc.mb_cmp[size](s, c->src[block][0], c->scratchpad, stride, h); + dmin = c->mb_cmp[size](s, c->src[block][0], c->scratchpad, stride, h); dmin+= (mv_penalty[mx_i-c->pred_x] + mv_penalty[my_i-c->pred_y] + 1)*c->mb_penalty_factor; }else dmin+= c->mb_penalty_factor; //field_select bits @@ -1049,7 +1049,7 @@ void ff_estimate_p_frame_motion(MpegEncContext * s, *(uint32_t*)(&c->scratchpad[i*s->linesize+12]) = mean; } - intra_score= s->mecc.mb_cmp[0](s, c->scratchpad, pix, s->linesize, 16); + intra_score= c->mb_cmp[0](s, c->scratchpad, pix, s->linesize, 16); } intra_score += c->mb_penalty_factor*16 + s->intra_penalty; @@ -1236,7 +1236,7 @@ static inline int check_bidir_mv(MpegEncContext * s, fbmin = (mv_penalty_f[motion_fx-pred_fx] + mv_penalty_f[motion_fy-pred_fy])*c->mb_penalty_factor +(mv_penalty_b[motion_bx-pred_bx] + mv_penalty_b[motion_by-pred_by])*c->mb_penalty_factor - + s->mecc.mb_cmp[size](s, src_data[0], dest_y, stride, h); // FIXME new_pic + + c->mb_cmp[size](s, src_data[0], dest_y, stride, h); // FIXME new_pic if(c->avctx->mb_cmp&FF_CMP_CHROMA){ } diff --git a/libavcodec/motion_est.h b/libavcodec/motion_est.h index feea9a473b..5547aeb8bc 100644 --- a/libavcodec/motion_est.h +++ b/libavcodec/motion_est.h @@ -84,6 +84,11 @@ typedef struct MotionEstContext { int64_t mb_var_sum_temp; int scene_change_score; + me_cmp_func me_pre_cmp[6]; + me_cmp_func me_cmp[6]; + me_cmp_func me_sub_cmp[6]; + me_cmp_func mb_cmp[6]; + op_pixels_func(*hpel_put)[4]; op_pixels_func(*hpel_avg)[4]; qpel_mc_func(*qpel_put)[16]; @@ -110,7 +115,7 @@ static inline int ff_h263_round_chroma(int x) * Performs one-time initialization of the MotionEstContext. */ int ff_me_init(MotionEstContext *c, struct AVCodecContext *avctx, - struct MECmpContext *mecc); + const struct MECmpContext *mecc); void ff_me_init_pic(struct MpegEncContext *s); diff --git a/libavcodec/motion_est_template.c b/libavcodec/motion_est_template.c index 1888697db7..b2701aa32e 100644 --- a/libavcodec/motion_est_template.c +++ b/libavcodec/motion_est_template.c @@ -64,8 +64,8 @@ static int hpel_motion_search(MpegEncContext * s, //FIXME factorize - cmp_sub = s->mecc.me_sub_cmp[size]; - chroma_cmp_sub = s->mecc.me_sub_cmp[size + 1]; + cmp_sub = c->me_sub_cmp[size]; + chroma_cmp_sub = c->me_sub_cmp[size + 1]; if(c->skip){ //FIXME move out of hpel? *mx_ptr = 0; @@ -178,8 +178,8 @@ static inline int get_mb_score(MpegEncContext *s, int mx, int my, //FIXME factorize - cmp_sub = s->mecc.mb_cmp[size]; - chroma_cmp_sub = s->mecc.mb_cmp[size + 1]; + cmp_sub = c->mb_cmp[size]; + chroma_cmp_sub = c->mb_cmp[size + 1]; d= cmp(s, mx>>(qpel+1), my>>(qpel+1), mx&mask, my&mask, size, h, ref_index, src_index, cmp_sub, chroma_cmp_sub, flags); //FIXME check cbp before adding penalty for (0,0) vector @@ -222,12 +222,12 @@ static int qpel_motion_search(MpegEncContext * s, LOAD_COMMON int flags= c->sub_flags; - cmpf = s->mecc.me_cmp[size]; - chroma_cmpf = s->mecc.me_cmp[size + 1]; // FIXME: factorize + cmpf = c->me_cmp[size]; + chroma_cmpf = c->me_cmp[size + 1]; // FIXME: factorize //FIXME factorize - cmp_sub = s->mecc.me_sub_cmp[size]; - chroma_cmp_sub = s->mecc.me_sub_cmp[size + 1]; + cmp_sub = c->me_sub_cmp[size]; + chroma_cmp_sub = c->me_sub_cmp[size + 1]; if(c->skip){ //FIXME somehow move up (benchmark) *mx_ptr = 0; @@ -424,8 +424,8 @@ static av_always_inline int small_diamond_search(MpegEncContext * s, int *best, LOAD_COMMON2 unsigned map_generation = c->map_generation; - cmpf = s->mecc.me_cmp[size]; - chroma_cmpf = s->mecc.me_cmp[size + 1]; + cmpf = c->me_cmp[size]; + chroma_cmpf = c->me_cmp[size + 1]; { /* ensure that the best point is in the MAP as h/qpel refinement needs it */ const unsigned key = ((unsigned)best[1]<map_generation; - cmpf = s->mecc.me_cmp[size]; - chroma_cmpf = s->mecc.me_cmp[size + 1]; + cmpf = c->me_cmp[size]; + chroma_cmpf = c->me_cmp[size + 1]; for(dia_size=1; dia_size<=4; dia_size++){ int dir; @@ -508,8 +508,8 @@ static int hex_search(MpegEncContext * s, int *best, int dmin, int x,y,d; const int dec= dia_size & (dia_size-1); - cmpf = s->mecc.me_cmp[size]; - chroma_cmpf = s->mecc.me_cmp[size + 1]; + cmpf = c->me_cmp[size]; + chroma_cmpf = c->me_cmp[size + 1]; for(;dia_size; dia_size= dec ? dia_size-1 : dia_size>>1){ do{ @@ -545,8 +545,8 @@ static int l2s_dia_search(MpegEncContext * s, int *best, int dmin, static const int hex[8][2]={{-2, 0}, {-1,-1}, { 0,-2}, { 1,-1}, { 2, 0}, { 1, 1}, { 0, 2}, {-1, 1}}; - cmpf = s->mecc.me_cmp[size]; - chroma_cmpf = s->mecc.me_cmp[size + 1]; + cmpf = c->me_cmp[size]; + chroma_cmpf = c->me_cmp[size + 1]; for(; dia_size; dia_size= dec ? dia_size-1 : dia_size>>1){ do{ @@ -584,8 +584,8 @@ static int umh_search(MpegEncContext * s, int *best, int dmin, {-2, 3}, { 0, 4}, { 2, 3}, {-2,-3}, { 0,-4}, { 2,-3},}; - cmpf = s->mecc.me_cmp[size]; - chroma_cmpf = s->mecc.me_cmp[size + 1]; + cmpf = c->me_cmp[size]; + chroma_cmpf = c->me_cmp[size + 1]; x= best[0]; y= best[1]; @@ -627,8 +627,8 @@ static int full_search(MpegEncContext * s, int *best, int dmin, int x,y, d; const int dia_size= c->dia_size&0xFF; - cmpf = s->mecc.me_cmp[size]; - chroma_cmpf = s->mecc.me_cmp[size + 1]; + cmpf = c->me_cmp[size]; + chroma_cmpf = c->me_cmp[size + 1]; for(y=FFMAX(-dia_size, ymin); y<=FFMIN(dia_size,ymax); y++){ for(x=FFMAX(-dia_size, xmin); x<=FFMIN(dia_size,xmax); x++){ @@ -693,8 +693,8 @@ static int sab_diamond_search(MpegEncContext * s, int *best, int dmin, av_assert1(minima_count <= MAX_SAB_SIZE); - cmpf = s->mecc.me_cmp[size]; - chroma_cmpf = s->mecc.me_cmp[size + 1]; + cmpf = c->me_cmp[size]; + chroma_cmpf = c->me_cmp[size + 1]; /*Note jmap_generation; - cmpf = s->mecc.me_cmp[size]; - chroma_cmpf = s->mecc.me_cmp[size + 1]; + cmpf = c->me_cmp[size]; + chroma_cmpf = c->me_cmp[size + 1]; for(dia_size=1; dia_size<=c->dia_size; dia_size++){ int dir, start, end; @@ -880,12 +880,12 @@ static av_always_inline int epzs_motion_search_internal(MpegEncContext * s, int if(c->pre_pass){ penalty_factor= c->pre_penalty_factor; - cmpf = s->mecc.me_pre_cmp[size]; - chroma_cmpf = s->mecc.me_pre_cmp[size + 1]; + cmpf = c->me_pre_cmp[size]; + chroma_cmpf = c->me_pre_cmp[size + 1]; }else{ penalty_factor= c->penalty_factor; - cmpf = s->mecc.me_cmp[size]; - chroma_cmpf = s->mecc.me_cmp[size + 1]; + cmpf = c->me_cmp[size]; + chroma_cmpf = c->me_cmp[size + 1]; } map_generation= update_map_generation(c); @@ -1008,8 +1008,8 @@ static int epzs_motion_search2(MpegEncContext * s, int flags= c->flags; LOAD_COMMON2 - cmpf = s->mecc.me_cmp[size]; - chroma_cmpf = s->mecc.me_cmp[size + 1]; + cmpf = c->me_cmp[size]; + chroma_cmpf = c->me_cmp[size + 1]; map_generation= update_map_generation(c); diff --git a/libavcodec/snowenc.c b/libavcodec/snowenc.c index f3c78cfb21..9d64b1efe2 100644 --- a/libavcodec/snowenc.c +++ b/libavcodec/snowenc.c @@ -832,12 +832,12 @@ static int get_block_rd(SnowEncContext *enc, int mb_x, int mb_y, distortion = 0; for(i=0; i<4; i++){ int off = sx+16*(i&1) + (sy+16*(i>>1))*ref_stride; - distortion += enc->mecc.me_cmp[0](&enc->m, src + off, dst + off, ref_stride, 16); + distortion += enc->m.me.me_cmp[0](&enc->m, src + off, dst + off, ref_stride, 16); } } }else{ av_assert2(block_w==8); - distortion = enc->mecc.me_cmp[0](&enc->m, src + sx + sy*ref_stride, dst + sx + sy*ref_stride, ref_stride, block_w*2); + distortion = enc->m.me.me_cmp[0](&enc->m, src + sx + sy*ref_stride, dst + sx + sy*ref_stride, ref_stride, block_w*2); } if(plane_index==0){ @@ -903,7 +903,7 @@ static int get_4block_rd(SnowEncContext *enc, int mb_x, int mb_y, int plane_inde } av_assert1(block_w== 8 || block_w==16); - distortion += enc->mecc.me_cmp[block_w==8](&enc->m, src + x + y*ref_stride, dst + x + y*ref_stride, ref_stride, block_h); + distortion += enc->m.me.me_cmp[block_w==8](&enc->m, src + x + y*ref_stride, dst + x + y*ref_stride, ref_stride, block_h); } if(plane_index==0){ diff --git a/tests/checkasm/motion.c b/tests/checkasm/motion.c index e7a36bbbda..2bf49afc77 100644 --- a/tests/checkasm/motion.c +++ b/tests/checkasm/motion.c @@ -94,10 +94,6 @@ static void test_motion(const char *name, me_cmp_func test_func) XX(vsad) \ XX(vsse) \ XX(nsse) \ - XX(me_pre_cmp) \ - XX(me_cmp) \ - XX(me_sub_cmp) \ - XX(mb_cmp) \ XX(ildct_cmp) \ XX(frame_skip_cmp) \ XX(median_sad) -- 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".