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 3D784433C2 for ; Mon, 11 Jul 2022 03:05:54 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id AD93468B73C; Mon, 11 Jul 2022 06:05:53 +0300 (EEST) Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-oln040092072046.outbound.protection.outlook.com [40.92.72.46]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5A6E268A214 for ; Mon, 11 Jul 2022 06:05:47 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Bx0EtTwwhTuCpLnDXOl+WzxdClr8mTfVMQoCPSf+0Tyjj3HcOuRrrCXkO6tfVPjJCcHCyBH7FPBlFdVnyZ+YU+t3tXY/xK0HKSAqTM5X7YHy416nQe5MsXHuy4+3WEf2Ki96nuOU72YBXsG4EryEQV0bkpkfHecIjGyHF2smerIrhFfGHLCkGr+v39yHZ2dyp/I/WpW2ia97rOZxm9FAzY9LUTb+tq81k2KcdB/Tqhd7N8gQ7OlQiJKgE3aQA2GHs2LpfLSCIJej+hb0fl0OSa6gzcuK4pf4OUH0teNZBDuLWnQn0AcooEIVY1qjqbBHu1PF8dRM58P8bItto33yQg== 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=xXTXzAptuvyMypPZBTRH6TRiD6526PrrYIgzhrqeewg=; b=XjPoghvr5XxdOw5f5TzVeqo4cZ/4jjBS2QlrKUe2Hg6njVF4IWAX3sWuQSw9w6XRq9j7w6ntNRdvjTJRVDY8xUp59uIvf0i08xNUZ5+C4ZlYJEPqKtXVduR5PSl2cQeDAGIBk3Hbm/SPfXJs9fPhmGOO5aqc9ZcgJoKfSBjD0ym2FmI2c2jwrMyCBOJG7U6D44svTlL1SDntkj0vuLqMvlhTV0/RE+mu0fFh9Zlo/3XcEdAmxWJVtfSrcxDU2oXWoFsoNvCS4Ykf0RyODn0tIMeYpot5bbhn9IYtRK0Hudjd1jT4sjAkVxc4OG2hl76CjxXXhvyHshm/U2BEZ5U5Hw== 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=xXTXzAptuvyMypPZBTRH6TRiD6526PrrYIgzhrqeewg=; b=mtEf2IZwCcsPirTwt+0Vq8bfdoZ2Qclx84U0Q52mJ6Kji6XzkSOI+yI5XyJrhQA1ZnfRLB/k79LVSDbrg/NMaLq7+BBfQmQs9b+ul2mr18GHvjVThT8ZNPiStauGMmlCnSF4k4Z/BcvvXoZItssy2pqNtoPIVW5XpbVB9aMqEkzi+kCHbdGL5fI4M5KfbOVH6ts+sIykaA68Y9iWcXIs5n8nr4ieXqKcrM1VJpCfwqSyVbKKVdYNY0IAwEtsbokWWE9h0sJhPiC2yloZ6xuH0aHjX8dHiEDlL5SG3x3tJlT06u65lxYWQ2B2jO/GrtCNelxfb2XdnIH6zXcUGpSoxw== Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) by AM5PR0101MB2467.eurprd01.prod.exchangelabs.com (2603:10a6:203:39::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5417.15; Mon, 11 Jul 2022 03:05:45 +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.5417.026; Mon, 11 Jul 2022 03:05:45 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Mon, 11 Jul 2022 05:05:36 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [0gMeQQTSke+aPFnLthHp2rrXVdbaqUcM] X-ClientProxiedBy: AM5PR1001CA0039.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:206:15::16) To DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) X-Microsoft-Original-Message-ID: <20220711030538.3306478-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ebd6cb6f-aa6d-4d79-dfd4-08da62ea3f54 X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiQpgUKb+VO8j8I+it/2i4oyyEsHysrJKstbANztqb6gTrBjAzlSsK3/H1deuzjv8LVsy9E4fSxkDOhluLwGkG7se6vzWZPsKOZinCFCnJ2e2LTQTCbduLo0m5LHg+No+cUCPLMB+8s4MQlIb32f7HcRxpUps78QOhnlYR2EeKk8AKOBqnGM9luVlE3B/P9W3rhPfLmr+MHXg+WJB2xZF8VB1pI9F0WIRfXNNFr1UojjlYaI60PKFVFz/Vs4RRGoExDrE1rZFCikInWd1tx6qzxaSRf96qEXMnivVsW63Zal35Jt5TLqN4lSmgZA1kmEtjtgk3XnFGxLGVerApmb4oGTxSgGOjjsJA+erYqWJ9+RUlKOfA7Z945wPn+EkctfPAU+uMdKwx8tyjaSn8XT81F+1Dw3qkxyxO65LgKnGJMb4CGKXWXz6+0GNVCeVPaNA9sPxo2rknZBTK9vNhZePZ8u5o4+69ewPChAGU8D0mEWTPkGLomFzVVPMUY7g1PglxAgYKv7C6chFJdo3/45Qq7MuSWKqpkwAU3dFt16WPcMvJ96xQ74jYKlKUaMHAd7NVCRiPBOxpTDDYTkTNA9tew0oXALYeDBppheTYnUoguOQfsEtIDVyqXBrZPkKMxhQJ7nxqbsve8XrID+X5pocGdhLewvC0U1/5i8//Bk3/hTqqOPXugh5cJjM0kjmYtL9JZP/AfQeERjfMJFHgY1NsEogksX9lvkdg0IVM8fP1OSjAo1FOE0/Okejq4NPE5r220= X-MS-TrafficTypeDiagnostic: AM5PR0101MB2467:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 2eyaaLG/4OHEbEBUZ1+OVKz1txcjGz6TIdHPM4wIZWCYhqMus6CVLTlipdNUVUFFFs4Tkcyoj+IphxUNspH1HmgMeWZWKZd+MVIJwgmY6EXmErQd8545ADUPxD7hnTmqdqyU3vqO3TCSbyPfa4DnYVf0iii94d0E+xWWDcuV3cPP8mPMsBbERqN/aqDAB3lZpls2bNJH3PesWsXEGzFn2lLu2yelJ2g/Ez1mcH18wA8RUFf8PC/5gD6yLSY1iTZWy2x8bbNBRcyEZocAmNevRUGs0iZTUmJ6/xGqtYC3cMEeCi6SOYJk5dy0IlwKJrSvNYkop95DaNPn9LkogaXTbw4JrsxkJlJDtah/ppKwBNNC4KeT5dKohodpUL5dvrsTNlVHwSXPjctb/R+1jrm25YGcw7w0FSoGfcEadYIbnFm5DfmJKV0XDQ7bmqeegAkSZ+deWJq8SWt8Mny8ntsxNu+nogeX1tfmvEDGzfBLOqT/XACxuCJLwWBMnw4/o+EkIfQpRZWlRopKUhoVeVnGnw6CGqWDl59WZ7WsiBNGWOykpKvnPKARhes6ztzDsll84qgKZTh/nu+ggYcwzZctlhl19h1oyHJq3CAot8+Vq5ybmkJMnmToxDSlnDF45JnPdfC2Lf86n7Qi7zGFrkPCpcX0VThKxcElwdvfd96j8A2Gwnz8lQEYwC8245/9TROu48WTRhyPxVgB4NNUsjrEqw== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?e7hpQOlCUDN9+3BhoVFQTO0droOQdbNA/iUUTz+rbN3yu8d/QR/rInFOvaAW?= =?us-ascii?Q?t9SwBFCgWSQU8+70PdHPLMNH2oHrPQaoxPCZMkS/V4b2aa8lauU68mm1aLtm?= =?us-ascii?Q?7ewkzfzhP7LCUFDijjsDtmLeZVUDorTGnFDqrtPZaPwi/8SAAHO/ATt6RTY6?= =?us-ascii?Q?JIbDUhPbZpx6anao9HbzGNJsr4QuJQA2yF1j8zb2jKNjJp4dD61l6I8CIVEG?= =?us-ascii?Q?QBab1w4Vg9ApUsNJC58dBimZXZhOricXbVGB5AoC0gCOdnsxVWoPwVl2kt/l?= =?us-ascii?Q?tqsVBrt3YViSgymZ7ZEeKsyfzHVafo9yibNAKpwBzw9st8LWYZWZaj8iwuFO?= =?us-ascii?Q?X5jF/QDy1QkBNFkOZBzsVBoZWzMxN66zROh+ei89DIQgmk64rmlVvgqSXYp1?= =?us-ascii?Q?UniE4PSM8bfvvJpZFvSILgabPIXsvQzF1uLvizE6b3VOSCnq8LXKUqiK+hFp?= =?us-ascii?Q?Ie8wFYzcxULiMKRHQIt9mix65YjkY9aFyJ/s6QLnAQjo0B83T5JV/9YQsZhr?= =?us-ascii?Q?vYt+HQ6ZkdAJCL0VHXGDwqfHVoYN6VoRmrk8hor/Fe2ddrA847q2xu6kwKbN?= =?us-ascii?Q?lYNTHmxZU65/yOFnqAPrNnKDj8Q6GCztEO67BtDM6+CDzdeVzI6B8SVsKDFL?= =?us-ascii?Q?M2z4yELX/Sw1SRzh1dnIBPyhH9FV72JNYor2aX70HuoNyKtcgV4DHYx9dsz4?= =?us-ascii?Q?+EXnOG9ve71EhI3YHCGF6JMQyt4lNFunAwvgnRvqtycPO8DVOlx0OvI7/2Fn?= =?us-ascii?Q?OhOAH224aBBQ5jrWPuceaa73CkYJIQoDNcchwGihYeLEUURscQ0iAx0v/Fxp?= =?us-ascii?Q?m2nHMPDWRF43og1RjLEIWoeCrohIlCpHJ9GpraPljIP58/N9k1jo21os7hx/?= =?us-ascii?Q?l2TNnplq9gV+9D4WUumGekRK5svqv4s52ifb9juZ07LBXVW2CUYwAatKFdfC?= =?us-ascii?Q?WXznWNOQ1k5hckxOOoQx+KYHiGWbloRixjEkTWmIlnTtxhuAIxSoYeXp4IV+?= =?us-ascii?Q?8FJVgCbKFIndVGq50zC6u+XFWXWsgwRQ7maFBLUAB64wcFIoJmzoZmEc1nDE?= =?us-ascii?Q?KZMAHBtflDzZ3TQ/zeuij7eRFpn0xa3TAG5SVpaNIUrlBLXTdlWZgh8J+TlC?= =?us-ascii?Q?pekTuRmse2DKD0VUnheUDAP2I8S4t8uakwssxo4bbFFjaB/GANiiTocWek81?= =?us-ascii?Q?WNjxwdbxLoSkk0J/NM2d+ZmtQ+BQ8HDIwJ3QxZaXLUBCvXtWSNKKw8p9JeuJ?= =?us-ascii?Q?PAhG5gTtx9fyaj6tIXQMKAtOxdrF6+5cRGgbQY5E8HLmyfUyFqVMMs8Za8zM?= =?us-ascii?Q?7So=3D?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ebd6cb6f-aa6d-4d79-dfd4-08da62ea3f54 X-MS-Exchange-CrossTenant-AuthSource: DB6PR0101MB2214.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Jul 2022 03:05:45.3398 (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: AM5PR0101MB2467 Subject: [FFmpeg-devel] [PATCH 2/4] avcodec/snowenc: Don't pass int[2] as parameter declared as int[3] 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: check_block_inter() currently does this when calling check_block(). This leads to a -Wstringop-overflow= warning when compiling with GCC 12.1. Given that the main part of the body of check_block() consists of an "if (intra) { ... } else { ... }" which is true iff check_block() is not called from check_block_inter(), it makes sense to fix this by just inlining check_block() check_block_inter() and turning check_block() into a new check_block_intra() (with the inter parts removed, of course). This should also not make much of a difference for the generated code given that both check_block() as well as check_block_inter() are already marked as av_always_inline, so this commit follows this route to fix the issue. Signed-off-by: Andreas Rheinhardt --- libavcodec/snowenc.c | 64 +++++++++++++++++++++++++++----------------- 1 file changed, 40 insertions(+), 24 deletions(-) diff --git a/libavcodec/snowenc.c b/libavcodec/snowenc.c index 207948675b..5e6b489c43 100644 --- a/libavcodec/snowenc.c +++ b/libavcodec/snowenc.c @@ -892,34 +892,23 @@ static int encode_subband(SnowContext *s, SubBand *b, const IDWTELEM *src, const // encode_subband_dzr(s, b, src, parent, stride, orientation); } -static av_always_inline int check_block(SnowContext *s, int mb_x, int mb_y, int p[3], int intra, uint8_t (*obmc_edged)[MB_SIZE * 2], int *best_rd){ +static av_always_inline int check_block_intra(SnowContext *s, int mb_x, int mb_y, int p[3], + uint8_t (*obmc_edged)[MB_SIZE * 2], int *best_rd) +{ const int b_stride= s->b_width << s->block_max_depth; BlockNode *block= &s->block[mb_x + mb_y * b_stride]; BlockNode backup= *block; - unsigned value; - int rd, index; + int rd; av_assert2(mb_x>=0 && mb_y>=0); av_assert2(mb_xcolor[0] = p[0]; - block->color[1] = p[1]; - block->color[2] = p[2]; - block->type |= BLOCK_INTRA; - }else{ - index= (p[0] + 31*p[1]) & (ME_CACHE_SIZE-1); - value= s->me_cache_generation + (p[0]>>10) + (p[1]<<6) + (block->ref<<12); - if(s->me_cache[index] == value) - return 0; - s->me_cache[index]= value; - - block->mx= p[0]; - block->my= p[1]; - block->type &= ~BLOCK_INTRA; - } + block->color[0] = p[0]; + block->color[1] = p[1]; + block->color[2] = p[2]; + block->type |= BLOCK_INTRA; - rd= get_block_rd(s, mb_x, mb_y, 0, obmc_edged) + s->intra_penalty * !!intra; + rd = get_block_rd(s, mb_x, mb_y, 0, obmc_edged) + s->intra_penalty; //FIXME chroma if(rd < *best_rd){ @@ -934,8 +923,35 @@ static av_always_inline int check_block(SnowContext *s, int mb_x, int mb_y, int /* special case for int[2] args we discard afterwards, * fixes compilation problem with gcc 2.95 */ static av_always_inline int check_block_inter(SnowContext *s, int mb_x, int mb_y, int p0, int p1, uint8_t (*obmc_edged)[MB_SIZE * 2], int *best_rd){ - int p[2] = {p0, p1}; - return check_block(s, mb_x, mb_y, p, 0, obmc_edged, best_rd); + const int b_stride = s->b_width << s->block_max_depth; + BlockNode *block = &s->block[mb_x + mb_y * b_stride]; + BlockNode backup = *block; + unsigned value; + int rd, index; + + av_assert2(mb_x >= 0 && mb_y >= 0); + av_assert2(mb_x < b_stride); + + index = (p0 + 31 * p1) & (ME_CACHE_SIZE-1); + value = s->me_cache_generation + (p0 >> 10) + (p1 << 6) + (block->ref << 12); + if (s->me_cache[index] == value) + return 0; + s->me_cache[index] = value; + + block->mx = p0; + block->my = p1; + block->type &= ~BLOCK_INTRA; + + rd = get_block_rd(s, mb_x, mb_y, 0, obmc_edged); + +//FIXME chroma + if (rd < *best_rd) { + *best_rd = rd; + return 1; + } else { + *block = backup; + return 0; + } } static av_always_inline int check_4block_inter(SnowContext *s, int mb_x, int mb_y, int p0, int p1, int ref, int *best_rd){ @@ -1092,7 +1108,7 @@ static void iterative_me(SnowContext *s){ // get previous score (cannot be cached due to OBMC) if(pass > 0 && (block->type&BLOCK_INTRA)){ int color0[3]= {block->color[0], block->color[1], block->color[2]}; - check_block(s, mb_x, mb_y, color0, 1, obmc_edged, &best_rd); + check_block_intra(s, mb_x, mb_y, color0, obmc_edged, &best_rd); }else check_block_inter(s, mb_x, mb_y, block->mx, block->my, obmc_edged, &best_rd); @@ -1150,7 +1166,7 @@ static void iterative_me(SnowContext *s){ } best_rd= ref_rd; *block= ref_b; - check_block(s, mb_x, mb_y, color, 1, obmc_edged, &best_rd); + check_block_intra(s, mb_x, mb_y, color, obmc_edged, &best_rd); //FIXME RD style color selection if(!same_block(block, &backup)){ if(tb ) tb ->type &= ~BLOCK_OPT; -- 2.34.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".