From patchwork Fri Sep 17 02:02:54 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 30292 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6602:2a4a:0:0:0:0 with SMTP id k10csp1781508iov; Thu, 16 Sep 2021 19:03:28 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx3YyW8TdvlE7iJVkgNO4B6gnF+hCBOk4XrUUkJYMY/jyJrpzBN60VSlqZGQjpvhd/F1qbn X-Received: by 2002:a17:906:5959:: with SMTP id g25mr9603649ejr.501.1631844208629; Thu, 16 Sep 2021 19:03:28 -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 w10si6873637ejv.170.2021.09.16.19.03.27; Thu, 16 Sep 2021 19:03:28 -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=EH0uAYOU; 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 67A1B68B0D7; Fri, 17 Sep 2021 05:03:24 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05olkn2020.outbound.protection.outlook.com [40.92.89.20]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 0EE7A68A441 for ; Fri, 17 Sep 2021 05:03:16 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=VVeQsbIB9JefocUGNxBXdVUlDasrrayZNKzu8jIMNhGToPDGOPYQIdSucKYeqVgovmyfzsn50TU3aVSgdWtDvqpQHb7xy1xpT7MXMEBVnPqnYGLi+d+7nZv1x7rzxSohP0NGfyjoKwNVKgUY6Kc1XrUh3RxVjH0osMMHQTHsLp5IExa8RIGwZiPgrkE6aA1hz8TEt27k9G989bZFUbMPeS2N03B5+9Gk+1cSjL9Hygozvgw4OJ9gztsX+3LGPTn8zNsL3n/cmWeW72B+Mn2nVp/AZkpJmDfqqJjA7wL8Gpw+IMIIwqsaBU/4AqU99z6QnIoOZZtGt2g9VuEviG/xwA== 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; bh=0o1u7a38jORU6XPc7OUPWCJo1BfvrldMTIFABDCkMr4=; b=kz66HtMGPlmV4GXZe3STK9Dm/L80e545be+j6usDVwdXBU58VNDDGptWFKL0rb1tN3uoVZnF/67RsN3ozZ8Vb4MBJWqOlgSbFVKQPqvhHlk3K5KAo/fif7aBOwGGb1NUA88HgT6LJFKLaZ6aPB+O59gW3v0xB4q4AbgpW5ql2RWzrOxW7UxoamEV1TlCzmFD3OrzVROCQwwaFmU80c+OIdtT98aRy1Wtb4yQT4ZyOthxSV3tSROIs8TPVICg+6R90ARwjTk6mN344RtcT7jbjr0IYw376KScmJcRq7m4Q5LGVSjcbuQHdqq+MCmpCcFKq+8B/d5aisQrYieYut3JOw== 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=0o1u7a38jORU6XPc7OUPWCJo1BfvrldMTIFABDCkMr4=; b=EH0uAYOUPdQAsYQTWir2se0vpYLXAYt5sgj7T9hoxEGBhavqVdz5xE8lfOy8ODCwuOINngZbMhcsgcYJUkTjqejRywbIhIXQqIjkaVL19A4JJnRc4kWH5CeBLtgxd3+JQb8Ah/UeKOGl1zceoRyxjYUNUxC2PTHBi4FNFzUTnILvIzU9A+naYm1DwXWGXTauJ5l9rvX2p/r+rZIZk/7mo30JHkueXykBtoBhugztn62y4vMELoeoxud8Ih/98s4hbBcAIEOqTdfUTuObdyc8lwZgvBVvZ2qre8fyu7LG2bETgqJujWOkmrbNZT17G8EXbH63RdfgPR8S9Rk4aObk5Q== Received: from AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) by AS8PR03MB6872.eurprd03.prod.outlook.com (2603:10a6:20b:294::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4523.14; Fri, 17 Sep 2021 02:03:15 +0000 Received: from AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::787b:2156:ca99:fe00]) by AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::787b:2156:ca99:fe00%3]) with mapi id 15.20.4523.016; Fri, 17 Sep 2021 02:03:15 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Fri, 17 Sep 2021 04:02:54 +0200 Message-ID: X-Mailer: git-send-email 2.30.2 X-TMN: [BXgl1fZPeWOQhiwX+TKBKv3jY+0Gh79l] X-ClientProxiedBy: PR1P264CA0012.FRAP264.PROD.OUTLOOK.COM (2603:10a6:102:19e::17) To AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) X-Microsoft-Original-Message-ID: <20210917020306.275251-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from sblaptop.fritz.box (188.192.142.38) by PR1P264CA0012.FRAP264.PROD.OUTLOOK.COM (2603:10a6:102:19e::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4523.14 via Frontend Transport; Fri, 17 Sep 2021 02:03:14 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 4858afdd-1fbd-408f-d3e9-08d9797f4f34 X-MS-Exchange-SLBlob-MailProps: pxu8rxgqUgh8Iyy9QXxCxqRTRmqUtWIWrQikd5B7Hevm23hxblAFg81bmuEGiWgLTNRcpEXvKGOc5flttFYmHL+IF3XebX0cu4kTE5tATvX9L++YvXJkOXIQv6oC8cJse5umOsGMXXmjzKvqINmTbINseu4A7Fk9037wOpOwVhDZnYlk9yiMhSk8wy6cotv+E/pECMFwmbx9Pck085idyWVkgSobelf4vFQI8CwAN0gfAfu9xNBbvno1t/pSy09Ohe9k9hmzFxO7Zd4COeYoHq8P4udLNeKgKz//KHDsPLnGSmLOGidn+C5M2rukDgj7dDnQ/X/aupmxsr1CwF7qtMW6lEOTFwG3Qhq2QVH5xODmgNCJuYTKE4zpXl1qKVV+rjIr0dQ+EuB6kdGfu/eFdhWlVwatjTLeyfii7Hb/fQ41oW7pBYTcSZQ9EjMXagLo5t9rwJRy6fG4xwtSHBXsr+5/SF+KNNx5laA56xpHgHYrQLGiL+4gJceexEKlXGOtB6wqYoZee8qHa/Jyx+FSferwUun3NKrxIeyQfpjet7C0Ik+4v7r9OZsxylFO5B01QsTB7Pjw7IbDmrAfjsCpEqPaNK1F30kmizBNQQH0g/uWKdGwYhB5w9orJXdHmoH5feQg7oNCpqaPRhhH15lvkiig+FGVgOfczCggwTPpMsFR55cHoGBUiONegzbEierdEVDt3QoqMLgORsMYyK4k5Q== X-MS-TrafficTypeDiagnostic: AS8PR03MB6872: X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 6JxnYwTfbv/C8grrFmVL1pig2oFhEJAQZzPmZL/U26LTuZuJZ3qZ5TzVjq3SC3Vfyt/0IpEn29rjJK9EkeKLbWsxYRyzmtq97oD5shCAu8emerFEGZDAG64hhYt7dZ0fFGso7J8HA+IZ+AwhMeaIQ6chz/3WZHG7FTI552oQ7T4K6j3hS/UGujBmdJAqOUQwCRp0D6yMffo+1HiL/b4/nre6vBIlQviPOL6JEUp5IJXz73c1dWSV3O/YY3H6NT5azQxzmj/EjLeu/lUcIGdBm6Os16HalG1vujiFaiurD84r1t31dKWjUS/frjKVNPKEDsKR6tifCb7XwTOXDIzb5W7N3De01//rTsG5+z1tbIwPQ4BKrSCU49hFVcP7Wci0V2aR24U3kAJFtT9tO6UCeunqRX8a2iMrHBxdwjKHgfkFRhodLEqrvySbkjGCt58e X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 4XhBoOoQegBC7JBOSFgViG+iybhxodl8qUntjr3chXIvlm6d3F2yyAVaSBVEE6sMtQVJcmRBW9zeiembbVmwclZts8w2i3oS2CC4oQsNUzPby3Kk5QPKDmH8AysgwaAqSRRMhWZaOi5PQoo6Y9uryw== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4858afdd-1fbd-408f-d3e9-08d9797f4f34 X-MS-Exchange-CrossTenant-AuthSource: AM7PR03MB6660.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Sep 2021 02:03:14.9790 (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: AS8PR03MB6872 Subject: [FFmpeg-devel] [PATCH 01/13] avcodec/elbg: Remove avoidable buffer 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: 8a02WwDaDDfu Signed-off-by: Andreas Rheinhardt --- libavcodec/elbg.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/libavcodec/elbg.c b/libavcodec/elbg.c index d012d9a384..795fc83f16 100644 --- a/libavcodec/elbg.c +++ b/libavcodec/elbg.c @@ -376,7 +376,6 @@ int avpriv_do_elbg(int *points, int dim, int numpoints, int *codebook, elbg_data elbg_d; elbg_data *elbg = &elbg_d; int i, j, k, steps = 0, ret = 0; - int *dist_cb = av_malloc_array(numpoints, sizeof(int)); int *size_part = av_malloc_array(numCB, sizeof(int)); cell *list_buffer = av_malloc_array(numpoints, sizeof(cell)); cell *free_cells; @@ -394,7 +393,7 @@ int avpriv_do_elbg(int *points, int dim, int numpoints, int *codebook, elbg->utility_inc = av_malloc_array(numCB, sizeof(*elbg->utility_inc)); elbg->scratchbuf = av_malloc_array(5*dim, sizeof(int)); - if (!dist_cb || !size_part || !list_buffer || !elbg->cells || + if (!size_part || !list_buffer || !elbg->cells || !elbg->utility || !elbg->utility_inc || !elbg->scratchbuf) { ret = AVERROR(ENOMEM); goto out; @@ -423,9 +422,8 @@ int avpriv_do_elbg(int *points, int dim, int numpoints, int *codebook, } } elbg->nearest_cb[i] = best_idx; - dist_cb[i] = best_dist; - elbg->error += dist_cb[i]; - elbg->utility[elbg->nearest_cb[i]] += dist_cb[i]; + elbg->error += best_dist; + elbg->utility[elbg->nearest_cb[i]] += best_dist; free_cells->index = i; free_cells->next = elbg->cells[elbg->nearest_cb[i]]; elbg->cells[elbg->nearest_cb[i]] = free_cells; @@ -453,7 +451,6 @@ int avpriv_do_elbg(int *points, int dim, int numpoints, int *codebook, (steps < max_steps)); out: - av_free(dist_cb); av_free(size_part); av_free(elbg->utility); av_free(list_buffer); From patchwork Fri Sep 17 02:07:57 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 30293 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6602:2a4a:0:0:0:0 with SMTP id k10csp1784218iov; Thu, 16 Sep 2021 19:08:29 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyOhHsvBnCPNlrMRHYohRec68nRguroVatL1xQJpqFdWSrfREySTZJXAnchX6+oRS2JDulW X-Received: by 2002:a17:906:50d:: with SMTP id j13mr9831477eja.58.1631844509458; Thu, 16 Sep 2021 19:08:29 -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 u10si5072441ejc.522.2021.09.16.19.08.28; Thu, 16 Sep 2021 19:08:29 -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=U+vWex72; 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 E535068B0F6; Fri, 17 Sep 2021 05:08:25 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-oln040092073103.outbound.protection.outlook.com [40.92.73.103]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 68A4268AB0D for ; Fri, 17 Sep 2021 05:08:19 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NosF8H+poZ6j9m9Q4/xvdzQgNLM7tYsP+NdKLGOmcM+d38kMl9wKh5E0KS8f+2l3MT/3GiEN34TlJK3BQF/UHfhbF4B0yYIzqokX2/qjKYJ+dkCUsexlccL63Ot+d990RIbBxRwrqzRNyj2tVuDF1BxvjuYPSKYtqJrYKkK+4GrxctnFq7ODzznytvFclbC3K7JLp9ht30FRMl2XL4Qyf+8W9XJ2+4D/I08ICaO3k8JJGHRwQDJcYvb25Ewcgy60fhnnVecfCU+102622b/j6QvpW9LphnE/XoRi5QE7flSabSZXaORW/QXCcOW6Xt37sUwqQMvydDlJwf9fIfptrg== 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; bh=T+GttDhosV2X4gZbtnXWng+EkPXLexfN6g1AC5AW2dc=; b=VUjUX4F1J6xuo40FoRl99/Jd03ptxDAbfxDHiW0LSccuYoDtGhjYVdITtWYYQbLNaq2uZ4hzIYYUvfZlq3hmUbVrZyvCEgCVB72iIcADUNG0golsOKvBeAjJvCamkZW1D8F5BcEsN5xjIGbj/aWYlN/3pi0CUxaL+bk8+uH3kDufQXsVfE7s5hPol9xposWwaSEbp0/M2FUEUI6XQOLVDp0Rg/gvhS7L5RXVoRfJ4cbYPhQvcGlvYZxTWqV8kcJRLSZO60eh/TcEzN0cbCssw60Hy9VL3r7tppUfCxKC2TS7GIKdHCZ+nwhznCT3jG1III0hycOibXOLWAdtpPEeJg== 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=T+GttDhosV2X4gZbtnXWng+EkPXLexfN6g1AC5AW2dc=; b=U+vWex721zhUqrirziPFu97o5vWl24Rgp0G1dsTv6nLbTMK0JB4pTkVQDL7I5rxsxYOLbxCMsUZKzdN61IrMfii7lw6e9qsZ0AhhBcxfxn3WKAfT1cm6a3DZ+AdE8KuQlXNqHWrZ/CSfTSyQ2QgZBls6RduMNUq77ZrxAsbmxw0ZbO8ZPAvPBthoZMjzNVFBX/VjhfuUhoft8w9iP+s1w4uejqTfPe4fPHOa6yZgmf/sRjOv3aIHGIGGpVmBwCpk624YoiGf+Vz34mDqKatPeR+K1tVmPuIgLwMwIJfZID+Rj7pH8UERaoLe+vPvSjabopJiLicuk1zKziWtbafnVQ== Received: from AM7PR03MB6660.eurprd03.prod.outlook.com (10.141.218.86) by AS8PR03MB6758.eurprd03.prod.outlook.com (20.182.229.147) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4523.14; Fri, 17 Sep 2021 02:08:14 +0000 Received: from AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::787b:2156:ca99:fe00]) by AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::787b:2156:ca99:fe00%3]) with mapi id 15.20.4523.016; Fri, 17 Sep 2021 02:08:14 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Fri, 17 Sep 2021 04:07:57 +0200 Message-ID: X-Mailer: git-send-email 2.30.2 In-Reply-To: References: X-TMN: [NjUk1ucEe9fCDX/JVCuYySLImcns+AXl] X-ClientProxiedBy: AM8P191CA0018.EURP191.PROD.OUTLOOK.COM (2603:10a6:20b:21a::23) To AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) X-Microsoft-Original-Message-ID: <20210917020808.275498-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from sblaptop.fritz.box (188.192.142.38) by AM8P191CA0018.EURP191.PROD.OUTLOOK.COM (2603:10a6:20b:21a::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4523.14 via Frontend Transport; Fri, 17 Sep 2021 02:08:14 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 4738820a-cce4-4705-4b16-08d979800212 X-MS-Exchange-SLBlob-MailProps: f36zkjAOy3UhHkM3CMz5HCx0iheImvNZydkrjWp72SePHElzBQH/xOOW3YMejMHsLkW4y15EGO/ukXTSvkQSgZQbAEgprQmUDgCkwcJfs7U/A2DRnymXL+VI6g624dxUjnbTs83EQKgs/MZmR3PRaZVyrhCI2GUO7JMlxBumUToqP/EAKVonBmpEdOM2NddEwizcDcuWHw0Np6lhgxSrnBTwxumyXjFCvILUckgnagorkuD3KDG+yqlA3sTXpfd9EKQ2NKdbt7fX67wM9H2AIJMqmQL/2Z4oMHLQEvBq/PRgh96FCMjfqQv6gfdEHhZujgNHU8ikpYIUX4xlrNrOCic0rHJA8uJUfw5SHeqsAU+VPpfgzTlCL9lkpmHvJ9sQ1Qh5LwRMz8l7XnTAvFaaF8OCNq8xSLdD1k0aC2/yuUsQl1aVAwXUOIbx4SAIqVhA2rss8ubE9nbGQKJr+3BD9QgbeEC0eBYqmH6SoHBzJi1+43qRg4lJRj5DutG9EcQK0pK/gBuZ8jQONfRghQzxat3rjdRs3Yxho1woNCeyigw9qVlEy5I9QrPZNfS1kqOP3qC5kepp7SPZFp2qixXhYkeCk/T2l8SnXZ37fPTf9E/teZSX/0nED+IdbUhzbp8uFT9Q22pJZ6W9Ydin+Pdn6+2ON8jKTKPpZebE97mc3YEuCE4b28ffwHdg1jeqBZ0AZzrIykJAQH79K0wIEuAoD1wklwfeJAZzcKrTKgwc9Qg= X-MS-TrafficTypeDiagnostic: AS8PR03MB6758: X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: zYrBTZwa+fMV/+bqYq2CI0W643ZrKW1pzvYZSLkcxFE+/DzDyi08Wp5peFsm0yptpG5ed0uoe+LmI6ZhYurm09wjxOlYpHDChI01lWOMwIkA2QjMLic3OcI1ILTwl6FrYstIC6MrUrCNdNG6CQYPXYz+pOigEGdmJTIeS3wfNWUIz0829yFIQvozGb8Oc8LHkGQvvimfoPwHIZbkFDE7WIJ8+aHNeVMo1SfrripHMMQxZQ8KIAFNSxQ1OEBTfQlNIVS05cK9fZS5vz4oHHXcx/SvAOg06eVvgOYFdlE38W7QxE0MxgBpnKuTEz7SyTO1y8YUP6TJAgjIQgwaquCiC4jY8DxgjMheQbDIhJCnPE+Yrkj6mRLS1AR8mhw3uEYKL+6Xt+ORV7P+Or+Q6sQMM/QHos5r3o5y6fe1wx+jK5mAZZJBHk9+CQyU+95RgSwR X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: mICS1Z2NeKnm6GwbYtjA0ZHlIlGEpIkUNrE/kDW46/3K5IfmDGlDkN+kEz8ly1+e6JWWfSDqQV+ePdvTRoq41PeuyjQT+1Z3IfoGqNKtYLRihxYjrchYorfCEyVkrA9lLNPwWsXlTYOozot44rSIMw== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4738820a-cce4-4705-4b16-08d979800212 X-MS-Exchange-CrossTenant-AuthSource: AM7PR03MB6660.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Sep 2021 02:08:14.9095 (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: AS8PR03MB6758 Subject: [FFmpeg-devel] [PATCH 02/13] avcodec/elbg: Move avpriv_init_elbg() down 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: JPMh2J9vc6sh It will avoid a forward declaration later. Signed-off-by: Andreas Rheinhardt --- libavcodec/elbg.c | 71 +++++++++++++++++++++++------------------------ 1 file changed, 35 insertions(+), 36 deletions(-) diff --git a/libavcodec/elbg.c b/libavcodec/elbg.c index 795fc83f16..3ca67b400c 100644 --- a/libavcodec/elbg.c +++ b/libavcodec/elbg.c @@ -332,42 +332,6 @@ static void do_shiftings(elbg_data *elbg) } } -#define BIG_PRIME 433494437LL - -int avpriv_init_elbg(int *points, int dim, int numpoints, int *codebook, - int numCB, int max_steps, int *closest_cb, - AVLFG *rand_state) -{ - int i, k, ret = 0; - - if (numpoints > 24*numCB) { - /* ELBG is very costly for a big number of points. So if we have a lot - of them, get a good initial codebook to save on iterations */ - int *temp_points = av_malloc_array(dim, (numpoints/8)*sizeof(int)); - if (!temp_points) - return AVERROR(ENOMEM); - for (i=0; iscratchbuf); return ret; } + +#define BIG_PRIME 433494437LL + +int avpriv_init_elbg(int *points, int dim, int numpoints, int *codebook, + int num_cb, int max_steps, int *closest_cb, + AVLFG *rand_state) +{ + int ret = 0; + + if (numpoints > 24LL * num_cb) { + /* ELBG is very costly for a big number of points. So if we have a lot + of them, get a good initial codebook to save on iterations */ + int *temp_points = av_malloc_array(dim, (numpoints/8)*sizeof(*temp_points)); + if (!temp_points) + return AVERROR(ENOMEM); + for (int i = 0; i < numpoints / 8; i++) { + int k = (i*BIG_PRIME) % numpoints; + memcpy(temp_points + i*dim, points + k*dim, dim * sizeof(*temp_points)); + } + + ret = avpriv_init_elbg(temp_points, dim, numpoints / 8, codebook, + num_cb, 2 * max_steps, closest_cb, rand_state); + if (ret < 0) { + av_freep(&temp_points); + return ret; + } + ret = avpriv_do_elbg(temp_points, dim, numpoints / 8, codebook, + num_cb, 2 * max_steps, closest_cb, rand_state); + av_free(temp_points); + } else // If not, initialize the codebook with random positions + for (int i = 0; i < num_cb; i++) + memcpy(codebook + i * dim, points + ((i*BIG_PRIME)%numpoints)*dim, + dim * sizeof(*codebook)); + return ret; +} From patchwork Fri Sep 17 02:07:58 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 30295 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6602:2a4a:0:0:0:0 with SMTP id k10csp1784404iov; Thu, 16 Sep 2021 19:08:51 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwcJTzn88a02rU6WrYCYH14fqoGhO/2H5qC1xFqNpx1qaPH4mUWFXJ57lcWnUkLAyIZtam5 X-Received: by 2002:a17:906:adb:: with SMTP id z27mr9929043ejf.235.1631844531814; Thu, 16 Sep 2021 19:08:51 -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 h25si5369250ejt.16.2021.09.16.19.08.51; Thu, 16 Sep 2021 19:08:51 -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=hGc68pE9; 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 0751068B10C; Fri, 17 Sep 2021 05:08:31 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-oln040092073103.outbound.protection.outlook.com [40.92.73.103]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8F92668B0EB for ; Fri, 17 Sep 2021 05:08:24 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=P7Ik+v8KY/w0tZ6YnvGKaEY9D8ZxhpWb8OaGZY+ecGqAibzV1/cEA+m8XtxzEwFi4l3ZDWZeqCBKJ1wmf97ER+aOxIyN1iX/gSMSN+/oC+DCl7tt0qGDO2JyrweuqFaSSnTLPu8E35So0GyewmPemA3vo4UrKtBfFTuO33D5a/H43rEhIwORKSjlWvuvWEDfe6GzmaS3+GJTRLfPd+oWWZE3F1WKLQa0bFfWQnWkTGBQe71fTofI07MAolryv99A8RrWPjR7wBIgv5klNn4Psw+hOf4P8yKbSFk5zNnEUb95kj30PGeyf6nCm0dkEndxPM64JzuQxMJTD/zAuZ8Xhg== 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; bh=+gL8FfE469+URJe6mm9LQlwwmzV6YoDpz9DqWQD5YfE=; b=GT0w6WAoZ9KofVJNpUv+p+0rL/YiJBqr5pfOhEjZPBYNyQnav6fJuvAqFKpOzufN08JTlLRZcykefnGgrDL+oj00eq6ThAbFzA0OK6cYTIETWGXxPSGRAs6+je0BAERaaxwAbF5UOcCFl2HgGUSVs4c08Tt/BmVb7rHYq5b6TIlJkGvU74jTLrkfao1QrBofqNb2Oedmu7VnWHpWp5odbbqqeCVkFoATgPekNAGgCJQaZYomlWQ12zpCigxw3EsoiCEd1jmbq6n51WTneqcZ4F3GojGwcIpRCUE9YDiUUkPIRUjYIV6EqrHJ7zVnEr/1fPF4kccJMwB7bV/eBumCiA== 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=+gL8FfE469+URJe6mm9LQlwwmzV6YoDpz9DqWQD5YfE=; b=hGc68pE9ZUrIK3+gxOogdNNHKs0oDPXggrnU0h3XLHBY3ELM9RlWED4BTT5LAMINUUBrGWqYp2h46FEpgQQDrsC3Iq669AZjvvgaC30mTstI+jUC1yGXq/19+SiQWzbHZg6EEZOVqhPkHOzcNuZmWXup7X1oVnrgjItofI0nEZsL2DGLZ1IcWvcTY7BJeZjQMjA5n2PVcNgIAM44VfOnlJ+vNLlCfAOe9mUPA54LjvY7P2zvzL6TxyDBOkwwTnmUvbOKAN9kbkg5+a2PsRWJ1jX54Sm4IZ/rnw7oxDbTKerq9/Ys6fnC5yLec67/mnnjCOj8Er4zwYq576vfgFzY0g== Received: from AM7PR03MB6660.eurprd03.prod.outlook.com (10.141.218.86) by AS8PR03MB6758.eurprd03.prod.outlook.com (20.182.229.147) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4523.14; Fri, 17 Sep 2021 02:08:18 +0000 Received: from AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::787b:2156:ca99:fe00]) by AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::787b:2156:ca99:fe00%3]) with mapi id 15.20.4523.016; Fri, 17 Sep 2021 02:08:18 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Fri, 17 Sep 2021 04:07:58 +0200 Message-ID: X-Mailer: git-send-email 2.30.2 In-Reply-To: References: X-TMN: [nSdxn3egzY4rraiHeZCCJfIusBn7LY5a] X-ClientProxiedBy: AM8P191CA0018.EURP191.PROD.OUTLOOK.COM (2603:10a6:20b:21a::23) To AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) X-Microsoft-Original-Message-ID: <20210917020808.275498-2-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from sblaptop.fritz.box (188.192.142.38) by AM8P191CA0018.EURP191.PROD.OUTLOOK.COM (2603:10a6:20b:21a::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4523.14 via Frontend Transport; Fri, 17 Sep 2021 02:08:17 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 4f70e7e7-33ac-4e45-3770-08d9798003ed X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiQB5KKqMro6wr3957+0yV3Ui5vWDqr7lxQlKr1dhBiS/V7HhYkQOWWFtH84/ItyHrCFEX0A5CRIUrzR5DxCebhJYkipS8yUsjGtf4iNiUNDKp1VsypHm998QDONjvWoZpVMEIyIpjkdMZYmcyPOPTy+wSwMOdSJZO2nlzb6KwB5QhjIZRjj8Zdyy4Ju1ctLrn8JBkUOBfUPMyH3LQsYRy5KBtEP0d9crs1lY8Fye2/N+pfKK6OWCyCB72Pgvc23OaEdTT2p6Zg9+8NXAAqtd35Lw9X0vRaFF4ih2fb+oHsuRPS4uVmm81a6RaQ6mTi3WPZtbjEYkaZw+RIwUNg0cOKkb/x62Xnkm2E0ksUGkqq3MSSNbFX49ke3toFl87p0S885+L9maVjbkMEpoW4MP2TbpPH+LYk8L9Bz+ct4R5aUpOCEJI1bR+0XT6FyoQEWDdUk7I+rDTg86XGt+Aqp0aER2oc+RTdnO1QiQxjPzXDihRYNHe695dIycgfGGB4mG7B+dxP9RJ31pRviwamDcQvrX/+1aOMyNxquCZNa9y6b7zXfLTV4eZVI/87aino49v2+OIwsgAMmX13iXta58+0E6IEsmxZhFwXuf+ZyK52fK8U5GmLWjO6jTt/BqeYytSFkFSDtqm54vwaL8DJO3Ah2S7p0or2HAie/D6ij1nCudy2O02Td/0usbmRw4Sn4lt0kgzbiKfeFQ7wEVlZ0iGFJq+88hFc4YGovRv77KcEh7u2YtVzNb9Wmfp+g2cDNQV8= X-MS-TrafficTypeDiagnostic: AS8PR03MB6758: X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 4+TEIAWvN3yetNH7vJWpoIKqtxbFAtJ7aU+I8CxqikxNMLCxDLr/ww34YPwK7TfIFDiIgapULgURf22irni24pzEyOC/s0O/zbRIroVFZZK5kPQfT1TqgAeylCVe7FoSDlILIuObXC4uKIcni8XxPKO8H12PAN3Drkl1qZcxyPfJHoyM4mU+wh/6p8KjKQhLwPS1Jm+78qRP+b57MEpIq3prRUUyE2n8auuyOMJOKTagcxQtU9B6H3xXAqnkOrHAqoR8MTHVdUYUFux2Elr1BF84XHGXdLxLGouCG7XRne+ES26EUuDTlyWQSxpxmJxYV7RgslyyCfzijZnew/avcS3BCrVP7hljqMMe8wKn2eocCeMskNWM2dIKJkV4q2xje2Td2GvxrJczw+0miw1KtLiA5CvkSf5hR2v9cWY2FXIe6KfstefC6xx+cz76zqpn X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 7RsZFmCspNJ4BsT+iE1yNdOrjo6EdhnRbzXZuQ6yBrYo1wHJvOi8yr1I0bGVvDSWQGZGpy2RcMwiUXbX59RxVEl00Y6npjVaOB8ease8RnQLnXTnb2J/xwtyA+f7pFYQmo9Tf1Z1KwEygH4RQg14Zg== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4f70e7e7-33ac-4e45-3770-08d9798003ed X-MS-Exchange-CrossTenant-AuthSource: AM7PR03MB6660.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Sep 2021 02:08:18.0389 (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: AS8PR03MB6758 Subject: [FFmpeg-devel] [PATCH 03/13] avcodec/elbg: Merge avpriv_init_elbg() into avpriv_do_elbg() 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: uha38k1ETLPP These functions are always called directly after another with the exact same arguments. This avoids exporting a symbol; it also avoids having to perform two calls for every caller. Signed-off-by: Andreas Rheinhardt --- libavcodec/a64multienc.c | 4 ---- libavcodec/cinepakenc.c | 1 - libavcodec/elbg.c | 29 +++++++++++++++++++++++++---- libavcodec/elbg.h | 12 ------------ libavcodec/msvideo1enc.c | 3 --- libavcodec/roqvideoenc.c | 4 ---- libavfilter/vf_elbg.c | 3 --- 7 files changed, 25 insertions(+), 31 deletions(-) diff --git a/libavcodec/a64multienc.c b/libavcodec/a64multienc.c index e2dd85b756..9ee0b07463 100644 --- a/libavcodec/a64multienc.c +++ b/libavcodec/a64multienc.c @@ -333,10 +333,6 @@ static int a64multi_encode_frame(AVCodecContext *avctx, AVPacket *pkt, buf = pkt->data; /* calc optimal new charset + charmaps */ - ret = avpriv_init_elbg(meta, 32, 1000 * c->mc_lifetime, best_cb, - CHARSET_CHARS, 50, charmap, &c->randctx); - if (ret < 0) - return ret; ret = avpriv_do_elbg(meta, 32, 1000 * c->mc_lifetime, best_cb, CHARSET_CHARS, 50, charmap, &c->randctx); if (ret < 0) diff --git a/libavcodec/cinepakenc.c b/libavcodec/cinepakenc.c index 41da231dfb..8e8b73ce1d 100644 --- a/libavcodec/cinepakenc.c +++ b/libavcodec/cinepakenc.c @@ -761,7 +761,6 @@ static int quantize(CinepakEncContext *s, int h, uint8_t *data[4], if (i < size) size = i; - avpriv_init_elbg(s->codebook_input, entry_size, i, codebook, size, 1, s->codebook_closest, &s->randctx); avpriv_do_elbg(s->codebook_input, entry_size, i, codebook, size, 1, s->codebook_closest, &s->randctx); // set up vq_data, which contains a single MB diff --git a/libavcodec/elbg.c b/libavcodec/elbg.c index 3ca67b400c..b563254bbc 100644 --- a/libavcodec/elbg.c +++ b/libavcodec/elbg.c @@ -332,7 +332,7 @@ static void do_shiftings(elbg_data *elbg) } } -int avpriv_do_elbg(int *points, int dim, int numpoints, int *codebook, +static int do_elbg(int *points, int dim, int numpoints, int *codebook, int numCB, int max_steps, int *closest_cb, AVLFG *rand_state) { @@ -426,7 +426,14 @@ out: #define BIG_PRIME 433494437LL -int avpriv_init_elbg(int *points, int dim, int numpoints, int *codebook, +/** + * Initialize the codebook vector for the elbg algorithm. + * If numpoints < 8*numCB this function fills codebook with random numbers. + * If not, it calls do_elbg for a (smaller) random sample of the points in + * points. + * @return < 0 in case of error, 0 otherwise + */ +static int init_elbg(int *points, int dim, int numpoints, int *codebook, int num_cb, int max_steps, int *closest_cb, AVLFG *rand_state) { @@ -443,13 +450,13 @@ int avpriv_init_elbg(int *points, int dim, int numpoints, int *codebook, memcpy(temp_points + i*dim, points + k*dim, dim * sizeof(*temp_points)); } - ret = avpriv_init_elbg(temp_points, dim, numpoints / 8, codebook, + ret = init_elbg(temp_points, dim, numpoints / 8, codebook, num_cb, 2 * max_steps, closest_cb, rand_state); if (ret < 0) { av_freep(&temp_points); return ret; } - ret = avpriv_do_elbg(temp_points, dim, numpoints / 8, codebook, + ret = do_elbg (temp_points, dim, numpoints / 8, codebook, num_cb, 2 * max_steps, closest_cb, rand_state); av_free(temp_points); } else // If not, initialize the codebook with random positions @@ -458,3 +465,17 @@ int avpriv_init_elbg(int *points, int dim, int numpoints, int *codebook, dim * sizeof(*codebook)); return ret; } + +int avpriv_do_elbg(int *points, int dim, int numpoints, + int *codebook, int num_cb, int max_steps, + int *closest_cb, AVLFG *rand_state) +{ + int ret; + + ret = init_elbg(points, dim, numpoints, codebook, + num_cb, max_steps, closest_cb, rand_state); + if (ret < 0) + return ret; + return do_elbg (points, dim, numpoints, codebook, + num_cb, max_steps, closest_cb, rand_state); +} diff --git a/libavcodec/elbg.h b/libavcodec/elbg.h index f48aa3b443..3b9c2931f3 100644 --- a/libavcodec/elbg.h +++ b/libavcodec/elbg.h @@ -42,16 +42,4 @@ int avpriv_do_elbg(int *points, int dim, int numpoints, int *codebook, int numCB, int num_steps, int *closest_cb, AVLFG *rand_state); -/** - * Initialize the **codebook vector for the elbg algorithm. If you have already - * a codebook and you want to refine it, you shouldn't call this function. - * If numpoints < 8*numCB this function fills **codebook with random numbers. - * If not, it calls avpriv_do_elbg for a (smaller) random sample of the points in - * **points. Get the same parameters as avpriv_do_elbg. - * @return < 0 in case of error, 0 otherwise - */ -int avpriv_init_elbg(int *points, int dim, int numpoints, int *codebook, - int numCB, int num_steps, int *closest_cb, - AVLFG *rand_state); - #endif /* AVCODEC_ELBG_H */ diff --git a/libavcodec/msvideo1enc.c b/libavcodec/msvideo1enc.c index df621a6f48..fa65a2fbc4 100644 --- a/libavcodec/msvideo1enc.c +++ b/libavcodec/msvideo1enc.c @@ -117,7 +117,6 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt, } // try to find optimal value to fill whole 4x4 block score = 0; - avpriv_init_elbg(c->block, 3, 16, c->avg, 1, 1, c->output, &c->rnd); avpriv_do_elbg (c->block, 3, 16, c->avg, 1, 1, c->output, &c->rnd); if(c->avg[0] == 1) // red component = 1 will be written as skip code c->avg[0] = 0; @@ -137,7 +136,6 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt, } // search for optimal filling of 2-color block score = 0; - avpriv_init_elbg(c->block, 3, 16, c->codebook, 2, 1, c->output, &c->rnd); avpriv_do_elbg (c->block, 3, 16, c->codebook, 2, 1, c->output, &c->rnd); // last output value should be always 1, swap codebooks if needed if(!c->output[15]){ @@ -163,7 +161,6 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt, // search for optimal filling of 2-color 2x2 subblocks score = 0; for(i = 0; i < 4; i++){ - avpriv_init_elbg(c->block2 + i*4*3, 3, 4, c->codebook2 + i*2*3, 2, 1, c->output2 + i*4, &c->rnd); avpriv_do_elbg (c->block2 + i*4*3, 3, 4, c->codebook2 + i*2*3, 2, 1, c->output2 + i*4, &c->rnd); } // last value should be always 1, swap codebooks if needed diff --git a/libavcodec/roqvideoenc.c b/libavcodec/roqvideoenc.c index f8e363ada7..167e6bc806 100644 --- a/libavcodec/roqvideoenc.c +++ b/libavcodec/roqvideoenc.c @@ -824,10 +824,6 @@ static int generate_codebook(RoqEncContext *enc, int *codebook = enc->tmp_codebook_buf; int *closest_cb = enc->closest_cb; - ret = avpriv_init_elbg(points, 6 * c_size, inputCount, codebook, - cbsize, 1, closest_cb, &enc->randctx); - if (ret < 0) - return ret; ret = avpriv_do_elbg(points, 6 * c_size, inputCount, codebook, cbsize, 1, closest_cb, &enc->randctx); if (ret < 0) diff --git a/libavfilter/vf_elbg.c b/libavfilter/vf_elbg.c index 8f97465f12..bf78030ffe 100644 --- a/libavfilter/vf_elbg.c +++ b/libavfilter/vf_elbg.c @@ -163,9 +163,6 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *frame) } /* compute the codebook */ - avpriv_init_elbg(elbg->codeword, NB_COMPONENTS, elbg->codeword_length, - elbg->codebook, elbg->codebook_length, elbg->max_steps_nb, - elbg->codeword_closest_codebook_idxs, &elbg->lfg); avpriv_do_elbg(elbg->codeword, NB_COMPONENTS, elbg->codeword_length, elbg->codebook, elbg->codebook_length, elbg->max_steps_nb, elbg->codeword_closest_codebook_idxs, &elbg->lfg); From patchwork Fri Sep 17 02:07:59 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 30297 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6602:2a4a:0:0:0:0 with SMTP id k10csp1784643iov; Thu, 16 Sep 2021 19:09:15 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw6sDliYFz9HTP0/Pi3k7F+lko8jMfofDNDzGWHzeikWOypjzZbZgloz44exbNVVG5oHeaT X-Received: by 2002:a05:6402:1c95:: with SMTP id cy21mr9843310edb.397.1631844554982; Thu, 16 Sep 2021 19:09:14 -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 r6si5638407edq.273.2021.09.16.19.09.14; Thu, 16 Sep 2021 19:09:14 -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=aYSThSQI; 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 0277868B117; Fri, 17 Sep 2021 05:08:36 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-oln040092073103.outbound.protection.outlook.com [40.92.73.103]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B5F7168B112 for ; Fri, 17 Sep 2021 05:08:29 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=X9H8OGfX+1A+Ms4orNg6IhfHVjOzWYIYzp7yXA1MFC1vDGbaDy+bfcPdObnhSssQuJYf3FfrRkZw7SmPjXy6uzCw9krcr9fmV6rkmpRx9zQiWd1r4A+VqMb8uenW4btdGThEr9Tk552nRGcMUGOU7/COHsyAzWLRBPqtZOXpLR8tRyhbi7V9Wxm1JAtKdefr3dJhDQ0twv39eJq7vySzKLTSOHSmO6UV4O9r04pt6EfVs2ibb4mfjXVUOzXoW+ZhOwE6P4qlUpHolWcO3om80K1L3R07epDBa9N+kYVNf2Xe6wiYT4icSPv/JVNV4FtTGoRWxl5GnQvlEcYoyvXePg== 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; bh=VcoVvmIShEuVoJRzGzTkHk2RU/iPNGOouQgLMfa/oSY=; b=dBJJBbNSh8WAuhRTgnDGzKuFFA/TJY42HUG38KHsPKYXnKWEWwZB+kfkjd0DwHyo4nz3/E55+sKJQaV2b6auJhKU8JYizFqzhY0gtMatF9xf0hvvJFD8vgbTjtncTMRu8w/1lH6+wsbrHwb2+lCBLRUJu0v1tIpA5WUskkKMuEAlxfZWeb2WYooB0KWqq1aR3ON6pgPwxlg/94y76dzwjj/tge+9j/SaFfqy2E8usKbf6LbKwyVSyV6pXVmlYkcr0si8CDbY6iBMWIzr7Jgle70j+IjHpRoaKGJvEY/h4brxUoR4pGSGfvyrqlJ7fp8SeBBhVqPKyVkhOksagvl9xw== 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=VcoVvmIShEuVoJRzGzTkHk2RU/iPNGOouQgLMfa/oSY=; b=aYSThSQIV+yX0Nd6tpBAEwAM8OoecAAJVm6Ar1MH14aQhIB58nGkO8Q3cjCttCgpXKtMLwv6s49gZmEb/QebnfEQxeXcY/Fr9Nh7c8UDK2wKAdRxIaRj93f8hxU7ET5zxUMps6ksq+gQRWaG2gdCk6QqivD8D3TnIo7TQuGlbfdo08nXZQRuE6/eJmeRQPiZ9zaa02rSE4SBPeoDoC4VbtjdwUrhAZH+0eTnaJakQh3Wr5A0wW3PYbfsJEuueTmmn7b+DykeDcKEgkn+YskKmZR+9k8Ax5SflVDmLHe84fT9Zoou9kh9x1WMPXPWPnZN4BcBZZTZT6X1yog1plDlww== Received: from AM7PR03MB6660.eurprd03.prod.outlook.com (10.141.218.86) by AS8PR03MB6758.eurprd03.prod.outlook.com (20.182.229.147) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4523.14; Fri, 17 Sep 2021 02:08:19 +0000 Received: from AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::787b:2156:ca99:fe00]) by AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::787b:2156:ca99:fe00%3]) with mapi id 15.20.4523.016; Fri, 17 Sep 2021 02:08:19 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Fri, 17 Sep 2021 04:07:59 +0200 Message-ID: X-Mailer: git-send-email 2.30.2 In-Reply-To: References: X-TMN: [+mdG3uMOlgl9liyVw05vp1duoh2cN9KV] X-ClientProxiedBy: AM8P191CA0018.EURP191.PROD.OUTLOOK.COM (2603:10a6:20b:21a::23) To AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) X-Microsoft-Original-Message-ID: <20210917020808.275498-3-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from sblaptop.fritz.box (188.192.142.38) by AM8P191CA0018.EURP191.PROD.OUTLOOK.COM (2603:10a6:20b:21a::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4523.14 via Frontend Transport; Fri, 17 Sep 2021 02:08:19 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f7a924d8-6daf-4dce-83ce-08d9798004e1 X-MS-Exchange-SLBlob-MailProps: +LiGfBxqLEv5Hy0oNvS+VrPA90rn0AJxvYe0+rOzNQFnirmGK7jxxcnGzhjrILmX8lSSzZzL3R/U6BRuotUlZ3bgs/XID7KcZ7bQwPnpBGq8v7XOqqyOR9OJY8HIUG8QV5C72IAO4gNY6DX24878XxL9SDR/MiHOZsDk89fC2UlApiCkcZGzh3dUhuG9j9D/BEUDYdtfKeiknHNWssjpNWziSihoua2+y3tfPYraOh6Ee0fYvA24TtzprlQaTDoMF6HF41bp2oyMJVU8WKJhs7iDBw22+/A8wJV+ut6GbX4WTj7jnlqFip3cpxfOK71X9/9iHNs5Bca9dwwc3znC7SU5tleUB1SAGh9+h/938s9pR5raJgkqv25oAeUJ4j/oZ01+kaKqV624ygwjLspXLhd0+AiJ2RYyjoCPnNibBwm298v/GHghtHx/M35EPJooJBCL35XZg5u5GECumIOQMbTEjffoRFliKHNBnb2GlWfa/d4E3cAHiH+fw7YqQQy/oyOv64d44+mLY+K2CkUormp3TJTVKwr+jyaqcUiljoyc8a4/Ct7I71SEYQCRzqvAMeVg/nctaiOQw5GDtktxokxOcf4PS7FKR1iOQxo0oZEbrprnHO5fVobSUILnUXFR7FqlzJJfSSoq9bvMotX10PFERDCVycpM5k4RUvi8mTd8zLUGgKxHPJcQmtDcs5Wat5HDjWWIrgRzvJGs5q4PxQ7QyOzUcSh/LuxB7whjgDgz2iZdmZDiCu/64PpFTfkadV1z1yTuipLtby8RQSuUqJPsmMda/tEw X-MS-TrafficTypeDiagnostic: AS8PR03MB6758: X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: KL3v+nqUMtbWGe2CQqcahkV77GTYe3COsbgONDuZcrH5aHHnG//5hYQ0ksze5exh3qKqowRaxxm/3Ce/wnfV1795DK0jvGAufVfqTAr7/ZNmPCjM8d5vnQKnKtD+xduzKvUjIDO19H8ugXEs/pvPgpc3cbCF4Iv/EIkNz/GTsjkQzV7vaAG82wirYmfF1JH+01rniFABUb7W6xX3D0PWGSlLrX+rra2Y/SkHZEiIUomhF/cZRL1ROMLroAWu6kih59i0yqzOrhEhCl4CLrCSysdLymDwwO05ehRHtlE1LcOgmCoGJ1fqDjXxQyVQ4espM4aOHDwF4t02JMOK6t7n7z90W9fW6uT3OX0GSK0mVxm0Ylf/3tGRNeT6CWdpLSLe2MMmdgiku8uPh0vIleJFgndpoKeTELQTj7VTDfbJZjh67Zgh/BnAgrUKsetNrByo X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: UgDf7FgYxBhjC8fWa+w56Qd54sS+xApdh5wmbCQOph5Wr9iPxb9e/Y4+Cy3O80R8EpyK4/XtwTkNxX+aNzxpw+BGmq7NjXZV1VvL5R4MgQlV13sw1w2oHfTWqSEJ6VkCUxAXzMgieERFPdd9CdcG/g== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: f7a924d8-6daf-4dce-83ce-08d9798004e1 X-MS-Exchange-CrossTenant-AuthSource: AM7PR03MB6660.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Sep 2021 02:08:19.6210 (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: AS8PR03MB6758 Subject: [FFmpeg-devel] [PATCH 04/13] avfilter/vf_elbg: Rename ELBGContext->ELBGFilterContext 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: 951vw51hBK8g The former name will be used for a context for avpriv_do_elbg(). Signed-off-by: Andreas Rheinhardt --- libavfilter/vf_elbg.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/libavfilter/vf_elbg.c b/libavfilter/vf_elbg.c index bf78030ffe..79797ee25f 100644 --- a/libavfilter/vf_elbg.c +++ b/libavfilter/vf_elbg.c @@ -33,7 +33,7 @@ #include "internal.h" #include "video.h" -typedef struct ELBGContext { +typedef struct ELBGFilterContext { const AVClass *class; AVLFG lfg; int64_t lfg_seed; @@ -46,9 +46,9 @@ typedef struct ELBGContext { const AVPixFmtDescriptor *pix_desc; uint8_t rgba_map[4]; int pal8; -} ELBGContext; +} ELBGFilterContext; -#define OFFSET(x) offsetof(ELBGContext, x) +#define OFFSET(x) offsetof(ELBGFilterContext, x) #define FLAGS AV_OPT_FLAG_VIDEO_PARAM|AV_OPT_FLAG_FILTERING_PARAM static const AVOption elbg_options[] = { @@ -66,7 +66,7 @@ AVFILTER_DEFINE_CLASS(elbg); static av_cold int init(AVFilterContext *ctx) { - ELBGContext *elbg = ctx->priv; + ELBGFilterContext *const elbg = ctx->priv; if (elbg->pal8 && elbg->codebook_length > 256) { av_log(ctx, AV_LOG_ERROR, "pal8 output allows max 256 codebook length.\n"); @@ -82,7 +82,7 @@ static av_cold int init(AVFilterContext *ctx) static int query_formats(AVFilterContext *ctx) { - ELBGContext *elbg = ctx->priv; + ELBGFilterContext *const elbg = ctx->priv; int ret; static const enum AVPixelFormat pix_fmts[] = { @@ -109,7 +109,7 @@ static int query_formats(AVFilterContext *ctx) static int config_input(AVFilterLink *inlink) { AVFilterContext *ctx = inlink->dst; - ELBGContext *elbg = ctx->priv; + ELBGFilterContext *const elbg = ctx->priv; elbg->pix_desc = av_pix_fmt_desc_get(inlink->format); elbg->codeword_length = inlink->w * inlink->h; @@ -140,7 +140,7 @@ static int config_input(AVFilterLink *inlink) static int filter_frame(AVFilterLink *inlink, AVFrame *frame) { - ELBGContext *elbg = inlink->dst->priv; + ELBGFilterContext *const elbg = inlink->dst->priv; int i, j, k; uint8_t *p, *p0; @@ -221,7 +221,7 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *frame) static av_cold void uninit(AVFilterContext *ctx) { - ELBGContext *elbg = ctx->priv; + ELBGFilterContext *const elbg = ctx->priv; av_freep(&elbg->codebook); av_freep(&elbg->codeword); @@ -248,7 +248,7 @@ static const AVFilterPad elbg_outputs[] = { const AVFilter ff_vf_elbg = { .name = "elbg", .description = NULL_IF_CONFIG_SMALL("Apply posterize effect, using the ELBG algorithm."), - .priv_size = sizeof(ELBGContext), + .priv_size = sizeof(ELBGFilterContext), .priv_class = &elbg_class, .query_formats = query_formats, .init = init, From patchwork Fri Sep 17 02:08:00 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 30294 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6602:2a4a:0:0:0:0 with SMTP id k10csp1784317iov; Thu, 16 Sep 2021 19:08:39 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwJ+q2/KlIrPM2SWPAg4T34Nu5pzaiD7blgmhkb6il1s7fdtffzelejYcA4f7XECOmx2k6X X-Received: by 2002:a17:906:2ed1:: with SMTP id s17mr9874805eji.261.1631844519675; Thu, 16 Sep 2021 19:08:39 -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 q24si578892edi.86.2021.09.16.19.08.39; Thu, 16 Sep 2021 19:08:39 -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=C5Vqypw2; 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 081D868B0FB; Fri, 17 Sep 2021 05:08:30 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-oln040092075092.outbound.protection.outlook.com [40.92.75.92]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2A4FF68B0EA for ; Fri, 17 Sep 2021 05:08:23 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=itYJ9+d/6m1i9wm5HTn97Qnz0BDqN2f3qxHQ/FmR4uBKb9zH5BLfvSuq5rYXMHc+gH4xk3Scrxdlzylymf+7XYtETHSle3Hz3r0o8HLFQM+Nf/yFes1D8Rth+LQ8fhbf0EMeHT6o1SxZu7UdPwwwyBWbB3kJBUwBBdydPvBZUw5VW2bzqC+YSpj6myUkX6eXReEHFqsW2c31+jeljn+yY/ZXqToG6Xmmu8Nyk2bozGyW/O0mbRBCSxRKrhHN02W6Qw/XV+Xk5+vWYOdOAhYF3+mOwufoNJNPNeGer8nsHdkSWLCpqSmf0UbbdouzuyeiXgChjZkKG9Hxbq0krO93Bw== 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; bh=UJaFR5Mjk85PWBvOPGlW5MJbrCU9xewZqqJVr3MMU9k=; b=dcP8QyegP/zfm7UtsKGdfiCQgK5d1I0KzzaQQIEKOV9k0Xwlj8AGl7DSnjKT4zJSRTFOOn0waFVHL/j2rEHUws5VA26AtprP5rFf18kpyvq+4LW3g535eO8ll/f65YomkLTksgXgOqg/ynXgZKxa6xynrxD7MCV+i+9++9RKDZQmQXTHPkUem1JjP8OKiIizcQo+zW7+15OwXiIWeWwTtpUR/0hbuC6GI1LOO2vXpeu3cwvl+kufI9pszpWkw9s79M7w+4R4DK8pJsU6CtpsklBWljXqJ/dH5qkQrQEEwL4HssvkmI+59MtiKBAv3fZznBT6gI8CK20698az7bmCeQ== 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=UJaFR5Mjk85PWBvOPGlW5MJbrCU9xewZqqJVr3MMU9k=; b=C5Vqypw2z5frbz3McRpnMGVrKAKbJnXDQ/Z0vwqcZEL433nInBjy/pcuu7PsPInoZkxbF6PCrGGWefO0bvti21c8mT2ZUT1AQabfeLOkyCqogOPtrlEqR7qmtv/qQTSvRTP1/4MQcEnLFjFHHfuBFx7lOs4EG3Q0RS+xZPJql8CcJ0ePx31C+kXt1ZTGiQ28xWHJg1HgqvNmV6w6v3SRTJgEOM625FnfWVkSQ+Gi4bQgjp2UDfP0u4vsZma1oUyHqt/WWYnzmOZAKUM1OHntrAUTEEaqF96cf0NboeRjWa6si5AoKajrrJ2DM1eXo7+qGQPhLPKqdLndj+GUjfjUoQ== Received: from AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) by AM6PR03MB5297.eurprd03.prod.outlook.com (2603:10a6:20b:c5::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4523.16; Fri, 17 Sep 2021 02:08:21 +0000 Received: from AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::787b:2156:ca99:fe00]) by AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::787b:2156:ca99:fe00%3]) with mapi id 15.20.4523.016; Fri, 17 Sep 2021 02:08:21 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Fri, 17 Sep 2021 04:08:00 +0200 Message-ID: X-Mailer: git-send-email 2.30.2 In-Reply-To: References: X-TMN: [AsI/uRDMAv7cvmOy0FmsegckODQ15dYD] X-ClientProxiedBy: AM8P191CA0018.EURP191.PROD.OUTLOOK.COM (2603:10a6:20b:21a::23) To AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) X-Microsoft-Original-Message-ID: <20210917020808.275498-4-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from sblaptop.fritz.box (188.192.142.38) by AM8P191CA0018.EURP191.PROD.OUTLOOK.COM (2603:10a6:20b:21a::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4523.14 via Frontend Transport; Fri, 17 Sep 2021 02:08:21 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ce84a1da-c756-4021-1528-08d97980062e X-MS-Exchange-SLBlob-MailProps: gjx25WM8ZNWDyOY6I9mBNa2F8wdSMbXW/Ich1FXHTnspS8kvEEVz+Xg9yOSus9w5d2L2u7uPQjLzMG64ASkbTsvxUmUYFWi4XsTPLYwRF22CnThuXFjG9MAyokJ0jHN9Ppjjkqo+2PZpx1nMGGcMmKs5viWA1Lj9ICxsyt1R1WpuZJ7Zw/Z2CvAFbFQeM1IvkWeuEVgZ6t30IIr/V+2gQYMfse0EnxDlCP6Hu/tU2/wANa1fbfe4vdbFCz9CuebBpCRIRTHruj0RD5yh02qVsNSFy9bkx9YXBx+m1rJIbX/u5oNicvtAlv2R2jnat4YNiqZzAXWWQ482qLdZiEHdBfOfMpa7AuqhGohALdICymC7drSBy494u3Ib7zRahePzY3Sw9/2D4SOb8lXwcEW4syvD0+4VfvL5ZuRONqdGjWIugKFPyaURlBZ1K5KT+dCWiVfGflliXxcqWVPReQOmqyec5FJ93EO9IolprOUSchwEG2nw7pw800hFXPzSPuDsWd8odqHHhAo3OQ4H/BNh+e+Ynz647OYNLZda3rLCYHXqlhRDdABfO0FdLBjf9bfX54CzF5YNpITje/sJtpNxVvqo63PXhcmU5AA6CVsNCj1BNA78mN9lf68dKJ+gJ6BCFbtvgUTvICcfXPc1JlJeH/v7dPpgL+2SjVmi57vhuJZjN29qzNJToRhQwl484KaiEPh5YXflHB9mXpjCHjLoRI1kZmLAPpsMLvCnYTY5e7k= X-MS-TrafficTypeDiagnostic: AM6PR03MB5297: X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: gr+AaVhiqdp6ly0vW33iddpohFWbACHIRPyiFIUpezDk1X8n/VFwr7QYeoGJY30amj9DYFNAI392uYO211LDLjtC14PAqm+iwg+wkE559QP8AnfOztd/H2/xkdZVVchla8V+p8peIqCaPZKWfaSkGHFH4N7YiHAP2idvSTxroWF6DZo5mIk7wEoDBvxyd7fG0KWScdeTRw0uyXnFLN3UXHgMPEJjm4nhkEoMd0IP9nBDB4T3xbiY1+OkSmMNeIdPvUoLTyzX5pSae5UoPR4ub1JCkoJWYIMZAOCbHIN0P3SgLpH+7doi6MOBEP01W6qfohWpI1f+fNnrl17LpdYx54b4jMAThXsLeFgXnPBOcQRmQDCJIsA0RYVwFWkScu48VjXodWDf13stdt/JlhUMckfey6gRUTkkvGiHtxxHMG3xO2UjbaH7JMLjKWW/uB3j X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: tvAezcwxG9hFaB48hfENdYCs3aBDJZYxeWnR/ySp38f+vANB4QNgo2p0WxPhRcVnB9oVbVRHJCV4WWFGfcE6WtxdqnF/sNfKU1uD8jEl9N+/ukZqCrW7L536HTQ78rkVtK1onaSK2w+LTvkO9MuH8g== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ce84a1da-c756-4021-1528-08d97980062e X-MS-Exchange-CrossTenant-AuthSource: AM7PR03MB6660.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Sep 2021 02:08:21.8145 (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: AM6PR03MB5297 Subject: [FFmpeg-devel] [PATCH 05/13] avcodec/elbg: Rename elbg_data to ELBGContext 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: VVIH1jwhFO+h It is in line with our naming conventions for types. Also change numCB to num_cb for the same reason. Signed-off-by: Andreas Rheinhardt --- libavcodec/elbg.c | 84 +++++++++++++++++++++++------------------------ libavcodec/elbg.h | 4 +-- 2 files changed, 44 insertions(+), 44 deletions(-) diff --git a/libavcodec/elbg.c b/libavcodec/elbg.c index b563254bbc..ac5c53161d 100644 --- a/libavcodec/elbg.c +++ b/libavcodec/elbg.c @@ -43,10 +43,10 @@ typedef struct cell_s { /** * ELBG internal data */ -typedef struct elbg_data { +typedef struct ELBGContext { int64_t error; int dim; - int numCB; + int num_cb; int *codebook; cell **cells; int64_t *utility; @@ -55,7 +55,7 @@ typedef struct elbg_data { int *points; AVLFG *rand_state; int *scratchbuf; -} elbg_data; +} ELBGContext; static inline int distance_limited(int *a, int *b, int dim, int limit) { @@ -80,7 +80,7 @@ static inline void vect_division(int *res, int *vect, int div, int dim) } -static int eval_error_cell(elbg_data *elbg, int *centroid, cell *cells) +static int eval_error_cell(ELBGContext *elbg, int *centroid, cell *cells) { int error=0; for (; cells; cells=cells->next) @@ -89,11 +89,12 @@ static int eval_error_cell(elbg_data *elbg, int *centroid, cell *cells) return error; } -static int get_closest_codebook(elbg_data *elbg, int index) +static int get_closest_codebook(ELBGContext *elbg, int index) { - int i, pick=0, diff, diff_min = INT_MAX; - for (i=0; inumCB; i++) + int pick = 0; + for (int i = 0, diff_min = INT_MAX; i < elbg->num_cb; i++) if (i != index) { + int diff; diff = distance_limited(elbg->codebook + i*elbg->dim, elbg->codebook + index*elbg->dim, elbg->dim, diff_min); if (diff < diff_min) { pick = i; @@ -103,17 +104,17 @@ static int get_closest_codebook(elbg_data *elbg, int index) return pick; } -static int get_high_utility_cell(elbg_data *elbg) +static int get_high_utility_cell(ELBGContext *elbg) { int i=0; /* Using linear search, do binary if it ever turns to be speed critical */ uint64_t r; - if (elbg->utility_inc[elbg->numCB-1] < INT_MAX) { - r = av_lfg_get(elbg->rand_state) % (unsigned int)elbg->utility_inc[elbg->numCB-1] + 1; + if (elbg->utility_inc[elbg->num_cb - 1] < INT_MAX) { + r = av_lfg_get(elbg->rand_state) % (unsigned int)elbg->utility_inc[elbg->num_cb - 1] + 1; } else { r = av_lfg_get(elbg->rand_state); - r = (av_lfg_get(elbg->rand_state) + (r<<32)) % elbg->utility_inc[elbg->numCB-1] + 1; + r = (av_lfg_get(elbg->rand_state) + (r<<32)) % elbg->utility_inc[elbg->num_cb - 1] + 1; } while (elbg->utility_inc[i] < r) { @@ -128,7 +129,7 @@ static int get_high_utility_cell(elbg_data *elbg) /** * Implementation of the simple LBG algorithm for just two codebooks */ -static int simple_lbg(elbg_data *elbg, +static int simple_lbg(ELBGContext *elbg, int dim, int *centroid[3], int newutility[3], @@ -169,7 +170,7 @@ static int simple_lbg(elbg_data *elbg, return newutility[0] + newutility[1]; } -static void get_new_centroids(elbg_data *elbg, int huc, int *newcentroid_i, +static void get_new_centroids(ELBGContext *elbg, int huc, int *newcentroid_i, int *newcentroid_p) { cell *tempcell; @@ -205,7 +206,7 @@ static void get_new_centroids(elbg_data *elbg, int huc, int *newcentroid_i, * @param indexes {luc, huc, cluc} * @param newcentroid A vector with the position of the new centroids */ -static void shift_codebook(elbg_data *elbg, int *indexes, +static void shift_codebook(ELBGContext *elbg, int *indexes, int *newcentroid[3]) { cell *tempdata; @@ -233,20 +234,19 @@ static void shift_codebook(elbg_data *elbg, int *indexes, } } -static void evaluate_utility_inc(elbg_data *elbg) +static void evaluate_utility_inc(ELBGContext *elbg) { - int i; int64_t inc=0; - for (i=0; i < elbg->numCB; i++) { - if (elbg->numCB*elbg->utility[i] > elbg->error) + for (int i = 0; i < elbg->num_cb; i++) { + if (elbg->num_cb * elbg->utility[i] > elbg->error) inc += elbg->utility[i]; elbg->utility_inc[i] = inc; } } -static void update_utility_and_n_cb(elbg_data *elbg, int idx, int newutility) +static void update_utility_and_n_cb(ELBGContext *elbg, int idx, int newutility) { cell *tempcell; @@ -262,7 +262,7 @@ static void update_utility_and_n_cb(elbg_data *elbg, int idx, int newutility) * @param elbg Internal elbg data * @param idx {luc (low utility cell, huc (high utility cell), cluc (closest cell to low utility cell)} */ -static void try_shift_candidate(elbg_data *elbg, int idx[3]) +static void try_shift_candidate(ELBGContext *elbg, int idx[3]) { int j, k, cont=0; int64_t olderror=0, newerror; @@ -313,15 +313,15 @@ static void try_shift_candidate(elbg_data *elbg, int idx[3]) /** * Implementation of the ELBG block */ -static void do_shiftings(elbg_data *elbg) +static void do_shiftings(ELBGContext *elbg) { int idx[3]; evaluate_utility_inc(elbg); - for (idx[0]=0; idx[0] < elbg->numCB; idx[0]++) - if (elbg->numCB*elbg->utility[idx[0]] < elbg->error) { - if (elbg->utility_inc[elbg->numCB-1] == 0) + for (idx[0]=0; idx[0] < elbg->num_cb; idx[0]++) + if (elbg->num_cb * elbg->utility[idx[0]] < elbg->error) { + if (elbg->utility_inc[elbg->num_cb - 1] == 0) return; idx[1] = get_high_utility_cell(elbg); @@ -333,14 +333,14 @@ static void do_shiftings(elbg_data *elbg) } static int do_elbg(int *points, int dim, int numpoints, int *codebook, - int numCB, int max_steps, int *closest_cb, + int num_cb, int max_steps, int *closest_cb, AVLFG *rand_state) { int dist; - elbg_data elbg_d; - elbg_data *elbg = &elbg_d; - int i, j, k, steps = 0, ret = 0; - int *size_part = av_malloc_array(numCB, sizeof(int)); + ELBGContext elbg_d; + ELBGContext *elbg = &elbg_d; + int i, j, steps = 0, ret = 0; + int *size_part = av_malloc_array(num_cb, sizeof(int)); cell *list_buffer = av_malloc_array(numpoints, sizeof(cell)); cell *free_cells; int best_dist, best_idx = 0; @@ -348,13 +348,13 @@ static int do_elbg(int *points, int dim, int numpoints, int *codebook, elbg->error = INT64_MAX; elbg->dim = dim; - elbg->numCB = numCB; + elbg->num_cb = num_cb; elbg->codebook = codebook; - elbg->cells = av_malloc_array(numCB, sizeof(cell *)); - elbg->utility = av_malloc_array(numCB, sizeof(*elbg->utility)); + elbg->cells = av_malloc_array(num_cb, sizeof(cell *)); + elbg->utility = av_malloc_array(num_cb, sizeof(*elbg->utility)); elbg->nearest_cb = closest_cb; elbg->points = points; - elbg->utility_inc = av_malloc_array(numCB, sizeof(*elbg->utility_inc)); + elbg->utility_inc = av_malloc_array(num_cb, sizeof(*elbg->utility_inc)); elbg->scratchbuf = av_malloc_array(5*dim, sizeof(int)); if (!size_part || !list_buffer || !elbg->cells || @@ -369,8 +369,8 @@ static int do_elbg(int *points, int dim, int numpoints, int *codebook, free_cells = list_buffer; last_error = elbg->error; steps++; - memset(elbg->utility, 0, numCB*sizeof(*elbg->utility)); - memset(elbg->cells, 0, numCB*sizeof(cell *)); + memset(elbg->utility, 0, num_cb * sizeof(*elbg->utility)); + memset(elbg->cells, 0, num_cb * sizeof(*elbg->cells)); elbg->error = 0; @@ -378,7 +378,7 @@ static int do_elbg(int *points, int dim, int numpoints, int *codebook, costly part of the algorithm. */ for (i=0; i < numpoints; i++) { best_dist = distance_limited(elbg->points + i*elbg->dim, elbg->codebook + best_idx*elbg->dim, dim, INT_MAX); - for (k=0; k < elbg->numCB; k++) { + for (int k = 0; k < elbg->num_cb; k++) { dist = distance_limited(elbg->points + i*elbg->dim, elbg->codebook + k*elbg->dim, dim, best_dist); if (dist < best_dist) { best_dist = dist; @@ -396,9 +396,9 @@ static int do_elbg(int *points, int dim, int numpoints, int *codebook, do_shiftings(elbg); - memset(size_part, 0, numCB*sizeof(int)); + memset(size_part, 0, num_cb * sizeof(*size_part)); - memset(elbg->codebook, 0, elbg->numCB*dim*sizeof(int)); + memset(elbg->codebook, 0, elbg->num_cb * dim * sizeof(*elbg->codebook)); for (i=0; i < numpoints; i++) { size_part[elbg->nearest_cb[i]]++; @@ -407,7 +407,7 @@ static int do_elbg(int *points, int dim, int numpoints, int *codebook, elbg->points[i*elbg->dim + j]; } - for (i=0; i < elbg->numCB; i++) + for (int i = 0; i < elbg->num_cb; i++) vect_division(elbg->codebook + i*elbg->dim, elbg->codebook + i*elbg->dim, size_part[i], elbg->dim); @@ -428,7 +428,7 @@ out: /** * Initialize the codebook vector for the elbg algorithm. - * If numpoints < 8*numCB this function fills codebook with random numbers. + * If numpoints <= 24 * num_cb this function fills codebook with random numbers. * If not, it calls do_elbg for a (smaller) random sample of the points in * points. * @return < 0 in case of error, 0 otherwise @@ -451,13 +451,13 @@ static int init_elbg(int *points, int dim, int numpoints, int *codebook, } ret = init_elbg(temp_points, dim, numpoints / 8, codebook, - num_cb, 2 * max_steps, closest_cb, rand_state); + num_cb, 2 * max_steps, closest_cb, rand_state); if (ret < 0) { av_freep(&temp_points); return ret; } ret = do_elbg (temp_points, dim, numpoints / 8, codebook, - num_cb, 2 * max_steps, closest_cb, rand_state); + num_cb, 2 * max_steps, closest_cb, rand_state); av_free(temp_points); } else // If not, initialize the codebook with random positions for (int i = 0; i < num_cb; i++) diff --git a/libavcodec/elbg.h b/libavcodec/elbg.h index 3b9c2931f3..a9a19aa5e4 100644 --- a/libavcodec/elbg.h +++ b/libavcodec/elbg.h @@ -32,14 +32,14 @@ * @param dim Dimension of the points. * @param numpoints Num of points in **points. * @param codebook Pointer to the output codebook. Must be allocated. - * @param numCB Number of points in the codebook. + * @param num_cb Number of points in the codebook. * @param num_steps The maximum number of steps. One step is already a good compromise between time and quality. * @param closest_cb Return the closest codebook to each point. Must be allocated. * @param rand_state A random number generator state. Should be already initialized by av_lfg_init(). * @return < 0 in case of error, 0 otherwise */ int avpriv_do_elbg(int *points, int dim, int numpoints, int *codebook, - int numCB, int num_steps, int *closest_cb, + int num_cb, int num_steps, int *closest_cb, AVLFG *rand_state); #endif /* AVCODEC_ELBG_H */ From patchwork Fri Sep 17 02:08:01 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 30303 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6602:2a4a:0:0:0:0 with SMTP id k10csp1784536iov; Thu, 16 Sep 2021 19:09:03 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxtnlGZgkgHpjhbEyul5FaayqDoXwLA3YkofuBv4dXxlnbcrA6KYL/msuI4YJZEfMcPCtPg X-Received: by 2002:a17:907:995a:: with SMTP id kl26mr9691663ejc.6.1631844543118; Thu, 16 Sep 2021 19:09:03 -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 h4si69875ejo.291.2021.09.16.19.09.02; Thu, 16 Sep 2021 19:09:03 -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=IaKgoP9e; 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 0E3F968B104; Fri, 17 Sep 2021 05:08:35 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-oln040092075092.outbound.protection.outlook.com [40.92.75.92]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 49B3068B0FC for ; Fri, 17 Sep 2021 05:08:28 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PnFxGzmmUAXJ3POdrqbK6SIm9RHtslpSf+u9s/z8CYMfmE1y51+UL33EDQAH+OuaZJEsa3ncX1U6CcCQ4bO/sScd1xsGjKvGKZLpIuHgr7nfv/4DGclzwc8AuP0PvNBn3CjZYYkGZFhnHU0gcwPlRNcHpjgWlr4yiJFXI5dJgUJpuOW2Wq1xNrsC9tDnwQg6HzHAG09BVJAzVXsXbfVwqlz5gkB75/rKh4R85VcYLG0L5E36dVBBpFrP4sDopVudOC4U0TKuiIlLDV78rXS/xBjmQ5swcuJx/TXg4eTBmvTvoH6V/84ILxByT4Q+BuaXfTOJ/QLIeMmm9RT6zk967w== 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; bh=qB89A5jcHjScCHwjzAtd/3ZDmtxCyPlltLj5Rsxo5FU=; b=V/f9RZ3ZpWtv7W4vxo7Hc7d8XcxbgGqer/MccMmQcmbg7EisVrHR3w2w5RL1bHGtUYteV/sl8Ztd21CO8m2NAXZr2g00wgnDc7fzJ80tEVyi3gKOt8/+97ugcK/ndDoimSxtt9pDrRxDNvo812n1xZ1kq9rumhk6DZDd+62Zl4i1dWNSg07XDhA/gkecii40Yxy0fQOQ/Q8N1JRiKOLQwUqmi+s7zqgjQka70P28oi2w0dVOMCOZgrqbJP1s33zA4Bx0RkxEH7CXVajvRmMeFUxYWqabguQuXe5KalO+koiY7D06vb5hcV1PO8d3Q1r20zm1KcZ+bXFOVmxqY1WD+g== 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=qB89A5jcHjScCHwjzAtd/3ZDmtxCyPlltLj5Rsxo5FU=; b=IaKgoP9ekpClTCSbfnyrSQe2meqavzXbLCNTBg3YQd9IK8k0/ZzMrWh/cV35JhJqwhz9V4txxM45atY6uYwQR1AOTzlyq5AsrVgdcLqopBSm+z90/PFcqNubTflCcynPgXmVA+fZahYelZdTqzt0LUB1o+t6xRAZLu1T0Tr0qW+wT0AHmS2ykuhceR6hFq5OmJbJonrSNwrEmPpe1zJCB3YoF/siBfwY8GGYGdVKqHv71L5mY6rlWHlDBcf4Ap3npvrjN5sVdo/e5MlWvyNMRjivF2OrttAatPeH/gClij4UK7KzSFBRrz0nax5xQGVXTCGsgIIOXG8AntW/ND3WSQ== Received: from AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) by AM6PR03MB5297.eurprd03.prod.outlook.com (2603:10a6:20b:c5::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4523.16; Fri, 17 Sep 2021 02:08:23 +0000 Received: from AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::787b:2156:ca99:fe00]) by AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::787b:2156:ca99:fe00%3]) with mapi id 15.20.4523.016; Fri, 17 Sep 2021 02:08:23 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Fri, 17 Sep 2021 04:08:01 +0200 Message-ID: X-Mailer: git-send-email 2.30.2 In-Reply-To: References: X-TMN: [K/0CuXy1H9uxnfsVS4DqjYB58XFRAAoU] X-ClientProxiedBy: AM8P191CA0018.EURP191.PROD.OUTLOOK.COM (2603:10a6:20b:21a::23) To AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) X-Microsoft-Original-Message-ID: <20210917020808.275498-5-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from sblaptop.fritz.box (188.192.142.38) by AM8P191CA0018.EURP191.PROD.OUTLOOK.COM (2603:10a6:20b:21a::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4523.14 via Frontend Transport; Fri, 17 Sep 2021 02:08:22 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: b76c03e1-9712-49a5-e385-08d9798006e7 X-MS-Exchange-SLBlob-MailProps: +LiGfBxqLEv5Hy0oNvS+VrPA90rn0AJxKAxqBJZZVlSolG+hvtU2A5Etpzr7MPJC3bXaHfO74gmRIAPIvhbsivia9WWz1tVHaG5V5xFqv8qYjROalmH+jdo4+FRcNdLCkIZM2CpfVVAoQ4LPxcB1iyR8AmtJ1usfUADnhQjbmPd5fO3zilu2KfRebtTBON+UEyL2mTIdvHn8yb5xsscfc5/qLc6ZGcsKMQuEXcfIip/7UEX0ze18nWg3CMh3jiqUjgbsOfYDvzJWOgpTzbUAHdIoWApPVynmfbZ85T8A3wR4YORo4AqT9E08yjNdNhigEVVOSVyOFOQxolKmNDnWbOMAAE5ElwGZMdZJTde267jwMkn61KULJWwmULIbXwC9Q/DeFzOTVzG1hcCAE+rQKlwWQDSxt1sxY9fWq1/DVZa13+XV3VP0ZhU3C6SiBiK2iJyh1i7Pfilyapq1Qxp4yKdwBY6qJxjL8eN5ZoSAzQwMQ44y8wOnOuNLGcIS39beYpMnz/VWdth7vwsVsRuSoo0RG1mVUoS6ytzrKWDKqLauAdK1k5pMq8zfBh49jPhtBjel2kErUoKyzFf9HrOjEucG6xKuP54RyHUATy9gCDKbAcDSNVZYb6nyE/KGBcV+dXqRepvrY3ey7bLVCRuQ/SY0Q1sxHaYWCyF+rDM6Wa5sa2lKo4fXQc2zWVQfCeSErVMCkv8TtPzMRNhdk0al+XaPfVdnO5FP5RhvgQmxlS/OQUoK1ZQmX572elTuV+pnZTLFP5sfW50mrY24Na+H5WC+Mhu3Fmmt X-MS-TrafficTypeDiagnostic: AM6PR03MB5297: X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: bHis66cluk3WZE6LdqZxJk9RVKIXuFCbIwGKPp/lVvEfQ+zBNbMlJQ9XsqFUBymkFroJh2wJPr6FzWiqVAbPuZ122rnUeViZbcCa+7FSzEjdc8poky6PLGhOgnp2sKw3wFK8MHa/aNp77ky/EO2gzUkqFVMx48LSD+dMtvjj4Qle9lrKl/83Kv0TUMXlF3AFIsWHDuZ0W+c+yDkCWh/WZLnEXID+JVt36oJB4WWyAKPDjF9aIm3yf64RB8a7kw9w4jgQf/Tio/+tdP+C5d3aHNvQnPiJIw2gynPynn27sw/m9vQ0Yjx0cgvD2t1OZzR+MiCkj0IW4N4pN+EPbxzDPnWhCKUQEyi1lSfmOSko7P52RzoUPQCc24OiFoRNrVXbkEUaEDw51adCBKoGNwU0bb3rbWt9YAGBVEQONhgYD8sxKHKjfUBB6gE9WWy/DjAnC8kUJpkT63l68S+Ab4Jn2Lvxh5XbaXVEnIG4hsHgOBs= X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: t+7ta9/gKU5JuXlErq7SdHG3BoOiDsChFGTjL9dU5wingQjkTWstblmjmK7nLLcNoB/7rGdhwycFEymgZU66QC8nHwM/98FEc19anlU4MDzqfQ4aa+NRVYhK/eqRVpBcF72ltm08dk2ksVBw/bUvNQ== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: b76c03e1-9712-49a5-e385-08d9798006e7 X-MS-Exchange-CrossTenant-AuthSource: AM7PR03MB6660.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Sep 2021 02:08:23.0381 (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: AM6PR03MB5297 Subject: [FFmpeg-devel] [PATCH 06/13] avcodec/elbg: Add persistent ELBGContext 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: rUXNFyFn1tgz It will be used in future commits to avoid having to allocate and free all the buffers used. Signed-off-by: Andreas Rheinhardt --- libavcodec/a64multienc.c | 8 ++++++-- libavcodec/cinepakenc.c | 5 ++++- libavcodec/elbg.c | 12 +++++++++++- libavcodec/elbg.h | 16 +++++++++++++--- libavcodec/msvideo1enc.c | 12 +++++++++--- libavcodec/roqvideoenc.c | 7 +++++-- libavfilter/vf_elbg.c | 5 ++++- 7 files changed, 52 insertions(+), 13 deletions(-) diff --git a/libavcodec/a64multienc.c b/libavcodec/a64multienc.c index 9ee0b07463..71a620b4ff 100644 --- a/libavcodec/a64multienc.c +++ b/libavcodec/a64multienc.c @@ -43,6 +43,7 @@ typedef struct A64Context { /* variables for multicolor modes */ + struct ELBGContext *elbg; AVLFG randctx; int mc_lifetime; int mc_use_5col; @@ -195,6 +196,9 @@ static void render_charset(AVCodecContext *avctx, uint8_t *charset, static av_cold int a64multi_close_encoder(AVCodecContext *avctx) { A64Context *c = avctx->priv_data; + + avpriv_elbg_free(&c->elbg); + av_freep(&c->mc_meta_charset); av_freep(&c->mc_best_cb); av_freep(&c->mc_charmap); @@ -333,8 +337,8 @@ static int a64multi_encode_frame(AVCodecContext *avctx, AVPacket *pkt, buf = pkt->data; /* calc optimal new charset + charmaps */ - ret = avpriv_do_elbg(meta, 32, 1000 * c->mc_lifetime, best_cb, - CHARSET_CHARS, 50, charmap, &c->randctx); + ret = avpriv_elbg_do(&c->elbg, meta, 32, 1000 * c->mc_lifetime, + best_cb, CHARSET_CHARS, 50, charmap, &c->randctx); if (ret < 0) return ret; diff --git a/libavcodec/cinepakenc.c b/libavcodec/cinepakenc.c index 8e8b73ce1d..2984b93de3 100644 --- a/libavcodec/cinepakenc.c +++ b/libavcodec/cinepakenc.c @@ -127,6 +127,7 @@ typedef struct CinepakEncContext { int min_min_strips; int max_max_strips; int strip_number_delta_range; + struct ELBGContext *elbg; } CinepakEncContext; #define OFFSET(x) offsetof(CinepakEncContext, x) @@ -761,7 +762,8 @@ static int quantize(CinepakEncContext *s, int h, uint8_t *data[4], if (i < size) size = i; - avpriv_do_elbg(s->codebook_input, entry_size, i, codebook, size, 1, s->codebook_closest, &s->randctx); + avpriv_elbg_do(&s->elbg, s->codebook_input, entry_size, i, codebook, + size, 1, s->codebook_closest, &s->randctx); // set up vq_data, which contains a single MB vq_data[0] = vq_pict_buf; @@ -1161,6 +1163,7 @@ static av_cold int cinepak_encode_end(AVCodecContext *avctx) CinepakEncContext *s = avctx->priv_data; int x; + avpriv_elbg_free(&s->elbg); av_frame_free(&s->last_frame); av_frame_free(&s->best_frame); av_frame_free(&s->scratch_frame); diff --git a/libavcodec/elbg.c b/libavcodec/elbg.c index ac5c53161d..9eac802688 100644 --- a/libavcodec/elbg.c +++ b/libavcodec/elbg.c @@ -466,12 +466,17 @@ static int init_elbg(int *points, int dim, int numpoints, int *codebook, return ret; } -int avpriv_do_elbg(int *points, int dim, int numpoints, +int avpriv_elbg_do(ELBGContext **elbgp, int *points, int dim, int numpoints, int *codebook, int num_cb, int max_steps, int *closest_cb, AVLFG *rand_state) { + ELBGContext *const elbg = *elbgp ? *elbgp : av_mallocz(sizeof(*elbg)); int ret; + if (!elbg) + return AVERROR(ENOMEM); + *elbgp = elbg; + ret = init_elbg(points, dim, numpoints, codebook, num_cb, max_steps, closest_cb, rand_state); if (ret < 0) @@ -479,3 +484,8 @@ int avpriv_do_elbg(int *points, int dim, int numpoints, return do_elbg (points, dim, numpoints, codebook, num_cb, max_steps, closest_cb, rand_state); } + +av_cold void avpriv_elbg_free(ELBGContext **elbgp) +{ + av_freep(elbgp); +} diff --git a/libavcodec/elbg.h b/libavcodec/elbg.h index a9a19aa5e4..abeeb4ff44 100644 --- a/libavcodec/elbg.h +++ b/libavcodec/elbg.h @@ -23,11 +23,16 @@ #include "libavutil/lfg.h" +struct ELBGContext; + /** * Implementation of the Enhanced LBG Algorithm * Based on the paper "Neural Networks 14:1219-1237" that can be found in * http://citeseer.ist.psu.edu/patan01enhanced.html . * + * @param ctx A pointer to a pointer to an already allocated ELBGContext + * or a pointer to NULL. In the latter case, this function + * will allocate an ELBGContext and put a pointer to it in `*ctx`. * @param points Input points. * @param dim Dimension of the points. * @param numpoints Num of points in **points. @@ -38,8 +43,13 @@ * @param rand_state A random number generator state. Should be already initialized by av_lfg_init(). * @return < 0 in case of error, 0 otherwise */ -int avpriv_do_elbg(int *points, int dim, int numpoints, int *codebook, - int num_cb, int num_steps, int *closest_cb, - AVLFG *rand_state); +int avpriv_elbg_do(struct ELBGContext **ctx, int *points, int dim, + int numpoints, int *codebook, int num_cb, int num_steps, + int *closest_cb, AVLFG *rand_state); + +/** + * Free an ELBGContext and reset the pointer to it. + */ +void avpriv_elbg_free(struct ELBGContext **ctx); #endif /* AVCODEC_ELBG_H */ diff --git a/libavcodec/msvideo1enc.c b/libavcodec/msvideo1enc.c index fa65a2fbc4..d43013ba5f 100644 --- a/libavcodec/msvideo1enc.c +++ b/libavcodec/msvideo1enc.c @@ -36,6 +36,7 @@ */ typedef struct Msvideo1EncContext { AVCodecContext *avctx; + struct ELBGContext *elbg; AVLFG rnd; uint8_t *prev; @@ -117,7 +118,8 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt, } // try to find optimal value to fill whole 4x4 block score = 0; - avpriv_do_elbg (c->block, 3, 16, c->avg, 1, 1, c->output, &c->rnd); + avpriv_elbg_do(&c->elbg, c->block, 3, 16, c->avg, + 1, 1, c->output, &c->rnd); if(c->avg[0] == 1) // red component = 1 will be written as skip code c->avg[0] = 0; for(j = 0; j < 4; j++){ @@ -136,7 +138,8 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt, } // search for optimal filling of 2-color block score = 0; - avpriv_do_elbg (c->block, 3, 16, c->codebook, 2, 1, c->output, &c->rnd); + avpriv_elbg_do(&c->elbg, c->block, 3, 16, c->codebook, + 2, 1, c->output, &c->rnd); // last output value should be always 1, swap codebooks if needed if(!c->output[15]){ for(i = 0; i < 3; i++) @@ -161,7 +164,9 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt, // search for optimal filling of 2-color 2x2 subblocks score = 0; for(i = 0; i < 4; i++){ - avpriv_do_elbg (c->block2 + i*4*3, 3, 4, c->codebook2 + i*2*3, 2, 1, c->output2 + i*4, &c->rnd); + avpriv_elbg_do(&c->elbg, c->block2 + i * 4 * 3, 3, 4, + c->codebook2 + i * 2 * 3, 2, 1, + c->output2 + i*4, &c->rnd); } // last value should be always 1, swap codebooks if needed if(!c->output2[15]){ @@ -286,6 +291,7 @@ static av_cold int encode_end(AVCodecContext *avctx) Msvideo1EncContext * const c = avctx->priv_data; av_freep(&c->prev); + avpriv_elbg_free(&c->elbg); return 0; } diff --git a/libavcodec/roqvideoenc.c b/libavcodec/roqvideoenc.c index 167e6bc806..316adac45e 100644 --- a/libavcodec/roqvideoenc.c +++ b/libavcodec/roqvideoenc.c @@ -133,6 +133,7 @@ typedef struct CelEvaluation { typedef struct RoqEncContext { RoqContext common; + struct ELBGContext *elbg; AVLFG randctx; uint64_t lambda; @@ -824,8 +825,8 @@ static int generate_codebook(RoqEncContext *enc, int *codebook = enc->tmp_codebook_buf; int *closest_cb = enc->closest_cb; - ret = avpriv_do_elbg(points, 6 * c_size, inputCount, codebook, - cbsize, 1, closest_cb, &enc->randctx); + ret = avpriv_elbg_do(&enc->elbg, points, 6 * c_size, inputCount, codebook, + cbsize, 1, closest_cb, &enc->randctx); if (ret < 0) return ret; @@ -961,6 +962,8 @@ static av_cold int roq_encode_end(AVCodecContext *avctx) av_freep(&enc->this_motion8); av_freep(&enc->last_motion8); + avpriv_elbg_free(&enc->elbg); + return 0; } diff --git a/libavfilter/vf_elbg.c b/libavfilter/vf_elbg.c index 79797ee25f..2c9c861d02 100644 --- a/libavfilter/vf_elbg.c +++ b/libavfilter/vf_elbg.c @@ -35,6 +35,7 @@ typedef struct ELBGFilterContext { const AVClass *class; + struct ELBGContext *ctx; AVLFG lfg; int64_t lfg_seed; int max_steps_nb; @@ -163,7 +164,7 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *frame) } /* compute the codebook */ - avpriv_do_elbg(elbg->codeword, NB_COMPONENTS, elbg->codeword_length, + avpriv_elbg_do(&elbg->ctx, elbg->codeword, NB_COMPONENTS, elbg->codeword_length, elbg->codebook, elbg->codebook_length, elbg->max_steps_nb, elbg->codeword_closest_codebook_idxs, &elbg->lfg); @@ -223,6 +224,8 @@ static av_cold void uninit(AVFilterContext *ctx) { ELBGFilterContext *const elbg = ctx->priv; + avpriv_elbg_free(&elbg->ctx); + av_freep(&elbg->codebook); av_freep(&elbg->codeword); av_freep(&elbg->codeword_closest_codebook_idxs); From patchwork Fri Sep 17 02:08:02 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 30296 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6602:2a4a:0:0:0:0 with SMTP id k10csp1785015iov; Thu, 16 Sep 2021 19:09:53 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxuLKOTZl8f2YDi9ltLCzmq/abo8AW+nFzNP5HMFIvNre5F7bH6DQEx+4ZwqaT6cNaE81D/ X-Received: by 2002:a17:906:2cd6:: with SMTP id r22mr9464794ejr.398.1631844592913; Thu, 16 Sep 2021 19:09:52 -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 b25si5204132edr.544.2021.09.16.19.09.52; Thu, 16 Sep 2021 19:09:52 -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=LTkFB7yD; 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 0F41868B0FD; Fri, 17 Sep 2021 05:08:42 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-oln040092075092.outbound.protection.outlook.com [40.92.75.92]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6185F68B0FD for ; Fri, 17 Sep 2021 05:08:33 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=n9uZRlLAax++Rvfd6WNIxWIhd0jPM1/Bkel/sBCzG2Yz2QCgX9MYtVhsXsLEUa0iGiA8tdRA0oSYqXHzERxChwVJTpThUKZWpWtftaXXliU3Cmt2xR6C3NqhfbDIId38SwkPW3bdsEDAtyY9zyQOvYwEOXNqsiXilv23mu0zjB73qW7++qU5rsMy0E62GVv4yvUjWm6fxoUR0ghu3zsAg7FsVPLmFSLGQIYLNNFVNZqBnf/wZr3EuIh10GY7X/VrUIZL17cHYVQVbOJbr8DKtthFJx20qHMqeaaBH1fByBfj8EmL5V4LQ60US/zNMu+gSNzqeBgtxe75lbF6sgyc2Q== 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; bh=A8fbGaEu0sYkgrZ6zgl2Ux1brv5+gXE1Xgc5oyImnvU=; b=OvY7OgolqRGyO1CqDh8feJA/MHDq5PattItx0P+/eXRz8h0ujSeswgyEgsfHF3DuC5sGGmAXh9BjCjJv48XGOp5X/1/iyCtaVAFMcKPwipZcGbRfzgn7kgG1frKEoXUFq8cRvaKJfnTK+BvIxzFTXr7LusLgC1xw6AJxEt8i4dmXQgZu/xABLEgs9QBkdEXrs34easdoRwaP7gfaJY7TKq+eI2wfGGDfWiIltHSLnXh0aZQfab+QS67LC/k6DQm6ziYtVnb2w4rGsbdRqpgp3T5Pr2r4KvLRjie8f+Gj7AA/fXE3xHLTySdjZzir3+VitNkSww19N74IEiY+F8wE+Q== 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=A8fbGaEu0sYkgrZ6zgl2Ux1brv5+gXE1Xgc5oyImnvU=; b=LTkFB7yD+8u7bpi1dADvQEvgeJzQsuuMZUV7YSshVe8bnUwe+lPzirH8DsQh7ftBlDYmAGGSLPy4y9pZTbJ2z7bB5ZZNph0YgsFi5MMIjyOZrHvRu03JAvzdursOW6eylGKDzRiuNagSF5p5v8N4ZIeDPmYTFDtQduS+9K8CcuXSP5uFzdimrBUPqY3luJH/b7DTA+gta6OUB7ENswji2a+Uq8XOoDZKn/Ug3tO/Qqf7hB8hixoJ94aBubZiW0K7ls+Y7xd+mYprHVhzLn5eDxr/Sg806+npZ2d2CG6TIhWFOpQyUSobooNPRSgr5GGVCfluGDKtu1TcVcpjAiXqcQ== Received: from AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) by AM6PR03MB5297.eurprd03.prod.outlook.com (2603:10a6:20b:c5::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4523.16; Fri, 17 Sep 2021 02:08:26 +0000 Received: from AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::787b:2156:ca99:fe00]) by AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::787b:2156:ca99:fe00%3]) with mapi id 15.20.4523.016; Fri, 17 Sep 2021 02:08:26 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Fri, 17 Sep 2021 04:08:02 +0200 Message-ID: X-Mailer: git-send-email 2.30.2 In-Reply-To: References: X-TMN: [qCyJ2kVQIvJOM+QgY15l0VMk17reudCC] X-ClientProxiedBy: AM8P191CA0018.EURP191.PROD.OUTLOOK.COM (2603:10a6:20b:21a::23) To AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) X-Microsoft-Original-Message-ID: <20210917020808.275498-6-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from sblaptop.fritz.box (188.192.142.38) by AM8P191CA0018.EURP191.PROD.OUTLOOK.COM (2603:10a6:20b:21a::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4523.14 via Frontend Transport; Fri, 17 Sep 2021 02:08:25 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ae422440-7bf8-47b1-4752-08d9798008bc X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiQB5KKqMro6wr3957+0yV3UpxF2hECgJwCH5+NMXoVFW0wTUPdwcyiZv/4r5D4v+4C1vWch2rdiLA6VNlZ/1j/hklQzfCo4jVf/k+3p6kh8rqomrWOEZ6tCbwBsl3Es9R9sykX+wpjlWRSILWYbcDImggP0p1pcLrnK0JxQ82auCX8JIFpMV6ab+UGsbVTxNBqdLanxaVfGRAeKeHrr71PpHTbrUCzWldKqEf56+xYXyUX/13crdMNJ7frvk4z2Xay6gs8m41JEc8/k2xJMGoeliB+X6SeHpLAFWCDZNxLHzySeXyITW9LMK2rrApoS8xuX6BF5Gj2gNw/fSJL6bxM02O+yxSMRwvQTS87DdsBxAezWFbA8WZhQJBulNpbLVZEzZ3yOA1d2XtDW/3m8DKa1UlrCTG+2iOdwJyXdPOf7IWd8dSvApJuG9Egz8XbgCXPnzA1s0480HR++CcezGk3Nq6VUSWXPNdzGv0PsCxSHa9aYhiKz7taLTEWmhx82wv3l5mHvtzrCk8MpBvtuELP0FOzze6OMqwplol5BE/pGz9dtGIA7PxX5aM9g2hA03t/2Fna7w+uXSkYTf3EdbM3A12GrpqEstSrzA7btJlOJA9f8fV2GiuPr4awa5iQNgt0RXthgSkeaPz9DlWOiz9cFZlRoyI5AvzPRxte9o6iJJZrhtj2rZYTYD6vsuu6g9+bf3WAKrweWPA6A3vB2K+zZkchGoNNwmVnsPPDXbnZyQ95gt4ehS1co7LAnEqhV/qc= X-MS-TrafficTypeDiagnostic: AM6PR03MB5297: X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Vhq4pTk43Ik377HOd0rd87GFHGtM76AAkNxAY9CblYIwyFsn0aymL1amFlz6h9PyyKliQgNjOVKNJ5Wfv7ytXT+9PEVz0dwUoU6Nt2A7j9BmOaympqcuzqOnC5rg+3loUiOoepxQnPmfs1mBvQqBGhWn2h1bSk8wyMErqS9hNIyAOtjAg7i56knPX6eOHRAAXXpGPQ7sonPrYowGKd6cFq4JnDKQP+hLfOv63MZI01EljyU+5P95lCbzq+mRETqr19WZCf2D0okbMoKsRpvgqgoFCBYsygJIN5QttFopB+Hw2v941wY4RAiOSurl4/J/8rU5b4/MQbAXyvF8YjT+m17yLycIajfXyj9CW1dj580K1f8CuHVcurH0duSGJnjfICWkBqksM7wAA/yPRt6LRWa8b7vQPN5TDnwyN7OMGqIjGz7EB/FkagQwWy4OVGqs X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Mi5R7f77rIwmbSyftUM5mnVwI+jPaudrjzwoiIcSziNdJNJQ1GWbo1thSNTZidXU67kypdABn2BkhjZ5G+4Gjc2TBFz+qTwbRXgf05jyfhaI/nHE3S+3np/fvQx7Z4LzjdSpB/+1uxQ6ojOUzkk8tA== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ae422440-7bf8-47b1-4752-08d9798008bc X-MS-Exchange-CrossTenant-AuthSource: AM7PR03MB6660.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Sep 2021 02:08:26.0779 (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: AM6PR03MB5297 Subject: [FFmpeg-devel] [PATCH 07/13] avcodec/elbg: Move arguments to the context early if possible 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: lNghaUnq6pHv This affects all the arguments that don't change during a call to avpriv_elbg_do(); doing so makes it easily recognizable which arguments change upon recursive calls. Signed-off-by: Andreas Rheinhardt --- libavcodec/elbg.c | 73 +++++++++++++++++++++++------------------------ 1 file changed, 35 insertions(+), 38 deletions(-) diff --git a/libavcodec/elbg.c b/libavcodec/elbg.c index 9eac802688..24c6f06f54 100644 --- a/libavcodec/elbg.c +++ b/libavcodec/elbg.c @@ -332,30 +332,22 @@ static void do_shiftings(ELBGContext *elbg) } } -static int do_elbg(int *points, int dim, int numpoints, int *codebook, - int num_cb, int max_steps, int *closest_cb, - AVLFG *rand_state) +static int do_elbg(ELBGContext *elbg, int *points, int numpoints, + int max_steps) { - int dist; - ELBGContext elbg_d; - ELBGContext *elbg = &elbg_d; int i, j, steps = 0, ret = 0; - int *size_part = av_malloc_array(num_cb, sizeof(int)); + int *size_part = av_malloc_array(elbg->num_cb, sizeof(int)); cell *list_buffer = av_malloc_array(numpoints, sizeof(cell)); cell *free_cells; - int best_dist, best_idx = 0; + int best_idx = 0; int64_t last_error; elbg->error = INT64_MAX; - elbg->dim = dim; - elbg->num_cb = num_cb; - elbg->codebook = codebook; - elbg->cells = av_malloc_array(num_cb, sizeof(cell *)); - elbg->utility = av_malloc_array(num_cb, sizeof(*elbg->utility)); - elbg->nearest_cb = closest_cb; + elbg->cells = av_malloc_array(elbg->num_cb, sizeof(cell *)); + elbg->utility = av_malloc_array(elbg->num_cb, sizeof(*elbg->utility)); elbg->points = points; - elbg->utility_inc = av_malloc_array(num_cb, sizeof(*elbg->utility_inc)); - elbg->scratchbuf = av_malloc_array(5*dim, sizeof(int)); + elbg->utility_inc = av_malloc_array(elbg->num_cb, sizeof(*elbg->utility_inc)); + elbg->scratchbuf = av_malloc_array(5 * elbg->dim, sizeof(int)); if (!size_part || !list_buffer || !elbg->cells || !elbg->utility || !elbg->utility_inc || !elbg->scratchbuf) { @@ -363,23 +355,26 @@ static int do_elbg(int *points, int dim, int numpoints, int *codebook, goto out; } - elbg->rand_state = rand_state; do { free_cells = list_buffer; last_error = elbg->error; steps++; - memset(elbg->utility, 0, num_cb * sizeof(*elbg->utility)); - memset(elbg->cells, 0, num_cb * sizeof(*elbg->cells)); + memset(elbg->utility, 0, elbg->num_cb * sizeof(*elbg->utility)); + memset(elbg->cells, 0, elbg->num_cb * sizeof(*elbg->cells)); elbg->error = 0; /* This loop evaluate the actual Voronoi partition. It is the most costly part of the algorithm. */ for (i=0; i < numpoints; i++) { - best_dist = distance_limited(elbg->points + i*elbg->dim, elbg->codebook + best_idx*elbg->dim, dim, INT_MAX); + int best_dist = distance_limited(elbg->points + i * elbg->dim, + elbg->codebook + best_idx * elbg->dim, + elbg->dim, INT_MAX); for (int k = 0; k < elbg->num_cb; k++) { - dist = distance_limited(elbg->points + i*elbg->dim, elbg->codebook + k*elbg->dim, dim, best_dist); + int dist = distance_limited(elbg->points + i * elbg->dim, + elbg->codebook + k * elbg->dim, + elbg->dim, best_dist); if (dist < best_dist) { best_dist = dist; best_idx = k; @@ -396,9 +391,9 @@ static int do_elbg(int *points, int dim, int numpoints, int *codebook, do_shiftings(elbg); - memset(size_part, 0, num_cb * sizeof(*size_part)); + memset(size_part, 0, elbg->num_cb * sizeof(*size_part)); - memset(elbg->codebook, 0, elbg->num_cb * dim * sizeof(*elbg->codebook)); + memset(elbg->codebook, 0, elbg->num_cb * elbg->dim * sizeof(*elbg->codebook)); for (i=0; i < numpoints; i++) { size_part[elbg->nearest_cb[i]]++; @@ -433,13 +428,13 @@ out: * points. * @return < 0 in case of error, 0 otherwise */ -static int init_elbg(int *points, int dim, int numpoints, int *codebook, - int num_cb, int max_steps, int *closest_cb, - AVLFG *rand_state) +static int init_elbg(ELBGContext *elbg, int *points, int numpoints, + int max_steps) { + int dim = elbg->dim; int ret = 0; - if (numpoints > 24LL * num_cb) { + if (numpoints > 24LL * elbg->num_cb) { /* ELBG is very costly for a big number of points. So if we have a lot of them, get a good initial codebook to save on iterations */ int *temp_points = av_malloc_array(dim, (numpoints/8)*sizeof(*temp_points)); @@ -450,19 +445,17 @@ static int init_elbg(int *points, int dim, int numpoints, int *codebook, memcpy(temp_points + i*dim, points + k*dim, dim * sizeof(*temp_points)); } - ret = init_elbg(temp_points, dim, numpoints / 8, codebook, - num_cb, 2 * max_steps, closest_cb, rand_state); + ret = init_elbg(elbg, temp_points, numpoints / 8, 2 * max_steps); if (ret < 0) { av_freep(&temp_points); return ret; } - ret = do_elbg (temp_points, dim, numpoints / 8, codebook, - num_cb, 2 * max_steps, closest_cb, rand_state); + ret = do_elbg(elbg, temp_points, numpoints / 8, 2 * max_steps); av_free(temp_points); } else // If not, initialize the codebook with random positions - for (int i = 0; i < num_cb; i++) - memcpy(codebook + i * dim, points + ((i*BIG_PRIME)%numpoints)*dim, - dim * sizeof(*codebook)); + for (int i = 0; i < elbg->num_cb; i++) + memcpy(elbg->codebook + i * dim, points + ((i*BIG_PRIME)%numpoints)*dim, + dim * sizeof(*elbg->codebook)); return ret; } @@ -477,12 +470,16 @@ int avpriv_elbg_do(ELBGContext **elbgp, int *points, int dim, int numpoints, return AVERROR(ENOMEM); *elbgp = elbg; - ret = init_elbg(points, dim, numpoints, codebook, - num_cb, max_steps, closest_cb, rand_state); + elbg->nearest_cb = closest_cb; + elbg->rand_state = rand_state; + elbg->codebook = codebook; + elbg->num_cb = num_cb; + elbg->dim = dim; + + ret = init_elbg(elbg, points, numpoints, max_steps); if (ret < 0) return ret; - return do_elbg (points, dim, numpoints, codebook, - num_cb, max_steps, closest_cb, rand_state); + return do_elbg (elbg, points, numpoints, max_steps); } av_cold void avpriv_elbg_free(ELBGContext **elbgp) From patchwork Fri Sep 17 02:08:03 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 30301 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6602:2a4a:0:0:0:0 with SMTP id k10csp1784764iov; Thu, 16 Sep 2021 19:09:24 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyEwcl73aOgmvgnrKFWo04GAgEAreqEzCRNbz6mSbi4fxWfMyai2bbb9zBFku2qILcowdvO X-Received: by 2002:a17:906:498b:: with SMTP id p11mr9629139eju.295.1631844564805; Thu, 16 Sep 2021 19:09:24 -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 e7si6560972edk.96.2021.09.16.19.09.24; Thu, 16 Sep 2021 19:09:24 -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=QGx9Y1xI; 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 D41A168B12A; Fri, 17 Sep 2021 05:08:38 +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-oln040092066061.outbound.protection.outlook.com [40.92.66.61]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5AE9368B114 for ; Fri, 17 Sep 2021 05:08:30 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=SecgOE/vOY3jkilYFB7n+0SsSftHTDU4MDtFXcs9YEKmwEM+ZVfm8GHwOJV3g0xb5rOibgBsqZjED4SPTpihQoefc6ZwffjQlHPiw6aRyzqI80eY6lMwNSuHMQfi2xjuuLqb4hRGwLqumB36cKdXkrCoQEftJzIt7b9RObNiQnCxl5diP8bK0WqnUCFTE1+HgM99Ftd36uc+2IiOY7zDTFYkl7Lvd4OQ9Lzb/qY3zlSlLiyLPTgbGBqTwN0GKsCtFIYQY9KP+VB8fHqCLMEXZ3ipopFKRrKh/Gz2kka3eA1SA8/EqQP9fd5qJXbUh07qwo9vNqZFOoHrm0DKta7szw== 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; bh=Cu4O1B+MRik2JxygrGwsa1GXzylXGn/5avR3s1GOXck=; b=I0meefuzmShMrfHs5JRWtQO9zTnxKezR8DNoxeJZACU9s/UcinLUxVyUWar0SnQ9+htklTt6NOP62QUqJiRegzXZeSnxLIK8HWG4n2MarmqquGTPH2Vz4mJBDZVHo91vYxjoNWlJDr63xZAhdUF7NjanxeLiD8WK7lUQrht8FukjTMsumOlAMCXYqTUl8ZDQzsa8LFE6rRLLUfba/4XGpNJ974SiA0Po/7PXxW+K92CTpjEYMh0vlPTqFwQccW46HJboS2Wp/pKrhtOVLhIcJfBG/GzwiFV8f6CtkAHd3FEF6nKbPqn5DjAUg6eoTWjj0MUYRA91exnipSVTb06KnA== 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=Cu4O1B+MRik2JxygrGwsa1GXzylXGn/5avR3s1GOXck=; b=QGx9Y1xIAw+kpXyOTx1YcBaWFlrhiMcLAXHUc3jL+zghdT7+jSeJZN1WWYG5D2s1bIkyA3hJRlq6eruWWe5+ugLx6U9tFBVzmYaBYXyCrxZxoZoKcLiGv1Oknye0umQ4YAwn/MP56Zp7DOP0yscq0BSo9g/+J0BF3KcuWuclm6YBgoSoTKC+kswh3WhYphUHItNEJMklyCmCk+WeJyKKqdb/Mwr+sr/fsvUwzc+Hqa0HbQBwtNIxIM0q1WWElQdAejHWiWNDXzRbWYuPyYVmsZ0SfxIokIhUQizgwVrOM81K8rzy6VF463yh1Uqdj2IPRGesaQQsFRs7yVRnhRsTLg== Received: from AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) by AM6PR03MB4104.eurprd03.prod.outlook.com (2603:10a6:20b:18::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4523.17; Fri, 17 Sep 2021 02:08:28 +0000 Received: from AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::787b:2156:ca99:fe00]) by AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::787b:2156:ca99:fe00%3]) with mapi id 15.20.4523.016; Fri, 17 Sep 2021 02:08:28 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Fri, 17 Sep 2021 04:08:03 +0200 Message-ID: X-Mailer: git-send-email 2.30.2 In-Reply-To: References: X-TMN: [DzSUa1N2fYnviPDvMoK1ibgtcXSKmpRQ] X-ClientProxiedBy: AM8P191CA0018.EURP191.PROD.OUTLOOK.COM (2603:10a6:20b:21a::23) To AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) X-Microsoft-Original-Message-ID: <20210917020808.275498-7-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from sblaptop.fritz.box (188.192.142.38) by AM8P191CA0018.EURP191.PROD.OUTLOOK.COM (2603:10a6:20b:21a::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4523.14 via Frontend Transport; Fri, 17 Sep 2021 02:08:27 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: fd48fd6f-0cdd-439a-14fa-08d9798009f0 X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiQB5KKqMro6wr3957+0yV3UUASCoka4SNXhNpK4w9X5n8lg3yRdiV6pmkkIzkU78tZBf4ZzTTwNVcJBC9prbcPk8Iy2xXZHF6yRkRiOGDr7CAHBB7cToVLm5TQjf5/hkh05WbsxghW3rNbLDKvQulpeSBcuZaKWmDmvhOJqr1XKvb/MD5EAPKsOhr7GxERs8khS/CZZW+Q7MmcuffHa85PKnXgomeRjNAnHH+NriimSIJebz9416R6ZZ0kLGrJKoItHFsmVvVYSjIbK1k5aW+WLeje6k3PJ4d1L4x9CO630XyKQxWR2n64GF3IZk0aWSM/Ux/qqusugqOItZ/M63Zpsqom0EluBvQfnE6ZGfp6jNYWMePnU4ne0sScqCEThSjWsYIUTWWCD+TqDQkA6IZlYkpC/hHzoC07vierDY9zu1KB3fRTX9Q0e4+KkV9l7lnB5qT1SlinRvtHwHULMtdu7NwMQNtL2Oa8Y6UrUa4zvs77X8foO1aRAmHReDFaLin2w2AfdjzSr5ah2yqTrfscx7RMct9eRJEH7asZ9UUZfAXUTPwyNkLfiy0/ERM55uSGdo9JL7Ir+u3cpTfXOoi9Zyq9EzWpDTT403r1Uu+SSA9BR3mgIWOUikfA+WZFVdks5b4kwanjshYzvdHaUqdQ3KufHLOehVU2gVlSRSLl4IQ97xEXn34Xvf23oYw//29VG6uhG3ldahMQ0bdESX00sDrZMb/6S5ofQ5kjXjKQyIsN193uYjR+Vejxtdv9jQgU= X-MS-TrafficTypeDiagnostic: AM6PR03MB4104: X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Te4Cl/P823Aj4zgCePL+rM8e6wNLqCMm+jvuhI6VKUeH4npWB0aKZZWbNvcAIM2zIo+Yt0MeUpWtLr3zkFpWkETyDymWGJuGAQ+oEjgw5OAKh7hcgRO0UT7dqO1dIosn8g+kjvUwXVENvfzE6KPghwHRf4vimezOdd0raJTz1G1Ha74pInwy5XDd8s/JNUUzv7kFpZNc/xGeHhzs0tq4eqGe8QI2sps2rE2NkbQD1LIme4NnOjQ0MObvo3tWgbvnEEgC8oPUHLI9BXLEhl7D/GSc0mv482RlHaVtrrOCwiBS5fPBY9xOqVIWnHRV3f6Dbk8ezNYWnsjRGLGm7cMXwlgx3gs1jMRgaXkYfj2k4thxj3aHnAP1EgQgE9F9l4TCyH3/sEb8yz5JbP1c+euS6NX3qw2C0oldaHc0d8yCR2VphYfAtXKR7R8QEVpHaBev X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: tyvzvA8aKtPlcRJs1qg2qSVOlcriwxNxritiAVn34beb2D+yvpHdsGQdZJCivnXUjK2niQr1KkKYPEpwju6ndR02MY6rtKBr+EPAqKzDeyfspBkl8mP2wxhvSMdaBC2QfP1fFJoYfm25aqof484WcQ== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: fd48fd6f-0cdd-439a-14fa-08d9798009f0 X-MS-Exchange-CrossTenant-AuthSource: AM7PR03MB6660.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Sep 2021 02:08:28.0951 (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: AM6PR03MB4104 Subject: [FFmpeg-devel] [PATCH 08/13] avcodec/elbg: Keep buffers to avoid allocations and frees 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: nZtJNsAIiqem Up until now, each call to avpriv_elbg_do() would result in at least six allocations. And this function is called a lot: A typical FATE run results in 52213653 calls to av_malloc; of these, 34974671 originate from av_malloc_array and from these 34783679 originate from avpriv_elbg_do; the msvideo1 encoder tests are behind most of these. This commit changes this by keeping the buffers and only reallocating them when needed. E.g. for the encoding part of fate-vsynth1-msvideo1 total heap usage went down from 11,407,939 allocs and frees with 468,106,207 bytes allocated to 3,149 allocs and frees with 13,181,847 bytes allocated. The time for one encode2-call went down by 69%. Signed-off-by: Andreas Rheinhardt --- libavcodec/elbg.c | 84 ++++++++++++++++++++++++++++++----------------- 1 file changed, 54 insertions(+), 30 deletions(-) diff --git a/libavcodec/elbg.c b/libavcodec/elbg.c index 24c6f06f54..4397bff1ef 100644 --- a/libavcodec/elbg.c +++ b/libavcodec/elbg.c @@ -53,8 +53,20 @@ typedef struct ELBGContext { int64_t *utility_inc; int *nearest_cb; int *points; + int *size_part; AVLFG *rand_state; int *scratchbuf; + cell *cell_buffer; + + /* Sizes for the buffers above. Pointers without such a field + * are not allocated by us and only valid for the duration + * of a single call to avpriv_elbg_do(). */ + unsigned utility_allocated; + unsigned utility_inc_allocated; + unsigned size_part_allocated; + unsigned cells_allocated; + unsigned scratchbuf_allocated; + unsigned cell_buffer_allocated; } ELBGContext; static inline int distance_limited(int *a, int *b, int dim, int limit) @@ -332,32 +344,19 @@ static void do_shiftings(ELBGContext *elbg) } } -static int do_elbg(ELBGContext *elbg, int *points, int numpoints, - int max_steps) +static void do_elbg(ELBGContext *elbg, int *points, int numpoints, + int max_steps) { - int i, j, steps = 0, ret = 0; - int *size_part = av_malloc_array(elbg->num_cb, sizeof(int)); - cell *list_buffer = av_malloc_array(numpoints, sizeof(cell)); - cell *free_cells; + int *const size_part = elbg->size_part; + int i, j, steps = 0; int best_idx = 0; int64_t last_error; elbg->error = INT64_MAX; - elbg->cells = av_malloc_array(elbg->num_cb, sizeof(cell *)); - elbg->utility = av_malloc_array(elbg->num_cb, sizeof(*elbg->utility)); elbg->points = points; - elbg->utility_inc = av_malloc_array(elbg->num_cb, sizeof(*elbg->utility_inc)); - elbg->scratchbuf = av_malloc_array(5 * elbg->dim, sizeof(int)); - - if (!size_part || !list_buffer || !elbg->cells || - !elbg->utility || !elbg->utility_inc || !elbg->scratchbuf) { - ret = AVERROR(ENOMEM); - goto out; - } - do { - free_cells = list_buffer; + cell *free_cells = elbg->cell_buffer; last_error = elbg->error; steps++; memset(elbg->utility, 0, elbg->num_cb * sizeof(*elbg->utility)); @@ -408,15 +407,6 @@ static int do_elbg(ELBGContext *elbg, int *points, int numpoints, } while(((last_error - elbg->error) > DELTA_ERR_MAX*elbg->error) && (steps < max_steps)); - -out: - av_free(size_part); - av_free(elbg->utility); - av_free(list_buffer); - av_free(elbg->cells); - av_free(elbg->utility_inc); - av_free(elbg->scratchbuf); - return ret; } #define BIG_PRIME 433494437LL @@ -450,13 +440,13 @@ static int init_elbg(ELBGContext *elbg, int *points, int numpoints, av_freep(&temp_points); return ret; } - ret = do_elbg(elbg, temp_points, numpoints / 8, 2 * max_steps); + do_elbg(elbg, temp_points, numpoints / 8, 2 * max_steps); av_free(temp_points); } else // If not, initialize the codebook with random positions for (int i = 0; i < elbg->num_cb; i++) memcpy(elbg->codebook + i * dim, points + ((i*BIG_PRIME)%numpoints)*dim, dim * sizeof(*elbg->codebook)); - return ret; + return 0; } int avpriv_elbg_do(ELBGContext **elbgp, int *points, int dim, int numpoints, @@ -476,13 +466,47 @@ int avpriv_elbg_do(ELBGContext **elbgp, int *points, int dim, int numpoints, elbg->num_cb = num_cb; elbg->dim = dim; +#define ALLOCATE_IF_NECESSARY(field, new_elements, multiplicator) \ + if (elbg->field ## _allocated < new_elements) { \ + av_freep(&elbg->field); \ + elbg->field = av_malloc_array(new_elements, \ + multiplicator * sizeof(*elbg->field)); \ + if (!elbg->field) { \ + elbg->field ## _allocated = 0; \ + return AVERROR(ENOMEM); \ + } \ + elbg->field ## _allocated = new_elements; \ + } + /* Allocating the buffers for do_elbg() here once relies + * on their size being always the same even when do_elbg() + * is called from init_elbg(). It also relies on do_elbg() + * never calling itself recursively. */ + ALLOCATE_IF_NECESSARY(cells, num_cb, 1) + ALLOCATE_IF_NECESSARY(utility, num_cb, 1) + ALLOCATE_IF_NECESSARY(utility_inc, num_cb, 1) + ALLOCATE_IF_NECESSARY(size_part, num_cb, 1) + ALLOCATE_IF_NECESSARY(cell_buffer, numpoints, 1) + ALLOCATE_IF_NECESSARY(scratchbuf, dim, 5) + ret = init_elbg(elbg, points, numpoints, max_steps); if (ret < 0) return ret; - return do_elbg (elbg, points, numpoints, max_steps); + do_elbg (elbg, points, numpoints, max_steps); + return 0; } av_cold void avpriv_elbg_free(ELBGContext **elbgp) { + ELBGContext *elbg = *elbgp; + if (!elbg) + return; + + av_freep(&elbg->size_part); + av_freep(&elbg->utility); + av_freep(&elbg->cell_buffer); + av_freep(&elbg->cells); + av_freep(&elbg->utility_inc); + av_freep(&elbg->scratchbuf); + av_freep(elbgp); } From patchwork Fri Sep 17 02:08:04 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 30304 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6602:2a4a:0:0:0:0 with SMTP id k10csp1785093iov; Thu, 16 Sep 2021 19:10:02 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw++M3UshvJO9ShoP6vhuClAlK8fpm8xBcO3GOm1joFCS154DL40tBtImCWTXIeICauCEq6 X-Received: by 2002:a17:906:cc0e:: with SMTP id ml14mr9235438ejb.395.1631844601859; Thu, 16 Sep 2021 19:10:01 -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 e3si5833930ejs.199.2021.09.16.19.10.01; Thu, 16 Sep 2021 19:10:01 -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=a4YrQ4Ss; 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 CEF5368B149; Fri, 17 Sep 2021 05:08:42 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-oln040092075092.outbound.protection.outlook.com [40.92.75.92]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8A85C68B0FD for ; Fri, 17 Sep 2021 05:08:38 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=K4P83wKKkevaqsnX3KAjd2Axm7zhqPB738cK/Rnqrms4Xd3F+bsBX2LVi1Amd7zeg348ceqQMEbq29wuO6nOqJnWSxtrpXwRMPKjZkQxBlSFuHoTyXC2Njf6B8TzMOsLMFaRWq8IlqdrAO24TDAY4onQadCZMvB51ZC4mhQP0OJfLYZZ0cxUwzU4OOpGCNlcNtm2p+iTCoDu8IE5MIG/4t61OMLzwA/o/idnSmCM91GvZM9H/sD8n4TjqKKre7ExHCtCFeRRjT4POgUMPqROzsZQIaVwgLBDEMYJ+fOtgVeKCZNyqRP/m+uJuxK29+lTHf3HEnDX4MZN5agvQbXVSQ== 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; bh=R4BTs77sBOIlpQMGE5qgYN/KIQlgSKmLF5jICrmnTKM=; b=gc48TDiJD1olKs9U+Ip8aOmzAHiJuzolaL3cREO6LLb3VnvnzZRYh4P7EhAcj2k67HmKrwxxgdZkM49Lo23R+brcIfsyxRJGLGwfBNpbOLh2FYj7RiPUZdI/rdSmmdGq97yVFAbMordWzkoYxURJhfbQgbp0chw+tiqJaSapa+BE7kmFHjPqFYkvS965DYthlEahvRPFEzeNs2YbsHnl64svVGb5yC6jfpZIAfYgfLo9V4I3gBBy0AHnG5JqWdOeqXQHBEzpAnC8eHci1Z6afALsjLN657bRiZ+sSpWA+n3hUfy1AUekbyMjibi4OQBE3SnN2KtA9kizrYMQ1k8O3A== 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=R4BTs77sBOIlpQMGE5qgYN/KIQlgSKmLF5jICrmnTKM=; b=a4YrQ4SsM8ZIcNSrH9ZbE7pS+opN7hN42dO0TSqo77hLM+EcGzdya1b7os5P7gJNqLZ02C/Up0K4WjipshxfEIvLbGzKF9kv4temg/K9vAqWw9MLGait1ta0rN2nQT5Dw8bBQgrXcVdqBscDus8mjXohPds5LIxAohBnaigJnjym+TyFEwzY5TE8fZtteDnMcfrPIe340alXbFTPLg1ki3CFPUAMd6p6exuKhAslFZ5gEhiqdUtBoJjI2TAoVz51Va0LEH9rzdxB2cPaZvwqKkztYuOvFfwRDUpro+wktB5VLWaMFPwjuswZ5qbXvUBWCA09QQDE5/dvuFR0+5CvZg== Received: from AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) by AM6PR03MB5297.eurprd03.prod.outlook.com (2603:10a6:20b:c5::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4523.16; Fri, 17 Sep 2021 02:08:29 +0000 Received: from AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::787b:2156:ca99:fe00]) by AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::787b:2156:ca99:fe00%3]) with mapi id 15.20.4523.016; Fri, 17 Sep 2021 02:08:29 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Fri, 17 Sep 2021 04:08:04 +0200 Message-ID: X-Mailer: git-send-email 2.30.2 In-Reply-To: References: X-TMN: [oo6Dvqw8ilGtdrpDKdlyjVBXrupLKWxr] X-ClientProxiedBy: AM8P191CA0018.EURP191.PROD.OUTLOOK.COM (2603:10a6:20b:21a::23) To AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) X-Microsoft-Original-Message-ID: <20210917020808.275498-8-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from sblaptop.fritz.box (188.192.142.38) by AM8P191CA0018.EURP191.PROD.OUTLOOK.COM (2603:10a6:20b:21a::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4523.14 via Frontend Transport; Fri, 17 Sep 2021 02:08:29 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 0e139f68-1da8-465a-2867-08d979800abf X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiQB5KKqMro6wr3957+0yV3UBKE9R8MG1zt+W+/DlJ/AlN2ytHo96fHvuorak4xRJU1BjrHL5pKVJV/df41mH+QM1jJBKZc8b15/Y0ORi7xFpUb307fBbHUCuoSrbAz3RAjEBCJ1jWRm+FhMNynPAiXOrzhfWY38MjUo0cgngi3xikxiB4/l8T+OEFsGfEBtpwFAHm/uaTaFlrPO9yyYWYp9DZ3VGWrrcm0foxZqALRKxRMfWwwvzN3wwh2RtSTfHNryY662nKBfaiqAstGdzGp6Wli8x0NaHFm4B8KtZeGdN6D6tefKADZPpYbm0KGn0+v3hgmERd9fyff1payVY21wB5QMTlDf4SOERoOVfSyKIcOd/VVc4QkgLBGs/4x7EbhlHvrMQbpoYJczIHhIt/K9o3eX8MaJgPj3BdwmikQs4fyh2Rw9r6VhLtlWwRZQUV5ZzmmjQgO6maXbPJx04Mpo6ds1uowftuBXYeO/jy3lG/TY1o89wY0P46u79l4xtCDqDnALSvKqj6ihZBU5T5/AZED1SgWumBPJ9q8IXE431G9RitBIeXB+N4cURAwXzcKY2GrucGtxIseosDadPi2cEwSTqlYfYUSUlfgoQbApwTyvlhVI/MlsAVtjvgwHeRvfu7R6JfbIxkot0zH6J7yxo1SLBx1Yo0tfNMehxgyN+zUZbst7BKv+ZLeeCkbsc7uMwwVbCWg/FcXmYuaxsY3717lwxzB/JtreRtxmJz3lA7rJu+owkcIybLxaZofJUKU= X-MS-TrafficTypeDiagnostic: AM6PR03MB5297: X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: h2+iVPNlOGP8s36MKVRkolf4q2yphVDBFvhkNR2y+wrDi+I4HFReKJ6UCtKNC6COztSnt8LzZu+iz3sF2FLKj2nJNBIgkB8vla3RBt8roRMKS6mjDrJ92tnOmraOWj9goiI7fi/pg75pI7yJjJGk0VKd88yuC7z92BWr7Of14bpop/8JYRaFlzzAJRqE6oZD5+Yusrp2PR6tJoMPgiORnMB9syGU8j1JfF1IPhhEK7WnMz1ca4jQyGqjQhq4HW7O/bHmTKgRjpnay6NBA9ZCe7ESTRkoVnZRxM3oDD8nr5RS+hcqolW9zguU6pjunHW5Vh25neTFVXv6QjwpGOVY1SFnmaGuM43U2sp8h7QX3kBZ7QTkjh9cpbvlAU0UivZYcUMgYswjMRsPDepYQCrbYEZ8SOHXVcKIUFRlwEfRlu/vcaF/WctGNcsAEgcqj+da X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: uzXg5rDtrqqfDg2SKo9HiLcALje9JB1dFoFERK729WZ4Gwz5UQajJ2ngOGtzNISwPtSCwEP35rtTtos5rToVNkg1mKi/PkBUSAMzxyzcA+jOs9eOq8DpnO13WQxDBehjuRfu4/7czkRW+DNMBztmZQ== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0e139f68-1da8-465a-2867-08d979800abf X-MS-Exchange-CrossTenant-AuthSource: AM7PR03MB6660.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Sep 2021 02:08:29.4821 (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: AM6PR03MB5297 Subject: [FFmpeg-devel] [PATCH 09/13] avcodec/elbg: Also allocate buffers for recursion only once 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: G+unoJmmAcGo This is possible because the number of elements needed in each recursion step decreases geometrically, so the geometric series provides an upper bound for the sum of number of elements of the needed buffers. Signed-off-by: Andreas Rheinhardt --- libavcodec/elbg.c | 38 ++++++++++++++++++++------------------ 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/libavcodec/elbg.c b/libavcodec/elbg.c index 4397bff1ef..2bacf5b773 100644 --- a/libavcodec/elbg.c +++ b/libavcodec/elbg.c @@ -53,6 +53,7 @@ typedef struct ELBGContext { int64_t *utility_inc; int *nearest_cb; int *points; + int *temp_points; int *size_part; AVLFG *rand_state; int *scratchbuf; @@ -67,6 +68,7 @@ typedef struct ELBGContext { unsigned cells_allocated; unsigned scratchbuf_allocated; unsigned cell_buffer_allocated; + unsigned temp_points_allocated; } ELBGContext; static inline int distance_limited(int *a, int *b, int dim, int limit) @@ -416,37 +418,29 @@ static void do_elbg(ELBGContext *elbg, int *points, int numpoints, * If numpoints <= 24 * num_cb this function fills codebook with random numbers. * If not, it calls do_elbg for a (smaller) random sample of the points in * points. - * @return < 0 in case of error, 0 otherwise */ -static int init_elbg(ELBGContext *elbg, int *points, int numpoints, - int max_steps) +static void init_elbg(ELBGContext *elbg, int *points, int *temp_points, + int numpoints, int max_steps) { int dim = elbg->dim; - int ret = 0; if (numpoints > 24LL * elbg->num_cb) { /* ELBG is very costly for a big number of points. So if we have a lot of them, get a good initial codebook to save on iterations */ - int *temp_points = av_malloc_array(dim, (numpoints/8)*sizeof(*temp_points)); - if (!temp_points) - return AVERROR(ENOMEM); for (int i = 0; i < numpoints / 8; i++) { int k = (i*BIG_PRIME) % numpoints; memcpy(temp_points + i*dim, points + k*dim, dim * sizeof(*temp_points)); } - ret = init_elbg(elbg, temp_points, numpoints / 8, 2 * max_steps); - if (ret < 0) { - av_freep(&temp_points); - return ret; - } + /* If anything is changed in the recursion parameters, + * the allocated size of temp_points will also need to be updated. */ + init_elbg(elbg, temp_points, temp_points + numpoints / 8 * dim, + numpoints / 8, 2 * max_steps); do_elbg(elbg, temp_points, numpoints / 8, 2 * max_steps); - av_free(temp_points); } else // If not, initialize the codebook with random positions for (int i = 0; i < elbg->num_cb; i++) memcpy(elbg->codebook + i * dim, points + ((i*BIG_PRIME)%numpoints)*dim, dim * sizeof(*elbg->codebook)); - return 0; } int avpriv_elbg_do(ELBGContext **elbgp, int *points, int dim, int numpoints, @@ -454,7 +448,6 @@ int avpriv_elbg_do(ELBGContext **elbgp, int *points, int dim, int numpoints, int *closest_cb, AVLFG *rand_state) { ELBGContext *const elbg = *elbgp ? *elbgp : av_mallocz(sizeof(*elbg)); - int ret; if (!elbg) return AVERROR(ENOMEM); @@ -487,10 +480,18 @@ int avpriv_elbg_do(ELBGContext **elbgp, int *points, int dim, int numpoints, ALLOCATE_IF_NECESSARY(size_part, num_cb, 1) ALLOCATE_IF_NECESSARY(cell_buffer, numpoints, 1) ALLOCATE_IF_NECESSARY(scratchbuf, dim, 5) + if (numpoints > 24LL * elbg->num_cb) { + /* The first step in the recursion in init_elbg() needs a buffer with + * (numpoints / 8) * dim elements; the next step needs numpoints / 8 / 8 + * * dim elements etc. The geometric series leads to an upper bound of + * numpoints / 8 * 8 / 7 * dim elements. */ + uint64_t prod = dim * (uint64_t)(numpoints / 7U); + if (prod > INT_MAX) + return AVERROR(ERANGE); + ALLOCATE_IF_NECESSARY(temp_points, prod, 1) + } - ret = init_elbg(elbg, points, numpoints, max_steps); - if (ret < 0) - return ret; + init_elbg(elbg, points, elbg->temp_points, numpoints, max_steps); do_elbg (elbg, points, numpoints, max_steps); return 0; } @@ -507,6 +508,7 @@ av_cold void avpriv_elbg_free(ELBGContext **elbgp) av_freep(&elbg->cells); av_freep(&elbg->utility_inc); av_freep(&elbg->scratchbuf); + av_freep(&elbg->temp_points); av_freep(elbgp); } From patchwork Fri Sep 17 02:08:05 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 30299 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6602:2a4a:0:0:0:0 with SMTP id k10csp1785207iov; Thu, 16 Sep 2021 19:10:11 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwfphO6fe0aPbQ1/FHA2ea9E7OQPsFs9QEMadQYbeLB8k2Y8YrQ6V6E6r94tXqme3rUKTKq X-Received: by 2002:a17:907:2d0b:: with SMTP id gs11mr9421240ejc.151.1631844611559; Thu, 16 Sep 2021 19:10:11 -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 e11si5186615edj.557.2021.09.16.19.10.10; Thu, 16 Sep 2021 19:10:11 -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=n8Nl9OsH; 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 CF54A68B14F; Fri, 17 Sep 2021 05:08:43 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-oln040092075092.outbound.protection.outlook.com [40.92.75.92]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id A305C68B12A for ; Fri, 17 Sep 2021 05:08:38 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=H5JGBwQ8GmGt77NPhf/qbpsMPBQLoyZfjJ5HOgGljSX3GaWEyKvuNlPaFMwUOY71slaoFQVT/VR8Qpj5Yd1fdqJDWpE7unoYJVxwQSRwvb9/DQOXw4wb6ooSCTDbvC6bxfD3gWiLP4OkO7YwCf9BU8PPPfypCD0Sw6+u6AHr0TSYUC+s42XmTjbA4zhmdYyoRcvxTfFVAnV5JFbadJVtvNkZr24kAQ0XetUNfpRUvKa4TpF4c7MTZkO5lahxV/OqJvFdlendmLRQ8sk6nprndVz7XeGsQV4KP7WhcAAAU+XoJWQ91XRUItZRrZ0VtHsF52Mrz5wZ+RVVw5k1S27hEw== 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; bh=NsXxGbTbLDHbT5NZsyE6DCEc2ySYobLYMaunJp6fjGs=; b=hYoropcigGRR7g0eThDbbaDJS49SP5YYFFT50z8Hili21vuG4nz5hJuHQHChNT25cQCKBot1WB05gaorTUPUEelqg3U2bRY4xV/Bzfkja/8pECq16H1GxY2PCBKJrb8yBO1D3qNOrnEuadf/aISAztYHU3/wk1xQyXnC0eDPYcbhD7SKi7zTo8n+YHWcEXU6nQSW+maoBbJpPOBRmd5RWpqfvbk4aXqQL6ncGrJoLQG4vHsRV1i3BAbpaqKCMZQ41zKET8PVAJqXbI8p/2DcwiDllOZZNbL5LoRtkquiYwjwYvpYZ9Fx+LerI8dUWV28UeBWDf6tSK+P6yzlzT6lVg== 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=NsXxGbTbLDHbT5NZsyE6DCEc2ySYobLYMaunJp6fjGs=; b=n8Nl9OsHMjxFt2QvpJGyYvKj503MPlVS8Eqi3zZUh9JEnqmEv743Qbydu5n8EieFtXOM6JWAy1uZTHfV5gLCuOQhy+y3ZnOT4CSDmVabMVsuMJ4LNxJtOSNBbJwag+arDYGcAKi84mJ/HrGxR/uH5gIf9558JHRF+NxfDWAUzqfv89wswdQTwfzUk8oruLsC3PLMQc8QYJR8t3zDrc6P/7dmWiWo8DwnWsyB7Dl08MVdxqOujhyo9OOBD8SlHDCTA9YiG5yBDaHvNb5nqTD5lDfW8ddNk9PuB0ZPoSRptZJey9vcpftlqLbZE7sJ169Bda8ULgeeU8w0jC2A4G+9Mw== Received: from AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) by AM6PR03MB5297.eurprd03.prod.outlook.com (2603:10a6:20b:c5::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4523.16; Fri, 17 Sep 2021 02:08:31 +0000 Received: from AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::787b:2156:ca99:fe00]) by AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::787b:2156:ca99:fe00%3]) with mapi id 15.20.4523.016; Fri, 17 Sep 2021 02:08:31 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Fri, 17 Sep 2021 04:08:05 +0200 Message-ID: X-Mailer: git-send-email 2.30.2 In-Reply-To: References: X-TMN: [5FSPaUfypsxmCIztDnurkBErox9ln7e8] X-ClientProxiedBy: AM8P191CA0018.EURP191.PROD.OUTLOOK.COM (2603:10a6:20b:21a::23) To AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) X-Microsoft-Original-Message-ID: <20210917020808.275498-9-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from sblaptop.fritz.box (188.192.142.38) by AM8P191CA0018.EURP191.PROD.OUTLOOK.COM (2603:10a6:20b:21a::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4523.14 via Frontend Transport; Fri, 17 Sep 2021 02:08:31 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: af5cb649-5a3c-4a0b-698e-08d979800bdb X-MS-Exchange-SLBlob-MailProps: q+fD6XS3/ULHQVHO031XvYglgXuzPUZXAwLUo0PUPg0PZLbidF5Zr4Pkevs2xDgdWSQBrRHl8ID1Y+yZouMKdrhY2vu4E0mSZKxPr71ung+L1CEeLwW7McqW8VXJzp4J20/D9tT7PC3RpbhhVgB1dOgS498ukjm3cSN2zdYUAVIcyeYR85hnKpvNoUXzpN+FkEBQgYzcuTC7sN4hXpYZoB/pgVIMR3S5CyF4BdHTqT4as/AE/C5U/KIdIIsBbIClJzzS+evUuWRgdavVmjJi0+LgzfGc9HjRSaNLrnq49Nt86qE+k2zSfHyjqhkmKCDcK5kERthU3JuV85sUuWICjIsMlT1ScS3gsmtf+yidlRThUt1CzRugZsnNuzQp6WyfJRmVm6hiOA6BPds4eYjfSTVkid+874tcHRrxFlolMmu6s8J93cgLVn5W540cHijYy3W8kX1IEazvwtN02hYBFKeFD4YR+Am2A7KgBQmvvf2UD/typJbzFj60wVjcP33Ljak/rz2S3Z67q10VLznLeDYCPJ71RRnHEy1aGoazD9fjS59O9eH7C+wGDOnI49XaMY7UTauPHvkHflowQRvMWCXe8KdHNFNIc2/o5iLxdyPt/hZG7WniQAgW+EnzjroTmSCOoZ7jj8ZA3jidp7/Mn/jNWCjcPuEReh0wUSXF98DxH4S8ipDF2V/qmrGuR1pTFoUn0LVFzfWY66ONK2aSHA== X-MS-TrafficTypeDiagnostic: AM6PR03MB5297: X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: WkRskwuh43k8/aLVKmXerHyLgBo87E3+bmKvtOEKDdZf6/hy9SDMFP7SoLkoXnMjOdlfFSYVqRUo1cqPV+41f5IXqH/f6uoW4qbXpC9VgFtIhnhksdWTOs3UTOAZ7lT94nGHmCdqnX5xoyTuomQ/B8+1fJhrKdv1nMp6W6j+qxFgak/opGissYifSeXOpVyTuAkZg0XJjR9o7Ywdd0v8w2lGZquCVQ/m4HyV7OG+Kb+Zc/SpcEcWAQCN4gzosyQOpkEsqpw9eNr+6RV8GTllQqdwDqBY2tyycXThTI3Q66DSdm6NobUIc+hyEmX/IavqbADeY3504eKQOl11ZBe2AS2B61Xtnxt4xCDb6dOFbUS3IQibEI9ejBHK2tqpmUpc9qNCMZEL23VJT26OvO+pSA8TilDRoXDLe2rTdoBCnZN/DMMHlgG4iijsuiC3UqT0 X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: uhTdPvYJ/hPt7+9j/ryUx7SBuT+VRW8bemnIV1PV2fIYF9KjtUqtmeacgi02TIWrl763Xu3gmurW6INO1LOCZ2yI8e9jvWR+jM878/OlkD91Cn+DeRSt80iM6RpnELRxD1r3fdJ537DjT/XKKieXCQ== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: af5cb649-5a3c-4a0b-698e-08d979800bdb X-MS-Exchange-CrossTenant-AuthSource: AM7PR03MB6660.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Sep 2021 02:08:31.4874 (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: AM6PR03MB5297 Subject: [FFmpeg-devel] [PATCH 10/13] avcodec/cinepakenc: Check all calls to avpriv_elbg_do() 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: TW5IMHZn9CG/ Signed-off-by: Andreas Rheinhardt --- libavcodec/cinepakenc.c | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/libavcodec/cinepakenc.c b/libavcodec/cinepakenc.c index 2984b93de3..d1bcf2b2d5 100644 --- a/libavcodec/cinepakenc.c +++ b/libavcodec/cinepakenc.c @@ -709,6 +709,7 @@ static int quantize(CinepakEncContext *s, int h, uint8_t *data[4], uint8_t vq_pict_buf[(MB_AREA * 3) / 2]; uint8_t *sub_data[4], *vq_data[4]; int sub_linesize[4], vq_linesize[4]; + int ret; for (mbn = i = y = 0; y < h; y += MB_SIZE) { for (x = 0; x < s->w; x += MB_SIZE, ++mbn) { @@ -762,8 +763,10 @@ static int quantize(CinepakEncContext *s, int h, uint8_t *data[4], if (i < size) size = i; - avpriv_elbg_do(&s->elbg, s->codebook_input, entry_size, i, codebook, - size, 1, s->codebook_closest, &s->randctx); + ret = avpriv_elbg_do(&s->elbg, s->codebook_input, entry_size, i, codebook, + size, 1, s->codebook_closest, &s->randctx); + if (ret < 0) + return ret; // set up vq_data, which contains a single MB vq_data[0] = vq_pict_buf; @@ -888,8 +891,10 @@ static int rd_strip(CinepakEncContext *s, int y, int h, int keyframe, if (mode == MODE_V1_ONLY) { info.v1_size = v1_size; // the size may shrink even before optimizations if the input is short: - info.v1_size = quantize(s, h, data, linesize, 1, - &info, ENC_UNCERTAIN); + if ((new_v1_size = quantize(s, h, data, linesize, 1, + &info, ENC_UNCERTAIN)) < 0) + return new_v1_size; + info.v1_size = new_v1_size; if (info.v1_size < v1_size) // too few eligible blocks, no sense in trying bigger sizes v1enough = 1; @@ -902,8 +907,11 @@ static int rd_strip(CinepakEncContext *s, int y, int h, int keyframe, if (mode == MODE_V1_V4) { info.v4_size = v4_size; - info.v4_size = quantize(s, h, data, linesize, 0, - &info, ENC_UNCERTAIN); + new_v4_size = quantize(s, h, data, linesize, 0, + &info, ENC_UNCERTAIN); + if (new_v4_size < 0) + return new_v4_size; + info.v4_size = new_v4_size; if (info.v4_size < v4_size) // too few eligible blocks, no sense in trying bigger sizes v4enough = 1; @@ -921,11 +929,15 @@ static int rd_strip(CinepakEncContext *s, int y, int h, int keyframe, // we assume we _may_ come here with more blocks to encode than before info.v1_size = v1_size; new_v1_size = quantize(s, h, data, linesize, 1, &info, ENC_V1); + if (new_v1_size < 0) + return new_v1_size; if (new_v1_size < info.v1_size) info.v1_size = new_v1_size; // we assume we _may_ come here with more blocks to encode than before info.v4_size = v4_size; new_v4_size = quantize(s, h, data, linesize, 0, &info, ENC_V4); + if (new_v4_size < 0) + return new_v4_size; if (new_v4_size < info.v4_size) info.v4_size = new_v4_size; // calculate the resulting score @@ -942,12 +954,16 @@ static int rd_strip(CinepakEncContext *s, int y, int h, int keyframe, if (v1shrunk) { info.v1_size = v1_size; new_v1_size = quantize(s, h, data, linesize, 1, &info, ENC_V1); + if (new_v1_size < 0) + return new_v1_size; if (new_v1_size < info.v1_size) info.v1_size = new_v1_size; } if (v4shrunk) { info.v4_size = v4_size; new_v4_size = quantize(s, h, data, linesize, 0, &info, ENC_V4); + if (new_v4_size < 0) + return new_v4_size; if (new_v4_size < info.v4_size) info.v4_size = new_v4_size; } From patchwork Fri Sep 17 02:08:06 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 30305 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6602:2a4a:0:0:0:0 with SMTP id k10csp1784842iov; Thu, 16 Sep 2021 19:09:34 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzB6C/fmbrKuhlbbtlLK/DV7m8KHQJ4WRic81LZDUz9DzLF+VCS/0YFBCqApn1XbvnRkbaG X-Received: by 2002:a17:906:dfe3:: with SMTP id lc3mr9675610ejc.478.1631844574326; Thu, 16 Sep 2021 19:09:34 -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 j24si3286089ejo.673.2021.09.16.19.09.33; Thu, 16 Sep 2021 19:09:34 -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=VTx72r0h; 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 C6A1468B119; Fri, 17 Sep 2021 05:08:39 +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-oln040092066061.outbound.protection.outlook.com [40.92.66.61]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 7D25268B117 for ; Fri, 17 Sep 2021 05:08:35 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=gX97ualikj29EZhFZEd8tv+ajg9mcWeW0/DbVfY4Qccxq8H9vhYKSn1wwwVP4fVO+HlWk5ctBOzXuRbvorSz0KVJYb7EoXw1IWFxtXPTfhG/sJLcJSI3VSW/luERf8e4e7kPyZq3jhQZji85ZJpIEF3gZUh0P+QLCZuZl5bk3aJe0tOAmN+xwM2hQGwuUHFTjMX/Ay2Hy9rJHAEeTHCGrpLmNSV3AnHNQutqJzP3OzwnrVoTFoEfIeaf7eb1lbAIziXqpYplDQDv3VkKdP2b0QMR20nCADgb+ZE5Bf3bTjZOUbHNVO8DMEp+PbUXtNyja8AC/tBthytpYzdFnbaxLw== 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; bh=diiu013vM5SbGzzPD771qjCCILvWTY9ZwDDde/FZhlA=; b=TwiJGVdyA7UA6V80noeQsQsmDk/tbva0gEL5zbzKNrh99Ig/PUvuPEcZk0IEoKHgf8vV3SWHARqYArKDOSHbCdwp6LXkC0j8xPUlvBZJCxMLZKMjeNRS+ZOM3FuwbkaMNgdBUgwDhyj6HIQ/I2+CiOZcP8VmaEJJHyU+CSEwhdgxvzVwI0wGv2k7+WkSWttu7mYzR9FMzVKEUcV/KkiZtMmy3kYJ82nIoWIUvWPWcbZU0Rp1T0C/YDjfRvTyaNdEyt6Yu98iwD/4ar1TwOm0QEsivMrd4N8/HMw3D9wWnKiBLePlu2SCAxHoQEZcfGIA4O2JorqXi3Cna4WMTDHklA== 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=diiu013vM5SbGzzPD771qjCCILvWTY9ZwDDde/FZhlA=; b=VTx72r0hskzL3hNa5aoRktSYTT6zbHFMUdVW2wkQNNLJx9fVq41IOmM+oblDuDhugxbhUSWQ4sx62jKd2okCPFNNhC876tFqBxiM5nSgMc8xHPbo3cvxJQ/U4uR8xFPWhpxSodtDw0PFX6mCyPKApFXQ1ew3DI6UqbkIYfG39f1S3KsboC2B/o1gA63NZzkz7pZ2yjQGuL4c/4K6Xv8ApDeW9A0AA0AjmhA4Xglel7x5YPV18Ow0WQJ3BTdEoD/TEpaQBweroYDpNQb2H9Q0lrjN6x3jfo8ROmKQwYdVrkzx/g2LYFTzgxwE3Dsy9QypLgTQ8Ik54VHYQqvGJ3dWbw== Received: from AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) by AM6PR03MB4104.eurprd03.prod.outlook.com (2603:10a6:20b:18::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4523.17; Fri, 17 Sep 2021 02:08:32 +0000 Received: from AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::787b:2156:ca99:fe00]) by AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::787b:2156:ca99:fe00%3]) with mapi id 15.20.4523.016; Fri, 17 Sep 2021 02:08:32 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Fri, 17 Sep 2021 04:08:06 +0200 Message-ID: X-Mailer: git-send-email 2.30.2 In-Reply-To: References: X-TMN: [e4wM51gw8VQiuAMQwdldsRtEsYTFxZqP] X-ClientProxiedBy: AM8P191CA0018.EURP191.PROD.OUTLOOK.COM (2603:10a6:20b:21a::23) To AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) X-Microsoft-Original-Message-ID: <20210917020808.275498-10-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from sblaptop.fritz.box (188.192.142.38) by AM8P191CA0018.EURP191.PROD.OUTLOOK.COM (2603:10a6:20b:21a::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4523.14 via Frontend Transport; Fri, 17 Sep 2021 02:08:32 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: d260d6f2-a0fb-49ee-78f0-08d979800c99 X-MS-Exchange-SLBlob-MailProps: gjx25WM8ZNWDyOY6I9mBNa2F8wdSMbXWJ6/IrX7faoA2P2W6dWFqK4MAS1gRKjQt5Im3elirCusAmHQpYNq7g9Z63rK+XFYz0kJMtE9iwlHNjIZ056A8mY4b7btWfbMznHPGVbsU9aVYeA6/VJxbZovbg7B5LIasIyjUIsvlTxmcPPwRPUvQPP4cs7bzOeXVL6M6fBnE1GPRHsQycMY/GURKk4CeY93iemVwDj0HACQ8yuY+h5nEQVltThGnHuJk55RtIiPz4798Vx2DlDuUSbXxIz3vXK+01Vf3S3caJ99VNZUOGFzzP1MfyQrfJoLZMcOBc3HCAAShYZbyT9x1auAXM8194/Tb7rvSQTUy+GZSqb+0YdNFnc7Ou7w4mWIUqD2DNPuUviQ8Ll+xl3NMI5KdIC323SsM/nkUhwNF/7mxziUDwoyT0NayX8uVCxzM4xficlPH+6MdirUsfG0VLe6ckESAlVTkOubnezhAYuYBdFKoBh7jPd+/agVLghjNFJn+TfwEnEUvkninB5zo+Zd/OzXyFJOnemLavQDMF9c0PEMVoC842eS33ToGg27lx4OCTqo1UXfZnOabumsIDdTqj6HRGpSxosAwiz95B42Dke6rutbf80MvnRC/G/7lYNUAw6R5UbqMx5E+9d86kAkBYL7C0eu97mn/Xze4qWydm1ev+RahXEUh4JOQcc//dFb+phtCxk6V3bmAIuxw5+9eMhDz0XIJo4Y0+CktbrE= X-MS-TrafficTypeDiagnostic: AM6PR03MB4104: X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: RnnZ2KCZKdSFyZ0Ui8NeUEzE/pX5W+smocD1v7WJ142OyKJh2zAB8gzn6h6UvHHeHxm7+aKkdtMckiVuW1vNnsmGAKrSH1h26v02cFD51xVwc9HyFhEy79EkMuZ3LEytlNzjOs4M2O2mqx45BJ3dEisyS5FrUifnAqsF9JCzK0ZHptxtTAnwe9dKzTFjEwDLxctXo3IZhxOKxLp3GPzIMjyx4UJa4fVDec6rNQidQ6RMoSEwkUt1LEPcdpLgyLWcWNpoe3uHTQIt6rTvSUMEOHfL7tI9CGgYRa8euwif1b9yZTGqDUCaqPZqlQW6viz2y+ZDBt8AIHppCRiu3iHwNYHjEMbbmrh5sxEyuX2F99Uh+nKchDK/4RfpnTTLSBOzis/pBSujyvae3K45oXs9r+iivUSh0R/6Wns0+LGuaCYTTmaVlG3rmo2eEz3Xqf3j X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: RXH78GVOskmc88t1ho/BjGazfGTQm3sA/+m9mFqHP3qPubG/6NLZaCyzE1+hHE6CFTgeB9WcPI5/EtymFeeVAPLy9n2qRqcDw0o4B/MLKQW+kCevHPAM6Mku3CgZ8AZf3mX5FyWztn6LkxM27SvqxA== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: d260d6f2-a0fb-49ee-78f0-08d979800c99 X-MS-Exchange-CrossTenant-AuthSource: AM7PR03MB6660.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Sep 2021 02:08:32.5637 (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: AM6PR03MB4104 Subject: [FFmpeg-devel] [PATCH 11/13] avcodec/msvideo1enc: Check all calls to avpriv_elbg_do() 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: xVS6VKSx807u Signed-off-by: Andreas Rheinhardt --- libavcodec/msvideo1enc.c | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/libavcodec/msvideo1enc.c b/libavcodec/msvideo1enc.c index d43013ba5f..79810ec8c3 100644 --- a/libavcodec/msvideo1enc.c +++ b/libavcodec/msvideo1enc.c @@ -118,8 +118,10 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt, } // try to find optimal value to fill whole 4x4 block score = 0; - avpriv_elbg_do(&c->elbg, c->block, 3, 16, c->avg, - 1, 1, c->output, &c->rnd); + ret = avpriv_elbg_do(&c->elbg, c->block, 3, 16, c->avg, + 1, 1, c->output, &c->rnd); + if (ret < 0) + return ret; if(c->avg[0] == 1) // red component = 1 will be written as skip code c->avg[0] = 0; for(j = 0; j < 4; j++){ @@ -138,8 +140,10 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt, } // search for optimal filling of 2-color block score = 0; - avpriv_elbg_do(&c->elbg, c->block, 3, 16, c->codebook, - 2, 1, c->output, &c->rnd); + ret = avpriv_elbg_do(&c->elbg, c->block, 3, 16, c->codebook, + 2, 1, c->output, &c->rnd); + if (ret < 0) + return ret; // last output value should be always 1, swap codebooks if needed if(!c->output[15]){ for(i = 0; i < 3; i++) @@ -164,9 +168,11 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt, // search for optimal filling of 2-color 2x2 subblocks score = 0; for(i = 0; i < 4; i++){ - avpriv_elbg_do(&c->elbg, c->block2 + i * 4 * 3, 3, 4, - c->codebook2 + i * 2 * 3, 2, 1, - c->output2 + i*4, &c->rnd); + ret = avpriv_elbg_do(&c->elbg, c->block2 + i * 4 * 3, 3, 4, + c->codebook2 + i * 2 * 3, 2, 1, + c->output2 + i * 4, &c->rnd); + if (ret < 0) + return ret; } // last value should be always 1, swap codebooks if needed if(!c->output2[15]){ From patchwork Fri Sep 17 02:08:07 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 30302 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6602:2a4a:0:0:0:0 with SMTP id k10csp1785277iov; Thu, 16 Sep 2021 19:10:21 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwUOIYwIeCYyH0149uAZR3Z89koks5RTUeFmVdWuhzTVDYWoGiVn6I2LYOjD2taHFdNNwUJ X-Received: by 2002:a50:8e06:: with SMTP id 6mr9583951edw.107.1631844621198; Thu, 16 Sep 2021 19:10:21 -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 w8si4999347ede.307.2021.09.16.19.10.19; Thu, 16 Sep 2021 19:10:21 -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="H/UPESoZ"; 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 E252F68B157; Fri, 17 Sep 2021 05:08:44 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-oln040092075092.outbound.protection.outlook.com [40.92.75.92]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id BB17568B0FD for ; Fri, 17 Sep 2021 05:08:38 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=JgDIp2L0MKxOAct3SGhjpqUwEQEAlNetrqkc2/irBntvWTc5F5YQyVWA5PywBUy3d827l+snRN7CrWPDJgkqxTxePeYiGKDSsu7m1GAnyEpiYYLwxreaG9XwAEl6V2pOtZfrXOX9lXqEwQ0rMjweer9BHpJYZxvSXPuF0C4XaogcPH2nq6LUYc14qzdT9sW28mKhURDFEdUvr4eXjNTE86LRnjGLIM12iwwMsAuVo9fm8h4FPV6Hw8Y1VEh5OYsGW2Op0a3VioAUMeBhGaJ62e0Ul39gttb3+jNP6k2Rz0eWowhGaDH96wZrX4J4RdOU2IVK96nLzJS9OT1NdyHjPA== 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; bh=HJkz+96Ld2pGL5u4wMHvi8KAdhb0Tnqb1iKlz4M4Ts8=; b=F80BLmKg6lmHbD+bVKCCOHFiI/SrotMn8pd5PbWQQebxjE7csCbw5vO544OiHlKOTe2PojQWbRCwDzWO8FOh1f+2h6NudgJpFmzngMwbn5aG9ZdXqrZQN+fnWWZOE+r0tUDnmD2ZCYRwiHiZ6EH0PkXUFo8otC4043spl4exo3sdbn731znxxnLpOoO8FpyYN2nZdaC7jXIhhfjDpq5+PQ0ntioMe03WvIE8HH6bdHi3K63bLFivtLwHGS9Bgpd4GiPJm4aMbFMSfwrQlNVScojpi5KAbwgByjundLO6dOW1eb3FZF7srR/9WSjEzvQWEM62Z18a/qEQ/32DzDbK4A== 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=HJkz+96Ld2pGL5u4wMHvi8KAdhb0Tnqb1iKlz4M4Ts8=; b=H/UPESoZxXkFsd7lHHhnOJ47pnhF9iTYS6FUEC9PywhN6auflm2EQJ4x3KxEYfjTZgXPpms301JzNE5c30seRrZHBERb3k/KBtfFErnN3A9tDE1cxQ/4UcRAkpWA21zcohJSLzwYdd4UuVbSyrYKYZukkCbV4Wnem6g4Gni+LBfKxtEnMYixLGB2wE89FIP0hGCsJn58enGKw/gC+SjclZjcZt3g09IGKSc/raWF9H6+18VIg3flgWe2zZfSX3NLQA+8dJuG6P8Z3Gu+ID3jXc0OUWexhTFRYmr4xz5stOICxrd5/s8h16mwolPh/6TYiy39GLOXSFWn7mwVuipz+w== Received: from AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) by AM6PR03MB5297.eurprd03.prod.outlook.com (2603:10a6:20b:c5::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4523.16; Fri, 17 Sep 2021 02:08:33 +0000 Received: from AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::787b:2156:ca99:fe00]) by AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::787b:2156:ca99:fe00%3]) with mapi id 15.20.4523.016; Fri, 17 Sep 2021 02:08:33 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Fri, 17 Sep 2021 04:08:07 +0200 Message-ID: X-Mailer: git-send-email 2.30.2 In-Reply-To: References: X-TMN: [4wzczyOxh5eA2WlPRhQ1EIK03PoZLBfa] X-ClientProxiedBy: AM8P191CA0018.EURP191.PROD.OUTLOOK.COM (2603:10a6:20b:21a::23) To AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) X-Microsoft-Original-Message-ID: <20210917020808.275498-11-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from sblaptop.fritz.box (188.192.142.38) by AM8P191CA0018.EURP191.PROD.OUTLOOK.COM (2603:10a6:20b:21a::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4523.14 via Frontend Transport; Fri, 17 Sep 2021 02:08:33 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 5ac8680a-a558-47bf-a436-08d979800d3c X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiQB5KKqMro6wr3957+0yV3UPHqjgAfOTsEEuuY66i4Lf2VbVho8AeEnmFDd0o+8rjFRx1nBueRqj/eiYbexJ5qJIP/4P0aWq0ACmafa5MK58AKaXJLkHaRcfenzPMQrnWtLNsZ8BsYz2Q6GNCjPkpAzpA3s0i/ig+H7I1e4uslzDIWqLODzhZlR0GYfkzf7eMGaE97TLFkbkyVT+CEqyZhuZdvRYeaCOzhGOJGWr+eUl3UgiiGoLCXi7lixQ3/5wQ2ZXQLN4XLQcSTgcGcV6+xyOOcYPSPHFbBjwHJSujJt8ybh3imEqCqN/JMacHaRg5RIUVeHDtEGPWR1Z7acEkH48jB48HcIp7MkHv0ykHGRrde6s+8py/79NQehy7oHwVAo4N2XU/uw89gCYpvFFUmgFZWLJ+g1HRnzeL9UiOwJ37vU3N2lQ9A2/K/Ay8siCynSFuO+pFJeb95MMAKF7xbSlqEJ0kRK/W9RlZARB/WGFORQxdeDc6vj09ilWcq/E0SddkGpxXPu7t6f3Hepz0wydIWXyeLp18ySNpDaVE97OKlrvFtPbbcIz/bvMGy+qShIaeL2rIuY15fYqzatoxyK283tCPoir9q8uP+TjtQZzM0AfJWmPcelDxkqPT+yAp4waSr5NdBuxgPq0bwkuoxGS3AtiBtWiQUba3/K6bcQNreIbiVV/nMD7igYQclgVeTH/54Z/VOAS5N3hNGMU44vzuqVpDuE0oWLlsd48OZOSAIxFmclBvT12Mklv8Aaje4= X-MS-TrafficTypeDiagnostic: AM6PR03MB5297: X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Ouh/QlxLyxBbADP/bNg/XDisFOKDVHKo5l8zZ+B8ptpYX/d7EXPaSa7M+QjIJERktG9HwvUeXGGNpVq8VgjOj2kPtJ0Mkv1DcGnOYz2Ajo4fxQspQOOARIG6uj/+laz08lEWWf1+9L+mSFiIZGE6XUrqfkK1d1EAqqVHzRzrghruwDmkL4hgiUFJeGRzD6f2duTiO/6GUy7qe+VKVCRJEXOmir8JhWI1v9GRA/6Mg8i0V9vveUtMusbx2NC2/xmOvNJ8VuPd0m+VG3Sl4AkQhaM1ytG5zhS1CYaCU9Xzghhb3gaM6Ws21feEwB0TeZgiubUHzAkg8islWehrpouoMArdcZhUbPvqijiviWSZoHcVIxSwBoIvR04Jlowx9WATk20vLVyyJPJLnZN1hyMCJtLUS0js6dMY/VrGnLngLIOZvn7zVTkg86Mi5CXYt7+i X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: B0xMkbnVtRWILTQr5g+NaY/hV4Q72nciBrOBCCvSa7EdxO91F/xwkBqrgyfUwA8o/veGtKOW3vBRQU5u7ruKIiLZwuep3uLUE9qHx4BUejeHZzZbzpTuUh92un2Wwq0/RH2yZ3sdAeUpKfawX7qAQw== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5ac8680a-a558-47bf-a436-08d979800d3c X-MS-Exchange-CrossTenant-AuthSource: AM7PR03MB6660.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Sep 2021 02:08:33.6370 (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: AM6PR03MB5297 Subject: [FFmpeg-devel] [PATCH 12/13] avfilter/vf_elbg: Check call to avpriv_elbg_do() 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: xK5LN4DoFIUH Signed-off-by: Andreas Rheinhardt --- libavfilter/vf_elbg.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/libavfilter/vf_elbg.c b/libavfilter/vf_elbg.c index 2c9c861d02..fac3b6f7fe 100644 --- a/libavfilter/vf_elbg.c +++ b/libavfilter/vf_elbg.c @@ -142,7 +142,7 @@ static int config_input(AVFilterLink *inlink) static int filter_frame(AVFilterLink *inlink, AVFrame *frame) { ELBGFilterContext *const elbg = inlink->dst->priv; - int i, j, k; + int i, j, k, ret; uint8_t *p, *p0; const uint8_t r_idx = elbg->rgba_map[R]; @@ -164,9 +164,14 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *frame) } /* compute the codebook */ - avpriv_elbg_do(&elbg->ctx, elbg->codeword, NB_COMPONENTS, elbg->codeword_length, - elbg->codebook, elbg->codebook_length, elbg->max_steps_nb, - elbg->codeword_closest_codebook_idxs, &elbg->lfg); + ret = avpriv_elbg_do(&elbg->ctx, elbg->codeword, NB_COMPONENTS, + elbg->codeword_length, elbg->codebook, + elbg->codebook_length, elbg->max_steps_nb, + elbg->codeword_closest_codebook_idxs, &elbg->lfg); + if (ret < 0) { + av_frame_free(&frame); + return ret; + } if (elbg->pal8) { AVFilterLink *outlink = inlink->dst->outputs[0]; From patchwork Fri Sep 17 02:08:08 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 30300 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6602:2a4a:0:0:0:0 with SMTP id k10csp1784926iov; Thu, 16 Sep 2021 19:09:43 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyFgBPL0Fk7mfdyk4UH38UfhIZnDAvJ2JmUnEMlADe3JWFqMEhcYBu8/QpeiUucMSnPMew/ X-Received: by 2002:a17:906:ecf4:: with SMTP id qt20mr9528911ejb.375.1631844583489; Thu, 16 Sep 2021 19:09:43 -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 2si2004962ejl.511.2021.09.16.19.09.43; Thu, 16 Sep 2021 19:09:43 -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=kj24wMYM; 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 13C4D68B11E; Fri, 17 Sep 2021 05:08:41 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-oln040092075068.outbound.protection.outlook.com [40.92.75.68]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id A5A4268B115 for ; Fri, 17 Sep 2021 05:08:36 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=KyX8N6E8eTw2ksg6AekLI59AgChpUXreWXG+yRvEGXi7UBV0K0OEQxNheQa09AcTK5vHnvL+BmjjD339gMyYXvQeb1XKUI3gIPAveF11ZnuPFcvMRveAde2Dqz6yExxJRTK7GBZlTEatcm/GtUdIWUTI/FRpxONYnJ8EkmOX3/BlAAi/f+/mVwfXQHfhiIYUBRPVvL3GclLC5BAPx2pnznnKZgww4wvynZqSzuWgmykXn7gIDVblXm14aYCu2rVVXJ/J0kx327Aga4tyyCuAfzbHSowV1SiICq/wuhI4RDcUyABhx7WF6EhVcXWxlYtq6m855BynKFbMfOWXd1fwUw== 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; bh=5G+NX1Q8OSbNATH4EnCdoAOTZTXxFM6HHG0UkaPGRvA=; b=alHDXJEPUt/q36iwZuryu4NJEWKefX4T6PP+z9jXOvrGcN8j045YFk6yn8gnphHXKMClTpkS1GGHrCOb5W/jEjihZ4TCX7We2iB4rVqFucTUCaZU2UXmtzsSHpjaI4bdA0CGy6+Hma+djkamCuzJP7NC2kl8aoaDryVLKDQGgRRyY0sZejU83TCD1BwdLCjTaqPGzsEjV4qZgiXEGKgwwtVFjTHJH+MZxTH2xEOSx34pMJApDopHlRYwFZ6ZWm/zfZVwgvk/CQTy4DHIdQcpDkokx2QGQKDjd7SXycauJRuXAmXnA6fyvevcRFyJ9cpImsXKFLCLT1VjeIxPlEz1vA== 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=5G+NX1Q8OSbNATH4EnCdoAOTZTXxFM6HHG0UkaPGRvA=; b=kj24wMYMnazmQIys1DJXMo6ANgqL0MuwlIurE2P0NXfV0aDih0k5ePuKjSswKDbNeG9xpbLHWZFWEcCpo7X4DLYCyn8uA62nmMuL4ZCJkLaggV3gq8fhBa5fZmSjhjUqU65vvAd1/6tS53k1ZmTtcTz2PJdlwC3+hOUkWc2v6K5zG9OlVJcm0l/DyeBDf7UkKgqVB2EAy8GQWkaNYoAEhSC2XnvamL/uTtLga+FXoWm+tso7MvkCScyN+7h+dVgPvGQUPzT1W8Df5laXZOSwP/sL9x7G9QucHGjtrrx5clCzzCkJzEaTbJDmpglPSkZi31/GDJTv854JuPE3zejwiw== Received: from AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) by AM5PR0301MB2353.eurprd03.prod.outlook.com (2603:10a6:203:9::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4523.14; Fri, 17 Sep 2021 02:08:35 +0000 Received: from AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::787b:2156:ca99:fe00]) by AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::787b:2156:ca99:fe00%3]) with mapi id 15.20.4523.016; Fri, 17 Sep 2021 02:08:35 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Fri, 17 Sep 2021 04:08:08 +0200 Message-ID: X-Mailer: git-send-email 2.30.2 In-Reply-To: References: X-TMN: [peocyIZREOwb9cFDDms+JrqLdazGlIwA] X-ClientProxiedBy: AM8P191CA0018.EURP191.PROD.OUTLOOK.COM (2603:10a6:20b:21a::23) To AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) X-Microsoft-Original-Message-ID: <20210917020808.275498-12-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from sblaptop.fritz.box (188.192.142.38) by AM8P191CA0018.EURP191.PROD.OUTLOOK.COM (2603:10a6:20b:21a::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4523.14 via Frontend Transport; Fri, 17 Sep 2021 02:08:34 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 9cc55acf-2f51-4f4a-86d8-08d979800e08 X-MS-Exchange-SLBlob-MailProps: q+fD6XS3/ULHQVHO031XvYglgXuzPUZX3QyfIzwIO1OAW7RwbBrEQz+SBc4vMUyC5ReJfiMjECTzovxuZJKrgpfj5+mT8+YJBxvzP0wpUycQK7bqXydpqm2XKyKJwwDghBmP17D0ZvepHJ6m/lwTn+QP8uoNPGxIMf2NjgfQ9QzG9LiGiII9sBjmNTfrfJFb8hR0dgZj5puk7SOuH6IkmQAVl5BJa8WvtKeN+M+mek8EO+PvT289TxZLVW8TPswwVNhPf1Uyyaztg3FPh6B2NEk7IU6QxBBsoz7FY60PA9rkgrpXVOng8nyLo0tut7E2A+8g1vWXse3sSyBTTO6Ema2FLLRYUfJHOsuzY2fTalzX/YhyWm0ACkU+GnqHu8UqJcePXWfXJ8rlD5GaK39xbj40BKjNjut6tZ93tb0Zu4GahyfQFyK/wyoMMiyPxxQcE1YdaRbG3licPs+Ilgug8146j8uZcf9iJWoABA6XPWJgpSbpe4LmLAAcICuuWdZkwO1zBsb2w/mouBjCRdprJPNku5gAXwtfEOa4CGTJ5L7v/qlYzZXXLf8ZMbh4aGRwkMNGeIddWHN0PEfhGnZK9openoGblvXVj0OPhxF7MuVu2Wy3YhCqfnNKVKK8qlsG1bjVcMob4s7/p8CTvlCE2qGpnxMUZdEO+v2x5NBhlAhVHJSX/vvgFBJk7YBkc139EKnqA3tTtqrOf0MOR7/6sw== X-MS-TrafficTypeDiagnostic: AM5PR0301MB2353: X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: B6nfuFXs/rgsTJmuIVW/DBWl+dtFfMCCvnBGXsn02jjiqIo/OvgFBLpBHV7sM2plRKyGohYBabVeCMbWVGZ/0TwJXPhlf4zmDWl57jGG0SN4sLYwJY2RnoEPrHi/cIKkCQwSUAu6aHaBhYwkDL65vDYo0eI1LTt+j16XQ1FqsBcjqO5medPbEReW7Nkn/DXQT7ePRjK3rbmNjxBeCje+bheHiBQNZ5LXo6TELKttBBBwk6JFJS22acwnfPuuUTtFxD+3922IQmuFZoapt+Ij9Zt8Qi4jjKVVszn+JEouENO5m0snCH50FXwu4g2sANXN5URVgOH8jQZWT2hh333IYwvR8tEode6Os5YMXvBhnc7CX9fCbnACqDmrYYPL7c5u3IwCGCkjLWg1R3fDkDzpaYoseNZ9mxBqhUHjpx2KenBAMwAgtoFG4FUThLxtUrVk X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: YqtSCU2/ZFFWR5C7yRafcMxK2R9LmSkwQXfJz2ibsAG0vIkkPWDiIlwBYSZDUv6RibyFPwz+kWZFx87wUsbjheE2k2VKlMa6TXbiOsRHmtk4/gDm8I2qU09sIXrgZ9rj5CtKZCA6KNVShvguaghbBA== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9cc55acf-2f51-4f4a-86d8-08d979800e08 X-MS-Exchange-CrossTenant-AuthSource: AM7PR03MB6660.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Sep 2021 02:08:34.9762 (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: AM5PR0301MB2353 Subject: [FFmpeg-devel] [PATCH 13/13] avcodec/elbg: Add flags to avpriv_elbg_do() 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: voUWEmzpnDw6 This is currently unused and it is only added to enable changes while maintaining ABI compatibility. The type is uintptr_t in order to potentially accept a pointer argument. Signed-off-by: Andreas Rheinhardt --- libavcodec/a64multienc.c | 2 +- libavcodec/cinepakenc.c | 2 +- libavcodec/elbg.c | 2 +- libavcodec/elbg.h | 4 +++- libavcodec/msvideo1enc.c | 6 +++--- libavcodec/roqvideoenc.c | 2 +- libavfilter/vf_elbg.c | 2 +- 7 files changed, 11 insertions(+), 9 deletions(-) diff --git a/libavcodec/a64multienc.c b/libavcodec/a64multienc.c index 71a620b4ff..c368ac218a 100644 --- a/libavcodec/a64multienc.c +++ b/libavcodec/a64multienc.c @@ -338,7 +338,7 @@ static int a64multi_encode_frame(AVCodecContext *avctx, AVPacket *pkt, /* calc optimal new charset + charmaps */ ret = avpriv_elbg_do(&c->elbg, meta, 32, 1000 * c->mc_lifetime, - best_cb, CHARSET_CHARS, 50, charmap, &c->randctx); + best_cb, CHARSET_CHARS, 50, charmap, &c->randctx, 0); if (ret < 0) return ret; diff --git a/libavcodec/cinepakenc.c b/libavcodec/cinepakenc.c index d1bcf2b2d5..edb553f0db 100644 --- a/libavcodec/cinepakenc.c +++ b/libavcodec/cinepakenc.c @@ -764,7 +764,7 @@ static int quantize(CinepakEncContext *s, int h, uint8_t *data[4], size = i; ret = avpriv_elbg_do(&s->elbg, s->codebook_input, entry_size, i, codebook, - size, 1, s->codebook_closest, &s->randctx); + size, 1, s->codebook_closest, &s->randctx, 0); if (ret < 0) return ret; diff --git a/libavcodec/elbg.c b/libavcodec/elbg.c index 2bacf5b773..712c125a58 100644 --- a/libavcodec/elbg.c +++ b/libavcodec/elbg.c @@ -445,7 +445,7 @@ static void init_elbg(ELBGContext *elbg, int *points, int *temp_points, int avpriv_elbg_do(ELBGContext **elbgp, int *points, int dim, int numpoints, int *codebook, int num_cb, int max_steps, - int *closest_cb, AVLFG *rand_state) + int *closest_cb, AVLFG *rand_state, uintptr_t flags) { ELBGContext *const elbg = *elbgp ? *elbgp : av_mallocz(sizeof(*elbg)); diff --git a/libavcodec/elbg.h b/libavcodec/elbg.h index abeeb4ff44..34d96846b1 100644 --- a/libavcodec/elbg.h +++ b/libavcodec/elbg.h @@ -21,6 +21,7 @@ #ifndef AVCODEC_ELBG_H #define AVCODEC_ELBG_H +#include #include "libavutil/lfg.h" struct ELBGContext; @@ -41,11 +42,12 @@ struct ELBGContext; * @param num_steps The maximum number of steps. One step is already a good compromise between time and quality. * @param closest_cb Return the closest codebook to each point. Must be allocated. * @param rand_state A random number generator state. Should be already initialized by av_lfg_init(). + * @param flags Currently unused; must be set to 0. * @return < 0 in case of error, 0 otherwise */ int avpriv_elbg_do(struct ELBGContext **ctx, int *points, int dim, int numpoints, int *codebook, int num_cb, int num_steps, - int *closest_cb, AVLFG *rand_state); + int *closest_cb, AVLFG *rand_state, uintptr_t flags); /** * Free an ELBGContext and reset the pointer to it. diff --git a/libavcodec/msvideo1enc.c b/libavcodec/msvideo1enc.c index 79810ec8c3..a8761bdd2e 100644 --- a/libavcodec/msvideo1enc.c +++ b/libavcodec/msvideo1enc.c @@ -119,7 +119,7 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt, // try to find optimal value to fill whole 4x4 block score = 0; ret = avpriv_elbg_do(&c->elbg, c->block, 3, 16, c->avg, - 1, 1, c->output, &c->rnd); + 1, 1, c->output, &c->rnd, 0); if (ret < 0) return ret; if(c->avg[0] == 1) // red component = 1 will be written as skip code @@ -141,7 +141,7 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt, // search for optimal filling of 2-color block score = 0; ret = avpriv_elbg_do(&c->elbg, c->block, 3, 16, c->codebook, - 2, 1, c->output, &c->rnd); + 2, 1, c->output, &c->rnd, 0); if (ret < 0) return ret; // last output value should be always 1, swap codebooks if needed @@ -170,7 +170,7 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt, for(i = 0; i < 4; i++){ ret = avpriv_elbg_do(&c->elbg, c->block2 + i * 4 * 3, 3, 4, c->codebook2 + i * 2 * 3, 2, 1, - c->output2 + i * 4, &c->rnd); + c->output2 + i * 4, &c->rnd, 0); if (ret < 0) return ret; } diff --git a/libavcodec/roqvideoenc.c b/libavcodec/roqvideoenc.c index 316adac45e..78c84c6f65 100644 --- a/libavcodec/roqvideoenc.c +++ b/libavcodec/roqvideoenc.c @@ -826,7 +826,7 @@ static int generate_codebook(RoqEncContext *enc, int *closest_cb = enc->closest_cb; ret = avpriv_elbg_do(&enc->elbg, points, 6 * c_size, inputCount, codebook, - cbsize, 1, closest_cb, &enc->randctx); + cbsize, 1, closest_cb, &enc->randctx, 0); if (ret < 0) return ret; diff --git a/libavfilter/vf_elbg.c b/libavfilter/vf_elbg.c index fac3b6f7fe..0bebcdbda5 100644 --- a/libavfilter/vf_elbg.c +++ b/libavfilter/vf_elbg.c @@ -167,7 +167,7 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *frame) ret = avpriv_elbg_do(&elbg->ctx, elbg->codeword, NB_COMPONENTS, elbg->codeword_length, elbg->codebook, elbg->codebook_length, elbg->max_steps_nb, - elbg->codeword_closest_codebook_idxs, &elbg->lfg); + elbg->codeword_closest_codebook_idxs, &elbg->lfg, 0); if (ret < 0) { av_frame_free(&frame); return ret; From patchwork Mon Sep 20 21:18:19 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 30387 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:6506:0:0:0:0:0 with SMTP id z6csp1820067iob; Mon, 20 Sep 2021 14:18:45 -0700 (PDT) X-Google-Smtp-Source: ABdhPJynn9sj3hhSEeJIPKQu+YKrfFNpZjyDYVEMf2dMpfL89BePQ3vsyG3hLdPIGBj3UnYpJ66J X-Received: by 2002:a50:bf4d:: with SMTP id g13mr13162812edk.195.1632172725019; Mon, 20 Sep 2021 14:18:45 -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 s26si654638edi.291.2021.09.20.14.18.44; Mon, 20 Sep 2021 14:18:45 -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="ggMv3/mi"; 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 55D2568AFC0; Tue, 21 Sep 2021 00:18:40 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05olkn2022.outbound.protection.outlook.com [40.92.89.22]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9047668AE52 for ; Tue, 21 Sep 2021 00:18:33 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=b4QHcyFVvztepDvBnphgkyzp5au5OGg973g7IVYlh7cG65Ee5FkzROBfwu7a0+2jLL3sszXPNctd95PabKDf/t6CZZm76kkh4/3v79wu7OQ6nFTa21WdHy/yULfpp1fZ7NP9pbihvRYJYw3XCCSyIsIhBP4sqx46t4fZCegRhvGKYYZsTmVQlCGsdgrOasPM2NfPkZG7u4OCZu5nFYo8ZwkWaWx2TR+U+O0p0Xs7P+cnbDg8bD9zaXYVHzZWPm4bbWhMgyhlzXCE6ZQTc+YJdSPHFqMP/cbtIxJslbw6pg/6BqE6gj6b8PBxgaYW7vJVjP1RlsxG+KUfL5L+2yjljQ== 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; bh=xdl/+PhttUujRkb4fEY5B1R1PmqLhZA1KdwxPtI8FcY=; b=dOJBgr4/DWhT0nhFGADtUoQJbSmspS3LYZW6ebCiMU28JValaeDbBp4aiUZ3tnvHA8rqvYi961ZlsK0RKWv+TSg82AAeKXf3iDRWjqZFlLOEM73sL7cqx4HvupYdzzanrtFjUssgpCpcZpUSYEqL13XU/AXOpL4DCfDYN1BXfKO4YnUDqGGj9CxNBCALeJGEe6oJfvEZQkUy3P5JwvCxTV+WKPvnTYgjqE8SIgB+HXi5J7oDecZPRces9mCJi7ANE7QnOvmO9Nilv+JtFg34boISOI82dvBuE5RtUSEACL6GzN1foBjLi0RS5w/oiyoc2F3rgreS+JIBnjDuGybw0A== 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=xdl/+PhttUujRkb4fEY5B1R1PmqLhZA1KdwxPtI8FcY=; b=ggMv3/miA58zeSHYhdv+kgbi8Apym+D9DO7Nam9dikHH2na82e++57GOD7b0CdrmmzwLpYOesD8C7eDjOvqf+OeBZD67lZmszi8I4YMNbfKBjKqk0siV2I2gNfOO55w5j+HL4/vuVSgHJ1/TGdRB/tybzDJkaicWEwIK5jrlVV/TeQrO4efWyJdCOSnYApdMLFkmHCA+kBNsmf/OgK4zNAU6rcrC8IwcPT92wJ4upFVTJ77Axnh2bwt65FsGrDOTbgrkaBr1NjiLVFYvOOS3Wj4v4FCwtIn6i3oRawAboLDrhNF07c9gD5xFmAApvc2Xt7+UTMZrRxNJ8XQhXq8kFA== Received: from AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) by AS8PR03MB7301.eurprd03.prod.outlook.com (2603:10a6:20b:2eb::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4523.14; Mon, 20 Sep 2021 21:18:32 +0000 Received: from AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::787b:2156:ca99:fe00]) by AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::787b:2156:ca99:fe00%3]) with mapi id 15.20.4523.016; Mon, 20 Sep 2021 21:18:32 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Mon, 20 Sep 2021 23:18:19 +0200 Message-ID: X-Mailer: git-send-email 2.30.2 In-Reply-To: References: X-TMN: [kzT49aIwqfsWbmPIaHH0EozVlnAMPJu7] X-ClientProxiedBy: PR0P264CA0073.FRAP264.PROD.OUTLOOK.COM (2603:10a6:100:18::13) To AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) X-Microsoft-Original-Message-ID: <20210920211819.3306202-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from sblaptop.fritz.box (188.192.142.38) by PR0P264CA0073.FRAP264.PROD.OUTLOOK.COM (2603:10a6:100:18::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4523.14 via Frontend Transport; Mon, 20 Sep 2021 21:18:31 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 7da36935-8c2d-476b-bf8d-08d97c7c32e2 X-MS-Exchange-SLBlob-MailProps: EpEO96k6WokNgi+oLauEIxHNyV8zJzdjMpCubdEZxbP1BS1lZq61pRJvW+GYAd1AsSyhjaNVn79hEr7X8GFwtuTQ4dpBswV8qWHvXbugBpZsleeFHjPUmBizGDXLtpy0fgaHvi2zjCHg9LFC8z7L+zVBHZ369Ga66b72zZwZ3OCE56H92OuhZBK1pjuooDdw7XFlP73py8aZsfXdBvFgu9/U9K4oCelDibdot5QR1WAbXYtko8WPULXFNdwYZ2uzqGwNnJk2DpdOFnq7vQQDOir+a2iJVTKpkE8VqoREXBved3aAvujyy4WHayGSRy7HeQAJLJtahNMqtCYY7enkkpVc8FKlRee15n32QySArGJUbOQGDNI+G1MpOYK9EJG1vVKsOma6RpDWvui3JXFWbHDUgZj57h4vLJ5foHkF4VlYl9X5KTf2IBeAmDgJqyxFFK6dNYR8mtsHJIBy7zbkoS1NemAwh3RI/QI3zykw615uXgXTOjjj7TK9g++OAiKMyJn8U6xBe8xfEOETA/SZWgt2NaoLpVzYSqqHtPsQTZveVam6SmlZhFtbWOqPioK8d3EuWMUKBbVj2Z2rUy9PXBaDyD8mEdp/AnAQUKCfXX9ZVobjwU3Vc7n23QIzwuzEVkGZWyXrqiqVCGOlePu9je6g80dbLShGEVfhC1T8DtXXOphDWydrmDuYroD7XESzTwc1AKRclx1WPgAhOsw8gA0GDFAXqREoJ8CBpfKQW6+2x+7c/rItiYqc/F0rlj0+dmkmeJJpA1s= X-MS-TrafficTypeDiagnostic: AS8PR03MB7301: X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: oJfJ/at3wUFRL3/Qb3UTaVW+9KvFMwjIyeueBbYttBXpetOKirvqLdKYza8pK67pw3uKotrLsvA8s1+jvMTSq6kPbBa8XgnICsGusKfwkjKnoRWipvFcH3WpyjMp83NadztVCwfMies9jR/dYCDatqhEvazn3kgSYGS5hAExiAnul4nJHE2dILU68JiV6R52BHBaGjI9OMPtq1F5WcAzvYlQqhigUO9PcyHs6pI4BexEkK6RP9Lz9OWJGiN1mQ7kJ4d0I2TC6hbt0eOH7CpeDKUd2KpRfO7yh2UwGfiMAznGjpNS7687aVH7xVzUAl7Cf8DSLxbg3mZoyPygcY9q63HiEcTeO2lvjgRQUGT2rygx6XHGjWP6zjSYCifZl6IctQM3fWNezmfN3h3p2CWxX+wbeSXDSNJ+YzN207V549H37QpYo2ssKhAZfwfI1ex5 X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: pG0V5m/WL6bMHdh0/2zhowShqey4C2TKQ170k4+k847VvhlDzFG2NNh0HnJZETpYELpd1DlbQzAx2SyohVc3K9jJjNWKTiJl+ic/dIqIYQcrFix88pksyiV1pNO5bn8XCUDqgu9NosaEIKrZ/GfXCg== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7da36935-8c2d-476b-bf8d-08d97c7c32e2 X-MS-Exchange-CrossTenant-AuthSource: AM7PR03MB6660.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Sep 2021 21:18:32.4192 (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: AS8PR03MB7301 Subject: [FFmpeg-devel] [PATCH 14/14] avcodec/elbg: Mark ELBGContext as being unaliased by using av_restrict 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: BwiFA+iAiU+G This improves performance: For msvideo1, the performance improved by 4.8% when encoding the sample from the fate-vsynth1-msvideo1 test; when encoding the sample from fate-vsynth1-cinepak, performance improved by 2%. The compiler user was GCC 10 and the calls to encode2 have been timed. Signed-off-by: Andreas Rheinhardt --- libavcodec/elbg.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libavcodec/elbg.c b/libavcodec/elbg.c index 712c125a58..d97a7bc3f9 100644 --- a/libavcodec/elbg.c +++ b/libavcodec/elbg.c @@ -346,7 +346,7 @@ static void do_shiftings(ELBGContext *elbg) } } -static void do_elbg(ELBGContext *elbg, int *points, int numpoints, +static void do_elbg(ELBGContext *av_restrict elbg, int *points, int numpoints, int max_steps) { int *const size_part = elbg->size_part; @@ -419,7 +419,7 @@ static void do_elbg(ELBGContext *elbg, int *points, int numpoints, * If not, it calls do_elbg for a (smaller) random sample of the points in * points. */ -static void init_elbg(ELBGContext *elbg, int *points, int *temp_points, +static void init_elbg(ELBGContext *av_restrict elbg, int *points, int *temp_points, int numpoints, int max_steps) { int dim = elbg->dim; @@ -447,7 +447,7 @@ int avpriv_elbg_do(ELBGContext **elbgp, int *points, int dim, int numpoints, int *codebook, int num_cb, int max_steps, int *closest_cb, AVLFG *rand_state, uintptr_t flags) { - ELBGContext *const elbg = *elbgp ? *elbgp : av_mallocz(sizeof(*elbg)); + ELBGContext *const av_restrict elbg = *elbgp ? *elbgp : av_mallocz(sizeof(*elbg)); if (!elbg) return AVERROR(ENOMEM);