From patchwork Tue Jul 26 22:08:11 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 37001 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:1649:b0:8b:613a:194d with SMTP id no9csp234553pzb; Wed, 27 Jul 2022 02:36:38 -0700 (PDT) X-Google-Smtp-Source: AGRyM1tGnjK4bbMp89w7FLGgo+wpL//UhKiSHgMIt/amttShjQCmbt+nTNZts1UtkxwpVqkaeqPX X-Received: by 2002:a17:907:16a6:b0:72b:5ce6:1f7d with SMTP id hc38-20020a17090716a600b0072b5ce61f7dmr17763013ejc.28.1658914598259; Wed, 27 Jul 2022 02:36:38 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id q6-20020a056402248600b0043ca71e6234si1887465eda.327.2022.07.27.02.36.37; Wed, 27 Jul 2022 02:36:38 -0700 (PDT) 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=eswH+KB3; 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 EAC8C68B8F2; Wed, 27 Jul 2022 12:32:55 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05olkn2098.outbound.protection.outlook.com [40.92.91.98]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id AFE1E68B8A6 for ; Wed, 27 Jul 2022 12:32:53 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=EbeI5+cSZodF6+3E6KJuf0evjJ5va5y9/an4WIPCz9yl5Lv6d/iH9Ao95nYFyhRDQ21tnB79osywZZw77qn2fT4E9Xj/L9sJIcrK7kOMjUbkoqcjFSFTwF+Ft5NveSK7GsHQxj8r7XgMzSbKnNjpvVAGt594kApWxHr8D4naPFH4JUdwnM7qQU5HVf2uyZPVdjNn7hG8SmZzezFklwcpHuBp2bMSsAgY+krqR5p6tjdJXSgEGcG9m9WcnkotCjlq0olBk5Lco6Zs8GT/n+8a+zMXqW/+aDJlicaq3SeFji5QZbWjTtTSkPTmSbUe6A+PCA7qo8BPK0IiSvIE3SR7Dg== 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=Qfw/mGeqnRy5yzFQrTuVhfQF1bzZ2hieXC+pwM7XjVU=; b=Ugl1XY5Ya2JRLzdaSigugLqVGDVM/aQEdwTEY+itq3cN4CYb1GItXQmqRQBkFnsZdDG1fX1kzqS+g+RCSXKjBxrlIyZDU0XzP7Wm1Mdw4SkoTvqE/Aw0vHr5lk1/Ido4uWVz9bC1ktsHXuHWrsBhWi7r+yiflEp1hiOR+Ht9FOwuBopdipedy6pGV+rBrERIusUbcH36rN7IS0FjmDocKqWH57tuLEeW09RLWQrfYiDZSjiEvH8fvHNgJeNe9VjEV82j7fnlhPEtYEg1qgUuKu+pIfSosKZbqaBaB347m2NV2zFbxcCNj0zswgcLfsVQx/sxjWB+5dzAWY5mL0eD2A== 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=Qfw/mGeqnRy5yzFQrTuVhfQF1bzZ2hieXC+pwM7XjVU=; b=eswH+KB35X1GNrJchOYlBTdr04BJvprHoTiUjVFZq1WEY7ngKvsa8mAiyg026ijFc4WI3D5etUF9WteITZDUgmHDkdOb+/JH8YzUUgBdD/MuIldR94cmyB6YtbVsJuCTPCzHzJHnSd+7mxAeiGfjyLD+zl7ewkPqxJuE9/BMnsaHEpE4SnmnR9PJsb5rHp5/Ti3ajX65SiZpHITgv9mmXWyax/DG8gCL3b6e4cTWHrbxvqM0kZPYjR+HFaHhw4O0dZhNH3lVflaWaYvX6M2XK/39sHAiuuA14oUBU9WZsdO1cJuZQzO3/yuRNoHxnv5F9V9iAiI0xYywYgez94b/jA== Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) by HE1PR0102MB2716.eurprd01.prod.exchangelabs.com (2603:10a6:7:1f::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5458.19; Tue, 26 Jul 2022 22:09:54 +0000 Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::210e:b627:bcc9:8c46]) by DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::210e:b627:bcc9:8c46%11]) with mapi id 15.20.5458.025; Tue, 26 Jul 2022 22:09:54 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 27 Jul 2022 00:08:11 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [zVuhwlvbfLsjXTf9CmHHmp99fRD0y3gQ] X-ClientProxiedBy: FR3P281CA0157.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:a2::13) To DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) X-Microsoft-Original-Message-ID: <20220726220814.695563-35-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: a2bbb933-c419-43da-17a0-08da6f539167 X-MS-Exchange-SLBlob-MailProps: +LiGfBxqLEuHAZUD9973euQIW/KMDlR3ggKsiV1e9S7nFk3iaAIgz7ZKgBJ6xabRZZ/kAsH6AFgwsvQgd9zKbqCXdWqDx7J4Vfb6bt7oDnkWPh/0O6wXvAZV3pjtfPG8NzJ/zxSu8RZS35hDCvbnt1gqHh1VudWUdPuM0jJE3tKFqSQ7LinvFpZrK21fXOj/VDWcZSbJlkhW7IvPitcA2kV9mKh0vMi62ubFZlBJZnumL0eQ+J9KPUlpYODkDBJX/B9t6OTPioriv2aPgMsfIX/9mrEqiy6Fuvi+0zQ1iisaXvW1+KS/d5eCzymZG422mQmXoxO1vFNf9ji/EZhn1GTLKV5Tutasj1DMgdWH5+ZvCssPg1EMsJjJOK7e1MVQ2RVM9hzTmWZ1xkcabDjwQzqZcizzC3MerZzP+B+pBdI5qPowbtx5yCXz6L2lh4gZjAybPNDFK5H7il2lgpe3Hp8ThE9mfPU/JQAco8dbJt34ysPHKUQaPv0yrcoRZWmrtDTRtZYV/EmYTn/vrFEdXVuXP4U4zQSx/uiN0tGEpS7Yp5g/UtMBTxI4HLkSxOkuDTZjApeaTd6Bcq7INqM1F85ZWH1/OcanttUWGQj526wSkD6+Rg5a2O30ESef/GgXXgPCl1C5ZGoIka4nG0d/APlZq2WvY/I32GP4QG8trCdBbEfYl7OgKmWMuWoViCAQF2hFls+MS4eCG4dDb0ctLi9UEqoUrBWrtD4j3X/P7sNDHzt6gGm/e4xmfNTOXxwQkqwSfHDgLMr5QxoSeLigb4SZ7GEIXV2p X-MS-TrafficTypeDiagnostic: HE1PR0102MB2716:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ryDa4QlvjAKi15xBStS4qS1fAuBehMzkXjdafT8Abeq4Rch1jsfeTVYbIUCbx36NLpRgY1/T/gEaASuCXz5oFZcvNs2H5o4rowyLMe72VnbvjzFlQj50FifHX2V/5I6Tn5sUUFDEq3MIy+Scgz4+bPqRv1Xs/nrIlUrDgts6x+eCapFMGedXDc+wztslbwM2xMAYvVtCsQSH8RTZgmn5q9KZbrUZV0kc8In/28lEYHWfSu28JUQT4eVen5c4bkcaOLEN0/j0qYPFCZHTpT0wP5A1BScjAS3JS1SjE+Gi9D1tE5JoELdMdp4/d8g8PiF7N/ReZ2ip6KG5Yhup0poXy7dMhUFh7JYSKpGyzdaW1aGl4EXrUwSEo3lbm067wp55tvN6vLWitBDi4ICGjuAPEbaHJw5ymoKLXDpzb66dwraXlPLRhFIMGH9AqTrfurmsM5tlGxwFMHTvEkKF/ZI4WR5s9abeRvuVnsFL4d+fw17a8Kz0j3hpe8zfP6UfVl5D00dTaj6Sf2O1ptmr6gXljhT6xuH5l3KHCyDNSPGgcG1XjF49iZdq6VrEM2yHrC2pQZDNeL7vJXaNI7kZvHjyxl7KZdSgaGVp4a/xwPnC4xVwwKHK9N2940riAyxAnOGxmELE8b2r4vo/s31B3ZH7kg== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: LXBJGMaRVBTLlTfCNj+S08LrnHodnknuUJteAiOOoUGUHzsz8fWC0XL+jl0ZpMsZ9bTXWR2C7OnsJ2bLlE/O7mXwnkgqdfdbnT9W+JS2lwOOE629brVuLoAYNixag2banmlQFr8FK4FYd0VC2EEnOC+j14mFic3tWaqELUooyf0BvWxKdL9A2lZ+6nvkNguQzKTMbPcv3zH0WXz9fm9UBlapyND4urh56cqSX2QWzaMRv03d9Q+ceA7YdEDLwgz4CpYbmYRJKRn17THVzqIg1cs8Rlah0tRcdGBJs/zf8KsHLiXtljYkrWH+UzqtGbhvr2kjswaB4LiQi/5lvRQoE2z+Tm9lqtv54XWlsDlrfcO6F79QOCjV8qVZpfc9RYd5GuIgCNhSBfdPRq9OwhVyDWg5HPJwKR8Xipeci50X7f3l6vQtlRwfaoExUXlgITKkPGwjUkZaWGv3FKnQb5nkwlHXvodRQ6maBlgSKhxOA8wZjj47mZs4NmXyWn3DI7oI6JoyJ3XhFjiJYxNnz+Lz7JAcwvwVQaiLNFBeDSAkRa+2yptnzvF4BWUDNE1gCUWM8pKNStuMBM5Oo1Y8QfWemPP9QGLqTMkdQZ1H8Sl7hmZBMMx0P7T8r6DWyJytvZ6vwc6Lv7KhTOQjHBMUcVmpaUpGd/B5YHXuslM8SiCKjryIklfkKxX8pB7abrumTqCY4YcXxyXnvWnHqLnIAG9rSKoiY4l9RmVrjd+3jJW1yvWWL2+Aj+/MpphH6t5c6NT2v3Tyf8tNtxX5+JwLZInAUem+rKP7l9JlDAoXGhOS7PwjnUMRanR1BYVX/mcRGfPR11P9UMpOom6WL9ljITPnrgJUJ4U7Ki/YF5hGMR2s5eOkLduzvyB/WHVkreH8uoNtqAwVd2I6f4AkZJrDslDiTalOJH5AtbO9oseLKYx5AeWmCT/6Z5asD5wGv8CvODaYr37QLCebLKzQGG8IM7IYv/BYqayHNfbVcWgJ6K2SqkI8zsRsvVbbuujaDMeFZlY4zGPBMt+eXdIgCl09ReRs2Z5XYO+uWR2pturwpTxOFi0hVZK67nAayR/lPyATLjnxpPwAr9EU1mmGZaKbZ6t6CjBmysIZID63QrQjkJb5vTKq0VGh4OYwPuID2L8GIyeGlIJCgAp7LGBMN50ZqX1vPVa2XmCCOOndXs+HyxttXCXXXg8WGkFFFVTSPFqI/Ud7Mzr1xr31bB6EK2/QO/I5/pDDVN78a3+Iw2Es07+9a9Hh+AyU1Neps35BUj6gUdlqTXLdLyT/0Iae8hAxtN1L6KtQXJkL3m0PvvAo6CiT/LM= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: a2bbb933-c419-43da-17a0-08da6f539167 X-MS-Exchange-CrossTenant-AuthSource: DB6PR0101MB2214.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Jul 2022 22:09:54.1423 (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: HE1PR0102MB2716 Subject: [FFmpeg-devel] [PATCH 36/39] avcodec/motion_est: Constify pointers to frame data 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: 0RT3A2qeyOlk Signed-off-by: Andreas Rheinhardt --- libavcodec/motion_est.c | 31 +++++++++++++++++-------------- libavcodec/motion_est.h | 4 ++-- 2 files changed, 19 insertions(+), 16 deletions(-) diff --git a/libavcodec/motion_est.c b/libavcodec/motion_est.c index 0903536697..29ab41dc8c 100644 --- a/libavcodec/motion_est.c +++ b/libavcodec/motion_est.c @@ -79,7 +79,10 @@ static int minima_cmp(const void *a, const void *b){ #define FLAG_CHROMA 2 #define FLAG_DIRECT 4 -static inline void init_ref(MotionEstContext *c, uint8_t *src[3], uint8_t *ref[3], uint8_t *ref2[3], int x, int y, int ref_index){ +static inline void init_ref(MotionEstContext *c, uint8_t *const src[3], + uint8_t *const ref[3], uint8_t *const ref2[3], + int x, int y, int ref_index) +{ const int offset[3]= { y*c-> stride + x, ((y*c->uvstride + x)>>1), @@ -110,8 +113,8 @@ static av_always_inline int cmp_direct_inline(MpegEncContext *s, const int x, co const int stride= c->stride; const int hx = subx + x * (1 << (1 + qpel)); const int hy = suby + y * (1 << (1 + qpel)); - uint8_t * const * const ref= c->ref[ref_index]; - uint8_t * const * const src= c->src[src_index]; + const uint8_t * const * const ref = c->ref[ref_index]; + const uint8_t * const * const src = c->src[src_index]; int d; //FIXME check chroma 4mv, (no crashes ...) av_assert2(x >= c->xmin && hx <= c->xmax<<(qpel+1) && y >= c->ymin && hy <= c->ymax<<(qpel+1)); @@ -184,8 +187,8 @@ static av_always_inline int cmp_inline(MpegEncContext *s, const int x, const int const int dxy= subx + (suby<<(1+qpel)); //FIXME log2_subpel? const int hx= subx + x*(1<<(1+qpel)); const int hy= suby + y*(1<<(1+qpel)); - uint8_t * const * const ref= c->ref[ref_index]; - uint8_t * const * const src= c->src[src_index]; + const uint8_t * const * const ref = c->ref[ref_index]; + const uint8_t * const * const src = c->src[src_index]; int d; //FIXME check chroma 4mv, (no crashes ...) int uvdxy; /* no, it might not be used uninitialized */ @@ -396,7 +399,7 @@ static int sad_hpel_motion_search(MpegEncContext * s, MotionEstContext * const c= &s->me; const int penalty_factor= c->sub_penalty_factor; int mx, my, dminh; - uint8_t *pix, *ptr; + const uint8_t *pix, *ptr; int stride= c->stride; LOAD_COMMON @@ -641,7 +644,7 @@ static inline int h263_mv4_search(MpegEncContext *s, int mx, int my, int shift) const int offset= ((block&1) + (block>>1)*stride)*8; uint8_t *dest_y = c->scratchpad + offset; if(s->quarter_sample){ - uint8_t *ref= c->ref[block][0] + (mx4>>2) + (my4>>2)*stride; + const uint8_t *ref = c->ref[block][0] + (mx4>>2) + (my4>>2)*stride; dxy = ((my4 & 3) << 2) | (mx4 & 3); if(s->no_rounding) @@ -649,7 +652,7 @@ static inline int h263_mv4_search(MpegEncContext *s, int mx, int my, int shift) else s->qdsp.put_qpel_pixels_tab[1][dxy](dest_y, ref, stride); }else{ - uint8_t *ref= c->ref[block][0] + (mx4>>1) + (my4>>1)*stride; + const uint8_t *ref = c->ref[block][0] + (mx4>>1) + (my4>>1)*stride; dxy = ((my4 & 1) << 1) | (mx4 & 1); if(s->no_rounding) @@ -805,7 +808,7 @@ static int interlaced_search(MpegEncContext *s, int ref_index, int dxy; //FIXME chroma ME - uint8_t *ref= c->ref[field_select+ref_index][0] + (mx_i>>1) + (my_i>>1)*stride; + const uint8_t *ref = c->ref[field_select+ref_index][0] + (mx_i>>1) + (my_i>>1)*stride; dxy = ((my_i & 1) << 1) | (mx_i & 1); if(s->no_rounding){ @@ -885,7 +888,7 @@ void ff_estimate_p_frame_motion(MpegEncContext * s, int mb_x, int mb_y) { MotionEstContext * const c= &s->me; - uint8_t *pix, *ppix; + const uint8_t *pix, *ppix; int sum, mx = 0, my = 0, dmin = 0; int varc; ///< the variance of the block (sum of squared (p[y][x]-average)) int vard; ///< sum of squared differences with the estimated motion vector @@ -1187,13 +1190,13 @@ static inline int check_bidir_mv(MpegEncContext * s, const uint8_t * const mv_penalty_b = c->mv_penalty[s->b_code] + MAX_DMV; // f_code of the prev frame int stride= c->stride; uint8_t *dest_y = c->scratchpad; - uint8_t *ptr; + const uint8_t *ptr; int dxy; int src_x, src_y; int fbmin; - uint8_t **src_data= c->src[0]; - uint8_t **ref_data= c->ref[0]; - uint8_t **ref2_data= c->ref[2]; + const uint8_t *const *src_data = c->src[0]; + const uint8_t *const *ref_data = c->ref[0]; + const uint8_t *const *ref2_data = c->ref[2]; if(s->quarter_sample){ dxy = ((motion_fy & 3) << 2) | (motion_fx & 3); diff --git a/libavcodec/motion_est.h b/libavcodec/motion_est.h index d0950bf7e6..292bdc70e9 100644 --- a/libavcodec/motion_est.h +++ b/libavcodec/motion_est.h @@ -77,8 +77,8 @@ typedef struct MotionEstContext { int ymax; int pred_x; int pred_y; - uint8_t *src[4][4]; - uint8_t *ref[4][4]; + const uint8_t *src[4][4]; + const uint8_t *ref[4][4]; int stride; int uvstride; /* temp variables for picture complexity calculation */