From patchwork Mon Oct 10 03:13:06 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 38645 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:4a86:b0:9d:28a3:170e with SMTP id fn6csp165849pzb; Sun, 9 Oct 2022 20:14:32 -0700 (PDT) X-Google-Smtp-Source: AMsMyM4/vvZ8P3hVraKh1ADxSJIqwb2mUz7YGsyAgVKUq6OZQT13Q9fRd3mhnn3RNoGGYbyhhuUo X-Received: by 2002:a17:907:9816:b0:787:4350:3a19 with SMTP id ji22-20020a170907981600b0078743503a19mr12526405ejc.627.1665371672094; Sun, 09 Oct 2022 20:14: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 o13-20020a509b0d000000b0044eb6f979d7si9035992edi.152.2022.10.09.20.14.31; Sun, 09 Oct 2022 20:14: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=nFvPHBfN; 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 1783D68BCB9; Mon, 10 Oct 2022 06:14:24 +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-am6eur05olkn2099.outbound.protection.outlook.com [40.92.91.99]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id D8A4D68BCA7 for ; Mon, 10 Oct 2022 06:14:17 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=C55iwk395TpL2RjyjruweZQgcJ0JJpqs5Bs/F+ptjoexYyri6quZUp/AhecuNhdmOFaO83JC6065X5OLM659AnaFDM9okC+J/P6Lv2hxxYV+ULsy18z56T8dMg4cCvgESD2lddGShyBeMS8f27trLv3oNS0se8aZPTvqluVLRQHFvENWLyb9dJ6jPuvhRR7yp/0LytuR1pZm1n6Kdbb8a5pUelR+TPHfmK7C8iT6TIaLN1kODtRyzzk27ilN8dUzFWCayWimsvImFunhNquA72dr6KIOAwi8liAD/X6VyRdDvMSDBTVxUrTAJrOxkH0wMGttfyOep9lzIoxTzXARrw== 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=LA8diyrmrHNxVaqZ4SSfrOx63JOZ1GSk1iPiWqZm71s=; b=nTuIXhiU2bCRlNJ7hfseEn910OlDYw+9jusIyaGKzZoEqsAdZG1VS/x6FQ7/n/HkULjaQkwH+GDkZihlbZ5WGAIJoXr5TaOdKLABZUWtomQQb0++78g9CQAac9STN5bbcSmnQZIQCpDqhqrmghVH//bYAO6W3giSVDGGiYajbq2SkENkKMXequb4n+a6be9z5mqiSLG4YfF0jwCgOEXF17rpZAZbOetOhPvMDPIVUYv8Ynp6SrF+oHee387CgDSHsHbH73iGq39T0sBwe7pJiLSRyCEQZlT60phgpoKR275cL4uDGu1tcnf3xxgq/UqNmGAj142V6lb4met4W8cl1w== 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=LA8diyrmrHNxVaqZ4SSfrOx63JOZ1GSk1iPiWqZm71s=; b=nFvPHBfNUI+Gi8lEnnQvIPBk8D/ORYFSo35mQC34koGNCvm6cHOPLxtVSY+EUi+lHdgZ/lPeqMEAp3OOr/Cvq9rwRm50aqV49o0Bvza1ii2Yi5YnidPZapJbCP6tDov11EEMCyha54ZOpDKV2jAWAyuJPGiOTrplTmeOfT9z4LYYGG0YedWZISfylfaVv5JhveF1cyUO54glWO3lGHR8Eoyx5njmvfwqN8iLvEk+XQN1qh3SQ8MAA2njtn8z7QEsWLpRhRyQ9vdKPWwkqxwhJP6nN+uNksm3wFKE5E38NRRG9uk9BId1Zmtx0vKRUBhcrcmuopL70bEKwfhzm2rTcg== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by PR3P250MB0354.EURP250.PROD.OUTLOOK.COM (2603:10a6:102:17d::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.32; Mon, 10 Oct 2022 03:14:16 +0000 Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::f9d7:680f:70c4:44fe]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::f9d7:680f:70c4:44fe%7]) with mapi id 15.20.5709.015; Mon, 10 Oct 2022 03:14:16 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Mon, 10 Oct 2022 05:13:06 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [x+9Mp+JVfIGuXTKNEZxqyPOTduBOhRl+d/Ynj3XSb0M=] X-ClientProxiedBy: AM5P194CA0008.EURP194.PROD.OUTLOOK.COM (2603:10a6:203:8f::18) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) X-Microsoft-Original-Message-ID: <20221010031310.187429-8-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|PR3P250MB0354:EE_ X-MS-Office365-Filtering-Correlation-Id: 8286b09b-9ca6-4345-1249-08daaa6d8379 X-MS-Exchange-SLBlob-MailProps: AZnQBsB9XmruWxLySsUhFVxtZUJ43WkHehkkl3zdmVCythktGIbziFaA0EiySv34FmZT42R36w+O4FXct35amFVWvaB/iGc6SFosK48ZPZYu6OLJPQcTnh494pSQvlvucUi300X3K+++GI6hellEjRS64YcNaCJWr67LmhJDgArWdVk3XCPYX0i7zzr3fj3zdsEa6miOZnQCP2JEpGUkE7IX/NpL4zSv+lbXQTyfwvsJ+XvT/alEYH84AYhoWKBKETnaETZMp7nnrl/oK+MX0mrYymLNzOJmgcRLuYmKLVPXpF+WODzPBRMb8kAw4PbumVc8xMoiMoTNu62u6eqfHfP98cLfInmSmmCOxEy4+3g9ymAUqU4eSk+sWlYm6Z1ij9Ms62lvLVLxaeD8hiR0sy3HJWMcruu62FKNCw5mPp02Uzs7KnDotlmrCyVtgnEg7p255+Pos2mefVLrSolZ0Hy2WL1IscQ8dYmaNWRnFkmQrBgWC8l0d/lnbz1P0N+QuaNUcfMLLgF9GMDNcw/erXGcLtFw4ib4Cgepbzz2mhSc4655H2B4HuS3KdxlnrhZRF/UqRHJRfVQi670suE1i/EzI/CcdH8XspeAZPX20O6hedio54+PfgpEMsEZl120fqi9cZHpr1nB+El9v0zE1M9zmxbfUQJ9ra7EI34adYpMihv5k7YQPVo52MN9yMxBS0sfKxv6fibrdUBEehO3QDJNAiJJhXdQ1N2+2eSzXK6NHOsobivJPYQXRl7L5K7bN8Lu1yVsI6Q= X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: iZZm4Xn5IM7spXzjGZ+vmtqInZ27cQpz9RPldZQpH1reICsVVTNTQdUeeaeJSDETpPRromJXMq4ocSU9hdedBmMEScJdwSdFeUfrmn4h9Wzhd3HwDMp2UO3ZOTGGkzvNqiZ50kIAnEbZYzHBuLlMb88LtuVyZScV4B6mI6sB7mWt1t9HNPI4qTIptoCbtmaV4ygY9el2BJVXQWgzbsrPbX6wDThmBSgmfQuJzAqtTJK5rc0Hq4cPYNLvMK5UE6l5zSLXaKAZCCRtq5272hDqIPwz4/NTIlKrZlyGx59VwxZB4SX7m8RCpumhKt8rz8bzmdJc3I9cQK7Xto4Q2N5kO1o45WvzJxqOn5axkdXB/niLOwP2UqOknwahWeLC7HUtRgv2iTFlfPDOz33JXzV/tDW+0F3FowWr1ro/qZ0xtIHEILoePf08yzVR9zkGgJeI1ff55cJaLo0UGLzY9xRjW3fJCQKzQ5ktG1nZ7jHAucSTHeSzk+/xlcIBHFrniIKZyxfP6DJ4wsk2plbSPXeI+ryO4LsZU9wz7GkAgSHc8WvV4a6/k5oj6vMFz3j0Lz8Wt16yewB4oGVApbbb+048PDtICrCLqarLIkVqcel9byVZhGDvfiZpRsH3pvSSXLK3E8SLROlguP4NuP0R2+YXZlY/3EwB/DJLVNS54Ss5l1qlKLj/BRFcvvKugAP7cN/2 X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Qk7uRRZJExgOU8KtcdTh8GuweroV8aCTU7ieNhkl1oQkeHHEGfL/0lw5PFor/s5dI5GWqQp2I7vQp/tyC+wo136/dG/7pNQLr/O1Y+itaCGwlqpPNfgPutAiVq6KL9TLSB4mVAIZ+2dVnlLLIhnX3P5mk5jQZHzQbYoZ35N/7IWtrRJyclA1APSLSvPW/gBS4qZCYmkdOuwwuJHUUWHhErWl4chnkTL5KMd3v8BxnTvFKTvACLcAbVacHt9I4TePiTNSF+WL2fGMH+/SfddcgHr4DLTY/JeucQd/O081miVq1q2cyF7aQM/e/CqbHijBMTxECzNEV+qzbkxQm4WbySWTcjOtMxIsyP1xhi+TkjrYUmBAJUdFTYcbdk4jT8hWqtfBzjNXEUJSDapyr8864mQ03hT9NWXaQJYGaJy6xj3FVpdAW8jo9IIf2FzMtJ/AYUX+XHLFdKijmyYiYE751GW8xvSp7LKKee8R1Ve1QiQu3a/lpR0KzQNiRA0d4yXnl1nk4m+fFGnF6VwzsBo1E3D1v0rkDrOaxlfIHuf9vMhih8qtD+7ok2X2btXzGQu9R2UYdYXdNmff3NzjAz+17SdzNYi9KazV4Kq/bUPbkvvGAcN+VUBSqnqMOp5y3QD926Xyd2RQ0ujikZB1UHadNaZebb+BBf4basuvqpzJwp0XXrOPzGNsMfG2AkJResL6pPfnQWTpSeWsLhsf0tfsKgm13KiXUFuQiRBJAnJhjyw47kYhKhUXLvZ0mn2tV4/0gADCjKq187GyttNoZ/URywN3LUzyZbeYf4DpBbaZLBLBvkSPYLIjXWDiFLytr9a/wURs9028fRHuOq16JXbmXrVwTh/bkXIochREQlTTlbLqK7YzDRAHgOqFI9Hpn3gGAlD9nWLs2rV1Sm+/UC/3Ajpt4ZvZRMnvzX4bjDTQo/DQVem4J33+0HoXummkdqVGw9CHXQ7So1+JNGhpGv7oL6+VMVt0hRmeR9LsVZk/q8eXUVV5odILSaSM2bARHfkCDz8RxKFWsgoykucnvRFmdDK7GAiVs6bQGyOOwqKwappxWjkMiG3Bf5wwkOm2ZhHet4zZJe4iqFaShoifCdhDX5m0bCvpFV+ZAjC3SyR4PtSWsmetpQ/AEstMJTrtMdx33BXLQhuQQMpNRaznZFz3/UqwpFprn980MOAWixCNm+em33afsa40Z1nrSV8gJF6ahJEgbaPZELF7+Q0Tl0UOjxM3YTi24K5hn2Jz3dFtN5M+2T8w1+EMbfugnKq4GtHYZdEL22Q0VmrhoJ8JGewrSA+PwUN80SEr4sFEhC84aBktRf/K2ub87WyWItg/FhbE X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8286b09b-9ca6-4345-1249-08daaa6d8379 X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Oct 2022 03:14:16.1827 (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: PR3P250MB0354 Subject: [FFmpeg-devel] [PATCH 16/20] avcodec/snow: Move allocating encoder-only buffers to snowenc.c 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: 3kajxI8SP5bA Signed-off-by: Andreas Rheinhardt --- libavcodec/snow.c | 23 +++++++++-------------- libavcodec/snowenc.c | 16 +++++++++++++++- 2 files changed, 24 insertions(+), 15 deletions(-) diff --git a/libavcodec/snow.c b/libavcodec/snow.c index 7fb1660dd6..7e93005492 100644 --- a/libavcodec/snow.c +++ b/libavcodec/snow.c @@ -456,10 +456,7 @@ av_cold int ff_snow_common_init(AVCodecContext *avctx){ height= s->avctx->height; if (!FF_ALLOCZ_TYPED_ARRAY(s->spatial_idwt_buffer, width * height) || - !FF_ALLOCZ_TYPED_ARRAY(s->spatial_dwt_buffer, width * height) || //FIXME this does not belong here - !FF_ALLOCZ_TYPED_ARRAY(s->temp_dwt_buffer, width) || - !FF_ALLOCZ_TYPED_ARRAY(s->temp_idwt_buffer, width) || - !FF_ALLOCZ_TYPED_ARRAY(s->run_buffer, ((width + 1) >> 1) * ((height + 1) >> 1))) + !FF_ALLOCZ_TYPED_ARRAY(s->temp_idwt_buffer, width)) return AVERROR(ENOMEM); for(i=0; imconly_picture->linesize[0]), size); } - if (!(s->scratchbuf = av_calloc(size, 7 * MB_SIZE)) || - !(s->emu_edge_buffer = av_calloc(size, 2 * MB_SIZE + HTAPS_MAX - 1))) + if (!(s->scratchbuf = av_calloc(size, 7 * MB_SIZE))) return AVERROR(ENOMEM); } @@ -517,8 +513,8 @@ int ff_snow_common_init_after_header(AVCodecContext *avctx) { for(level=s->spatial_decomposition_count-1; level>=0; level--){ for(orientation=level ? 1 : 0; orientation<4; orientation++){ SubBand *b= &s->plane[plane_index].band[level][orientation]; + ptrdiff_t offset = 0; - b->buf= s->spatial_dwt_buffer; b->level= level; b->stride= s->plane[plane_index].width << (s->spatial_decomposition_count - level); b->width = (w + !(orientation&1))>>1; @@ -529,17 +525,20 @@ int ff_snow_common_init_after_header(AVCodecContext *avctx) { b->buf_y_offset = 0; if(orientation&1){ - b->buf += (w+1)>>1; + offset += (w + 1) >> 1; b->buf_x_offset = (w+1)>>1; } if(orientation>1){ - b->buf += b->stride>>1; + offset += b->stride >> 1; b->buf_y_offset = b->stride_line >> 1; } - b->ibuf= s->spatial_idwt_buffer + (b->buf - s->spatial_dwt_buffer); + b->ibuf = s->spatial_idwt_buffer + offset; if(level) b->parent= &s->plane[plane_index].band[level-1][orientation]; + if (s->spatial_dwt_buffer) { /* Equivalently: if s is encoder */ + b->buf = s->spatial_dwt_buffer + offset; + } //FIXME avoid this realloc av_freep(&b->x_coeff); b->x_coeff = av_calloc((b->width + 1) * b->height + 1, @@ -601,15 +600,11 @@ av_cold void ff_snow_common_end(SnowContext *s) { int plane_index, level, orientation, i; - av_freep(&s->spatial_dwt_buffer); - av_freep(&s->temp_dwt_buffer); av_freep(&s->spatial_idwt_buffer); av_freep(&s->temp_idwt_buffer); - av_freep(&s->run_buffer); av_freep(&s->block); av_freep(&s->scratchbuf); - av_freep(&s->emu_edge_buffer); for(i=0; ilast_picture[i] && s->last_picture[i]->data[0]) { diff --git a/libavcodec/snowenc.c b/libavcodec/snowenc.c index fec061a8c5..b8148cbfce 100644 --- a/libavcodec/snowenc.c +++ b/libavcodec/snowenc.c @@ -104,7 +104,7 @@ static inline void put_symbol2(RangeCoder *c, uint8_t *state, int v, int log2) static av_cold int encode_init(AVCodecContext *avctx) { SnowContext *s = avctx->priv_data; - int plane_index, ret; + int plane_index, ret, height, width; int i; if(s->pred == DWT_97 @@ -164,6 +164,16 @@ static av_cold int encode_init(AVCodecContext *avctx) ff_snow_alloc_blocks(s); + width = avctx->width; + height = avctx->height; + if(!FF_ALLOCZ_TYPED_ARRAY(s->spatial_dwt_buffer, width * height) || + !FF_ALLOCZ_TYPED_ARRAY(s->temp_dwt_buffer, width) || + !FF_ALLOCZ_TYPED_ARRAY(s->run_buffer, ((width + 1) >> 1) * ((height + 1) >> 1))) + return AVERROR(ENOMEM); + s->emu_edge_buffer = av_calloc(width + 128U, 2 * (2 * MB_SIZE + HTAPS_MAX - 1)); + if (!s->emu_edge_buffer) + return AVERROR(ENOMEM); + s->version=0; s->m.avctx = avctx; @@ -1986,6 +1996,10 @@ static av_cold int encode_end(AVCodecContext *avctx) ff_snow_common_end(s); ff_rate_control_uninit(&s->m); av_frame_free(&s->input_picture); + av_freep(&s->emu_edge_buffer); + av_freep(&s->spatial_dwt_buffer); + av_freep(&s->temp_dwt_buffer); + av_freep(&s->run_buffer); for (int i = 0; i < MAX_REF_FRAMES; i++) { av_freep(&s->ref_mvs[i]);