From patchwork Sat Sep 30 15:07:31 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 44050 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:1204:b0:15d:8365:d4b8 with SMTP id v4csp437146pzf; Sat, 30 Sep 2023 08:06:33 -0700 (PDT) X-Google-Smtp-Source: AGHT+IG3i7gfdD/o3JFM06U8Xu7fJv4PiMkQegv+IC+kpNJAk1X0rpYn8IaNx5TNNGxJufcDR2ZH X-Received: by 2002:a17:906:7496:b0:9b2:74a1:6b30 with SMTP id e22-20020a170906749600b009b274a16b30mr7320433ejl.33.1696086392642; Sat, 30 Sep 2023 08:06:32 -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 n11-20020a170906b30b00b009a223e65d0asi7148641ejz.107.2023.09.30.08.06.32; Sat, 30 Sep 2023 08:06:32 -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=Jk7hAIaw; 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 2B4A368CC9F; Sat, 30 Sep 2023 18:06:29 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-ve1eur01olkn2093.outbound.protection.outlook.com [40.92.66.93]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9F2B268CC9F for ; Sat, 30 Sep 2023 18:06:22 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fbnGRqIgK3tGUWydaLPrjii+OGfNTed1/RxHEGyBjQ5CCqyc15sqp1PCs7pMCeEQecsE7RkrZ3qqawfqQ7nbl2rlPOWwuGDs6qPnhQvPHPLMNGNClIT1UrFYcMjTuHKoZTBX50eF8xL8gJM4Q/TcRgRSm4eLk+iklMh1K5eJd+a4HYTR3winqdMf9j9TldoZ+MHpSS+alb+axvZja5wNIFz3Qmj18lYjo7y8L/2j6Supoj/zQttoKasGpV+JSPLuL+SI/qgtI9cQcFiBlEBA0HcyNNzOehh/Q4ElPLy83LjvL10Mry54dHss2Wj+aZMp2paCMQocokPGX3xaJG07uw== 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=38IKIHPqRyOAPbwgS+uTOzgcsvjaIOk6zQFzsVPPvEE=; b=MG6MILZgiTyY/wZu7wFC/SOoqt+orJuvH+4EFCVHbcv65Eg8rRzUYxo2A31TU/mSGVeUwQzonmAuzzFlNOGei1wVioQxYikR3ARpfD+q2Hfv6qsJO7iqcF7stwbAWPgzmqmLGHiAup1Hp2bxOzZ5DsTMkm5wa4khLNWyYl+pM06/kgDcC503gHSnz1mO59hwyBoJCFhC/09pQ5j7dNCw/ms2NdEx57f9Q+a+b+AVzwyvnpqvh4RR0WSO1QHZKPFR18klAQ3izC29UmX2ghBoWKH0F2tBTO+2iL5cdORWU58brmg0a9fuCaIbi6tc5Jjf04jttBuWfaJq9NxNa8kqtg== 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=38IKIHPqRyOAPbwgS+uTOzgcsvjaIOk6zQFzsVPPvEE=; b=Jk7hAIawoaloyxps6q6J2Noal8Pf3Vp7fr6veKKzINXzORNn1jR6YNa2zi3dIV2s48XAhRyz1q+OcPADCjZDSYdHcH1mEuztnn9eeOdnyR2k+Jnm9HbvU9BjRb1wZxIR3QbIHu+PUVvEdA3fqqwxTNjTGAKz3kKX2XcBrzFKRigBvbm5zc/y7OevTgMzMYPIgbhAeRZuBefc0OxICwMGlT72OrXJ7dDdfsEjdfD3LwFIs/x09KSvk+hShxnymsklaroSFHVGeto4mIWrnGcv90Dfv/UHefLYnr6VNptVKN/OuWPMkIShyF5G5WoHcO+E/vS1ocqn1mOHoqIi34QVXQ== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by PR3P250MB0051.EURP250.PROD.OUTLOOK.COM (2603:10a6:102:14e::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6838.28; Sat, 30 Sep 2023 15:06:21 +0000 Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::5e01:aea5:d3a8:cafa]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::5e01:aea5:d3a8:cafa%3]) with mapi id 15.20.6792.026; Sat, 30 Sep 2023 15:06:21 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sat, 30 Sep 2023 17:07:31 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [tRN0Pudtz67o6nKu9SCjT4sOjflSXvnM] X-ClientProxiedBy: ZR0P278CA0206.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:6a::23) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) X-Microsoft-Original-Message-ID: <20230930150731.2605013-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|PR3P250MB0051:EE_ X-MS-Office365-Filtering-Correlation-Id: 9da52bbd-318a-455a-4c05-08dbc1c6ce46 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: A2H1Eb8BNH1WN+SGddPIYWGG9tsQ28/px6nRjsMXmZHrKsaVVgUkzpg85ChiJUzsEgh2jZO7AF9wN27FqDwkZg9aZcRXZiizx74RWZJXTOdxOkECD8g+QvxVBj6gZfl9YZGQE8mYr+hnM//Daqh7A0T6CbK3xaGbjOdNxobOAGgCpGorwDvOLgTndgSiAF+RJbxmKbepG7AvvZnPdYNRwrnZP8JXbLakXYpRLSdHuz4H6BxkANMisL4qj0zr+DsJBxwDkEwEEjnnfKuFnzJT9pYoTYXKsxwWnfYpGOJKhtXWVsaHJMpDcmxwZpLYedHIX+l3DJpUTSBuP7BDWtJQpJsNjIA4KLRb0P2BB0ofYwSkgEbDVr0QzC2jbkZgPEc0S1uN4/d30n2KLv/yxTNFh0issQLbFl3KX8GLYOX6yjfycw+4ITb9Iwt6jQcUX6n6bAzITPPRf8f1rWlUvPBOZ7n6lSHNE2GwbBIlVA+xgRVtVthpGpWLDDn2G2xFAYzvAuj+sHWEGwTfO9hDZFqhbr7zkvX2biC+tX2ldf3xrEqfwDZStZaz+cH+x8F35ozu0fduCpzjXBrWoBzOn6so656iwv7eCWL6AI1PwIal+4+2mYsh8sQXwBb3QefRTfSP X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: ppq5n0n1Hs8ZF5LI5slsvffz5sq/qO49gYqeANPNpabISit9IkfyyKtimjjsx34++uU8lf0HpC9bUfYGNd0mF6O92XJ+VlIbQurSygj/QbD8wxBmb+aDoyINUSwKF4el/oDJSIHLdAkYy2xZD+tsiDCbC1DC+Ntu1gcip4MxKDL3GwSVkx9lbNrb06tsTw5WgBPOWUsQxQ0cKUm+1bdnoDG7XvINlTKjlI9KL33LUMW53crbTbVtXK7kBMLeWLaUOVopK9k9vMm8uejmN57s92bLrzTIZwCEHHWgKvETKoLvu9Io9Cx8zfJ8jt8oT5Gc5Pfx52YEl9SNm+GgQO9b1G6EbIzYf/wxPq7Ecj2XCxOt8WGxIMq60FsX+U55G2Iy51rs01iTImr5JyJP9USXh/SvfskHqlzvv9fsHAOoUKFPONsrogRHPYoE7cOJCxa12qVeh+iiRP7C//d0R2zdVUfj3hkmc1pbRa5YikM+ZYsS+UquzTuLP2Ga+avHRI+JOr/sMNnWOcpjf0CRiygfxQMbj4wOAckvYWbtIDcXjXf0m31vXcEza0F5n7+EUllbLKosMUmOweStC3yOtnh0C81Q4ToyAhMVKkhfI8mVfxli9g2lMPlrT2ctVOaMHp/VDscov+4LRUBhFQszXuJIcOmE4Q7dojNiCn1oHLq+Nx9nMkgljfiWLZOtpojqqm4RjSWiFy37kjg/44EAEFUEYKxSsKOd7MJv/1A29SLG0jTSi3Rj+c5x6+sPokJU9zau2JMvGxP6G/gTc3u/Eqd2RqLWoGLGB7HkOC5ubl7FR1u3lEEJzYkSECBJ54A+D+rnddA5zONEhR0RurscxwwnT+IN3+V/EDoKtxe+5NojFnYyWj1oXCdp8OZd4WkS9PHZK8Y78QnTO3vPZdp/R9iHEkE9s+4y/CHq2JgUYjgw0pccHdOLgDvPqP9DsfPGcj/yqoF6jD0XHifak1Vlea8ZUbpkbms2CniWAV5bYujObpHdZFADDD4dnkjL3q3iDGMh51peX8nqEjkS+CefljYyJ8w4/70nSckQ2sOjnQq/PR+scQTiQGl+IEpb6NL21VhR7EszCTfkGcPuCAE2crjLi41wq5RLX4abLboh0FVouuUVPj8+36fEP4nKLfegVagI+o1xjj6BnKRtSccNtKNh82X8Tzms4rHWXBwEWsleEyug59YlnJwfKru6rvw0iSAd15QOZOqHtzvfYVBI56tU6QWPR1MKH5T8c1/JOH9gjb3nB1GHFKO+jXWhkqcX1PNY X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9da52bbd-318a-455a-4c05-08dbc1c6ce46 X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Sep 2023 15:06:21.3742 (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: PR3P250MB0051 Subject: [FFmpeg-devel] [PATCH 2/2] avcodec/snow: Move dsp helper functions to snow_dwt.h 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: +sURXlZe3c1R Signed-off-by: Andreas Rheinhardt --- libavcodec/snow.h | 38 -------------------------------------- libavcodec/snow_dwt.h | 40 ++++++++++++++++++++++++++++++++++++++++ libavcodec/x86/snowdsp.c | 1 - 3 files changed, 40 insertions(+), 39 deletions(-) diff --git a/libavcodec/snow.h b/libavcodec/snow.h index 2e61154d0c..a5e2c138cb 100644 --- a/libavcodec/snow.h +++ b/libavcodec/snow.h @@ -176,44 +176,6 @@ extern const uint8_t * const ff_obmc_tab[4]; extern const uint8_t ff_qexp[QROOT]; extern int ff_scale_mv_ref[MAX_REF_FRAMES][MAX_REF_FRAMES]; -/* C bits used by mmx/sse2/altivec */ - -static av_always_inline void snow_interleave_line_header(int * i, int width, IDWTELEM * low, IDWTELEM * high){ - (*i) = (width) - 2; - - if (width & 1){ - low[(*i)+1] = low[((*i)+1)>>1]; - (*i)--; - } -} - -static av_always_inline void snow_interleave_line_footer(int * i, IDWTELEM * low, IDWTELEM * high){ - for (; (*i)>=0; (*i)-=2){ - low[(*i)+1] = high[(*i)>>1]; - low[*i] = low[(*i)>>1]; - } -} - -static av_always_inline void snow_horizontal_compose_lift_lead_out(int i, IDWTELEM * dst, IDWTELEM * src, IDWTELEM * ref, int width, int w, int lift_high, int mul, int add, int shift){ - for(; i> shift); - } - - if((width^lift_high)&1){ - dst[w] = src[w] - ((mul * 2 * ref[w] + add) >> shift); - } -} - -static av_always_inline void snow_horizontal_compose_liftS_lead_out(int i, IDWTELEM * dst, IDWTELEM * src, IDWTELEM * ref, int width, int w){ - for(; i> W_BS); - } - - if(width&1){ - dst[w] = src[w] + ((2 * ref[w] + W_BO + 4 * src[w]) >> W_BS); - } -} - /* common code */ int ff_snow_common_init(AVCodecContext *avctx); diff --git a/libavcodec/snow_dwt.h b/libavcodec/snow_dwt.h index 15b8a3007b..6e7d22c71a 100644 --- a/libavcodec/snow_dwt.h +++ b/libavcodec/snow_dwt.h @@ -24,6 +24,8 @@ #include #include +#include "libavutil/attributes.h" + struct MpegEncContext; typedef int DWTELEM; @@ -91,6 +93,44 @@ typedef struct SnowDWTContext { : ff_slice_buffer_load_line((slice_buf), \ (line_num))) +/* C bits used by mmx/sse2/altivec */ + +static av_always_inline void snow_interleave_line_header(int *i, int width, IDWTELEM *low, IDWTELEM *high) +{ + *i = width - 2; + + if (width & 1) { + low[*i + 1] = low[(*i + 1)>>1]; + (*i)--; + } +} + +static av_always_inline void snow_interleave_line_footer(int *i, IDWTELEM *low, const IDWTELEM *high) +{ + for (; *i >= 0; *i -= 2) { + low[*i + 1] = high[*i >> 1]; + low[*i] = low[*i >> 1]; + } +} + +static av_always_inline void snow_horizontal_compose_lift_lead_out(int i, IDWTELEM *dst, const IDWTELEM *src, const IDWTELEM *ref, int width, int w, int lift_high, int mul, int add, int shift) +{ + for (; i < w; i++) + dst[i] = src[i] - ((mul * (ref[i] + ref[i + 1]) + add) >> shift); + + if ((width ^ lift_high) & 1) + dst[w] = src[w] - ((mul * 2 * ref[w] + add) >> shift); +} + +static av_always_inline void snow_horizontal_compose_liftS_lead_out(int i, IDWTELEM *dst, const IDWTELEM *src, const IDWTELEM *ref, int width, int w) +{ + for (; i < w; i++) + dst[i] = src[i] + ((ref[i] + ref[(i+1)]+W_BO + 4 * src[i]) >> W_BS); + + if (width & 1) + dst[w] = src[w] + ((2 * ref[w] + W_BO + 4 * src[w]) >> W_BS); +} + int ff_slice_buffer_init(slice_buffer *buf, int line_count, int max_allocated_lines, int line_width, IDWTELEM *base_buffer); diff --git a/libavcodec/x86/snowdsp.c b/libavcodec/x86/snowdsp.c index bca1f9bd2e..bd0aa766e5 100644 --- a/libavcodec/x86/snowdsp.c +++ b/libavcodec/x86/snowdsp.c @@ -24,7 +24,6 @@ #include "libavutil/attributes.h" #include "libavutil/cpu.h" #include "libavutil/x86/asm.h" -#include "libavcodec/snow.h" #include "libavcodec/snow_dwt.h" #if HAVE_INLINE_ASM