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;