From patchwork Sat Feb 10 23:04:04 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 46162 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:a586:b0:19e:8a94:b663 with SMTP id gd6csp1752559pzc; Sat, 10 Feb 2024 15:02:36 -0800 (PST) X-Forwarded-Encrypted: i=2; AJvYcCUluvyyLNtlw4o7vfL1TrVFhdMkIeyZUzJDhlCItPYcK1lZm8uiXH5n7/37UqAC/+PNXgFij15lxzsSieL/4fQ/WGj5ri6OXAanzQ== X-Google-Smtp-Source: AGHT+IHRUtTGqH4OBgAOdhb68FWAC8vKq2NNcH1W3iZJNDApfeAaJjiY0KPRcyyAj1su6Nzoohwa X-Received: by 2002:a05:6402:528d:b0:561:64e6:b5c with SMTP id en13-20020a056402528d00b0056164e60b5cmr2536436edb.7.1707606156740; Sat, 10 Feb 2024 15:02:36 -0800 (PST) X-Forwarded-Encrypted: i=2; AJvYcCX2/rBzMbbcjytSS6W9zOFzA4XmIIh5DKqJNDbqr0eCQlf+rXRwx0oTbjwullzgQpt98Z//RdrA2j7Q+yCKtPxw14ReaqEWG8BKcK/QXj/8g2JAHdtRt17Ree1UbEXhSlT3+Ee7eo3zNVo3pmAdHtDaBXQYgbbtqjd+Lic4sB8DMkK/9YF1FFx0WLqZB4MSOFTLAanWFLE5NHnhODnHjXCW/F8nibEvwYVBqOqrSL+WSrXvIIeuAM5DWz5p8QgprHr5QwkTHRf2U6hoo2RjdXeBsGHrnSI1BLJ7SAYIqKr8L9NuoVNJO0tqxTZzj0CiVR0IgR1548wTJFZOyPtzjs1g2i2b+vfEhcnNW9ayrhm1eIuahs2g5EoA2KpNiqC0uWpH7/o7yNmFLV5+BcHN237PfI/CKUTBcVkyd/9K3jjYQc0JMGeK+vY63Pmmn4g193Y2oIX+E+Oo0/HEC5fqR9Ojm35jvzmYnYnnDtcT0BF0Cjdhj/90xH+Z0/M59Dzj56FhmWGqyn1BA98YoHHMho8+I7Ww8R2nBw3zje+TAUwfbqVWhucvIahqb5gf6yFK19CfhPXDAc65M/wz3yDm52GO4IQY9LvIpFUqUAxBTFLjOkIr5Jv8jTngbpLLEMBcij7QejSQa1hZEzDxdMxjUzDynkAiQggzZUcMAWoXUhDnyn7vBEATjrnoLvOJkioHdkvuYNUuxJ866p8qn9MU+6sWsFjX3Rv+6GKCkxard1ulRwf10pXcDcdqGq7stixHNfrMUnOBHX4l/jRccOHyPkx1Fzo9fjOA8NdRcSA+UdKTawMTPAXjKU787pzCGoFGlRIzNjYfow743P8ScEjxcJOMVPjCCi50DGRKh339yLGK5wTbybQcL1fhoQ8zvwxl9wWThmlaBiX+xsLWRJgErXc8Ttpmlt+9q9/uwX5roUskvecF27q1vdHKUMF5KayqjJoAmA NULOpVY8OI0sy0rXhjmYtoWm44nNzAKhdHecUMcukoNz7v4nF1qgnH2oZA7t0+Q6U2nmrdkKwoOVJOpQ/GZ+Iu121/z6pKhIwHdOLYLPhl0jw839iSCnM2rxx5R855tDR678HieaPlLbQwZ5Qwl7vhFHVd8g2mr+lUcpuMMjvivi4TaNQ2tW1vV6EnDPAg/ucJu6MhWEhPUPRZMuY4NrhX9hrk8AV8cJ+LH7CCanPnFlEmd6o2Dh9mJ36v40KVB9ZIXNdB3SjpK8DTPonnaTgKj7UTDoSrYNp5cjhkD+88gMcC/muIzCzNSHomOSwmCcy3Bn4WIYbolU1xCD2wA42Yluy9YT0hcwmpywVKTztC8A509esUT/APdX/za7kp0d+HDY+nz36ETY7V+BNR4XDkm4rxco60Ps6CNGny0eedWmSTCRKz/nvzLaOOVjwRwiZQ40nljbRo8n9Ywe8XNv97FO2oLBRCy0MuXyiQNKDdAygRm7ICiZ2RuStytY0EMO7z7mMWYlo2XFurhJYLLt3j7u/TFndrT5Ssjs2cRi3g+n/UO3j8eLKk0wD9Suo6Btrhqf8QJ6hDCtKDwwKkTrQNd7gieZdu Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id w5-20020aa7dcc5000000b0055ff9c2cecesi1185004edu.369.2024.02.10.15.02.36; Sat, 10 Feb 2024 15:02:36 -0800 (PST) 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="mU4zrQ/z"; 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 6B30668D0F5; Sun, 11 Feb 2024 01:02:33 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-he1eur04olkn2058.outbound.protection.outlook.com [40.92.73.58]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id A7CF7689245 for ; Sun, 11 Feb 2024 01:02:26 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=eqWaKwqvLmFijAeUYiBfFSF34XQlIFE7digeA7S2s6PsjZZp1+F5RXpxPD02gbvqqpM5RhJ8kLPXEJ5Ws/09NmzW66USK9XVkKUXlCz9xFCYmUkypoA7YYAcS5xAVGtUTM3dtBoYbaIkmlsAVl3FTk7lCgwTcmegpCk7l+kR+LpN41k97fgN2WAZQPQ9B7A5IZzuduPvgGq7xDczz/964PMERkku9/M3j1eWF+WB+lCOd1NQkwOaAxGetOwun0sX/6cUq2cXqPKM2oh1FEB0x6PBmm4EMKEKFhUsDQZnVlFjtE/GzbIEYfJ4Fag+d7FIqK3Bs9DbMTcWbRz47gO7dw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=2ZwHzLLkOmiUL5ekAvzftBODpE4090pz2dxWDk8KEVE=; b=LzQejtc3Equtlmp9w6T8CPAmso59ndC4Vayn5jSpc+BK38dw+5db/MHPvmSfNb89bdJoPMaJq3VFRYsTnq99qsPgZ1AIkh4vnp5/KOdiT+ULHSinXH+HPCKMzaC4dTIL/PwurWPXMec2lGq2Zbcj1U/N1TPq+9FjtXnQv1+4vfP/aEDqPiolDZQIeaSAJNsBtbgKoWnnj8bNJ1fqBa+5PuNblknB+biVCCPHjhKSSJFzFvZUuu8Ck1/PNSgYU5q3l5WE7xBt/Bnmq0YhUqBXTZgT1xc1DsJZVOAZn/73edcqMCKwuB1hvsgyNAOOme2/N93NaO14cTOWRNpBNQw4Eg== 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=2ZwHzLLkOmiUL5ekAvzftBODpE4090pz2dxWDk8KEVE=; b=mU4zrQ/zpmW3zi3rPe5GvRZobc/i4Lr2XV7bjlWM8IHr4svCfyFVoRBI1RAoAuvjiNoc+vKCOwHNthcHeMfKEpeN9VgAj88+JcGkMcVu8Q8TevtYUUV4eIuaGTrFrRrYCf73GTlxn5co3AgUlK19vvN3MhWSBdof3APS4n0qAJLlZeK3nEGVlhIvqRZbyffi4vGTEVSfIlCdUD0Fv437RD6oItrTW92/BpoUfpajzWhptmNbsdYWAwYkjNUPzKguF0wyaLLgVANsLQ9NFHNA6dwRa/HrmsFojS6RQvWtaxfaWfwSWMMhatK0FzgAqpIqVBgDgF9eneutIh3JCiHxeA== Received: from DU0P250MB0747.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:3cb::16) by AS8P250MB0037.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:37f::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7270.33; Sat, 10 Feb 2024 23:02:24 +0000 Received: from DU0P250MB0747.EURP250.PROD.OUTLOOK.COM ([fe80::db07:87f6:7c75:38cc]) by DU0P250MB0747.EURP250.PROD.OUTLOOK.COM ([fe80::db07:87f6:7c75:38cc%3]) with mapi id 15.20.7270.033; Sat, 10 Feb 2024 23:02:24 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sun, 11 Feb 2024 00:04:04 +0100 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240125134425.374-1-jamrial@gmail.com> References: <20240125134425.374-1-jamrial@gmail.com> X-TMN: [O4uLF9RLWZ7c1/KYeKUNGJXlA+VY1XoDIFWXKpR/Fdg=] X-ClientProxiedBy: ZR2P278CA0003.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:50::6) To DU0P250MB0747.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:3cb::16) X-Microsoft-Original-Message-ID: <20240210230411.2616270-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DU0P250MB0747:EE_|AS8P250MB0037:EE_ X-MS-Office365-Filtering-Correlation-Id: 1c2ec64e-af00-4f2b-5d9f-08dc2a8c5849 X-MS-Exchange-SLBlob-MailProps: Cq7lScuPrnpfz+h1ENKTbWTxnFGbPVjdCndMoSAvGurY8tkkmRZlrSt4x7frsu3y89POzI9ro9NGVt6g1cjyHqmLTKD/ls9lS2/H24VXSbJYV27o02Gmac5QJy8X/W3sdLMVyzUsUi9Q/9vLg85XqikoO7T+d7G0tiks08hvxra/CMBLw8lShoikMEfW9uEOFwXRHnZxSfKfsUMpiYiKQvHGrl5Q0K0qLvkC8cT0JNMIXk87wCAzMU4RaG2afYORshNrOdtrQwHARifFrYZ5xz2Jf43Vpke7LQbhUqjqto402QFFuEZJb9vXgWt7uTBGZgC+jpPayL8llTOPDP/ILarE5h8tkYR/0RTetRW/hV5bLDPceWcgmNquYpNwopHeAwp9JYYqfQ2AdK3aCmTgRMpt8zj56GXoY1WZtFmLfJHf341FKe7m/j0F2WzuhgavLBAOm4QpDugiv0h1pdKYb9HyIQhFqF2YV7hCqz1/hosJuIqUg6BjU4UvwyNmgcqWQx99KXPZc6zDtygQ0HJWhE9Ks1HOyzz4W7EF23iXmWfG/2W8/NhXlujJg32W2rvUbd7/7eMFyLYYYYyelw4YSbC5drXKmCEoGFJo540tpe52eSAaRvV7rIxUlAoA3IsNpy3Ls8ocskMp4wB6txEm4pQ4pSyPIGQ2eOg89Y1YrhKMtASoPWE0iXMqJMW40CreSDXstnkuRUdIkWHVw8yskgyRlNE2GE5RpVh6l5elJgDBDpKZNDX7IrBjhkpZTTOpRDG/eUDYC1w= X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: q0mLlugxU7PdG5SqBJ/pyhbDiltBlJrm9EwPnMD/47QDiblLpvYUqTnkaXGvC6gpqSnxV3C9G+9U3eQcqEaxMvDp7iJsK79FP9A7JM/BbuzFN2l1cqt7DGDbALUz6tYE0ZSdKCiH4Cv0dYvQoNKpYbG0JdMDgHDDWW9Lq+bfAvF6O1jbqqYN0Bp3UHIVpCX7wW9jnyluhLR1CUFmeyQmvSqY/WsmMg47GIJB1QQPemqs98Y735bvpgtZGb94Vz+1pGaKK9lN3eo8maBWTHPojGuPzuuTecvBXg/i5johOQDWfzfj+AUfK/HQthbRq+fWGceBO3QbsSLwzS7U+MVvBkG3Elo0rbJH5jhU+nF7sVP1o2KNDLqC1p1J/lsiwsPYDDs5jixIlpG1P60a2yg0mZQPJVuM0hiUhQaQ5O4pOXSehtFrcrFNNPVUbC815E6KvbhI7p42bNcasNGYKIjcaA/zO/HLF/NeBsp9yfii9x6lMB9zAoKfN6ut4xAHNgO0d7TFE+KI2Am/hNk87oYdGAjoJr26UJA0lZcslwDjL9xT3DJs3a38FMdNROOM38gnjPlCycNayv6CsRNb1Lfgik77dm484vPyPuFJZwHF3eIEyoOhuQQBNxvkZL491j/a X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: JO249fhByZZYl1BZpSNZ1fbV3HYsSxYjlwkkUXjySVKJqZinMk3QcykE2Ktn9Qj6677wNkI2QJsVimyOuEZfJNbMyEtR0kPV+KWv85R5T26T1ZYT0Czyu8ko3EA40EjdFTq6tbm1Z7ps9WEx8mG8aNDFWjp368Q/gNiJ99xx3tYzTyzj7VM4Yn/7ZDzMq4Q3wuKrjL6hcQMYJNgXYDJhC1zwsL9m2RIa5i02KD3LT7eovcaULFomRgenMX/akh02Wp1lkzD4Xp5OdQAS1VIR1BFXQycejheTurRfBTGeaKfhNHCI5mwRw7OJEr1X98bNuq+35Q3GvP+ztp7dRfG8G+ULdNDxyAiQ1cTMcBI1FhgR67S1h5Zk6jGHSkLVE+THrtTLB7UVgJ5Vn8Hw0fSfkgqcp7Q0U6Zj4WYgSt+BmDGSVrLT+NOK9OOpgshpGi0CnOD6LqPyM+YI2Cg2VaH1U3bE9q9dNm9pX5E+KH+3MiZ9MjV7MByJ5slRmHoLqAFwOvmZaZ5mVy9Qv91SvJUzdefJ49nvpmooXxoQ3XYBFw3cpjTkEX+yopWRCmARSGvkTe+QI+R+n8tR8DX+iPEGnC+fRz+gY/B8xILnb5yKR5jA2FQ1/03YRT1DbkCiexcqF32Q8nVBHNPXZJxSZQxSU8YDuNwqm0WAgVqq+nEDnQD9yUCTVgNvaQ+rzaf4a7HN4gFOgzPf8bInr8VuLf6W+98xHzYHe39SQRFdgD98uMy7KSMAzZeYD0tpv8J7KS3eQNZmwCf2I/UmfEIaPjFSU82fsRSKD0kdZB2NVjj7kZAY0Qt3IdTJI6XxUHqXP18J89v33E0AQ1Kt9ibndo40ahljB5RxZqbMoCHVh9mZi9i8jh7eIUbT7yeF7YlgZ8Vb9t2LuDJ7gqnN4bCHwGBR2xXVl3MUTr6qC9T16SHbbL1KHYaNMw3tqvTu+lpK1V4bENi6MMcXwsP0uv8Hhs9tw7pPZIbW3RCGfb7JT/XvbGiFmqd16iO/i1kSqAsH8/br7pmNNPie2lfwSAsKlQBkHlyPYn/TcV8+g4tzrqKxJZCMYcAc0+n4eGdMZt4f5/5DvvVEYLJwmeYMss3SLn6WqCujsHvwejN1U147cqfcBdRyqTYhptZvM346l0aFyadd0fkyn9rvE9dtP5bBc4fhfrEgjg98F0H6VImM5ZG8sb7e8AB0KsZNnSkdmqGcGuXY8TYuRhfWmfOl09y6gm3aNDVW8kXA3Es5hNKfOZjmpREpJzDxSEVPa4EtRatn8M7VQdGnSbwGXm8bspX+12UpgQ== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1c2ec64e-af00-4f2b-5d9f-08dc2a8c5849 X-MS-Exchange-CrossTenant-AuthSource: DU0P250MB0747.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Feb 2024 23:02:24.6624 (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: AS8P250MB0037 Subject: [FFmpeg-devel] [PATCH 28/35] avfilter/avfilter: Avoid allocation for AVFilterInternal 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: +Bb8m2nSeL5a To do this, allocate AVFilterInternal jointly with AVFilterContext and rename it to FFFilterContext in the process (similarly to AVStream/FFStream). Signed-off-by: Andreas Rheinhardt --- libavfilter/avfilter.c | 22 ++++++++++------------ libavfilter/avfilter.h | 7 ------- libavfilter/graphparser.c | 2 +- libavfilter/internal.h | 16 +++++++++++++--- 4 files changed, 24 insertions(+), 23 deletions(-) diff --git a/libavfilter/avfilter.c b/libavfilter/avfilter.c index befcda48cb..dbe6409274 100644 --- a/libavfilter/avfilter.c +++ b/libavfilter/avfilter.c @@ -159,7 +159,7 @@ int avfilter_link(AVFilterContext *src, unsigned srcpad, src->outputs[srcpad] || dst->inputs[dstpad]) return AVERROR(EINVAL); - if (!src->internal->initialized || !dst->internal->initialized) { + if (!fffilterctx(src)->initialized || !fffilterctx(dst)->initialized) { av_log(src, AV_LOG_ERROR, "Filters must be initialized before linking.\n"); return AVERROR(EINVAL); } @@ -651,15 +651,17 @@ static int default_execute(AVFilterContext *ctx, avfilter_action_func *func, voi AVFilterContext *ff_filter_alloc(const AVFilter *filter, const char *inst_name) { + FFFilterContext *ctx; AVFilterContext *ret; int preinited = 0; if (!filter) return NULL; - ret = av_mallocz(sizeof(AVFilterContext)); - if (!ret) + ctx = av_mallocz(sizeof(*ctx)); + if (!ctx) return NULL; + ret = &ctx->p; ret->av_class = &avfilter_class; ret->filter = filter; @@ -681,10 +683,7 @@ AVFilterContext *ff_filter_alloc(const AVFilter *filter, const char *inst_name) av_opt_set_defaults(ret->priv); } - ret->internal = av_mallocz(sizeof(*ret->internal)); - if (!ret->internal) - goto err; - ret->internal->execute = default_execute; + ctx->execute = default_execute; ret->nb_inputs = filter->nb_inputs; if (ret->nb_inputs ) { @@ -718,7 +717,6 @@ err: av_freep(&ret->output_pads); ret->nb_outputs = 0; av_freep(&ret->priv); - av_freep(&ret->internal); av_free(ret); return NULL; } @@ -790,7 +788,6 @@ void avfilter_free(AVFilterContext *filter) av_expr_free(filter->enable); filter->enable = NULL; av_freep(&filter->var_values); - av_freep(&filter->internal); av_free(filter); } @@ -874,9 +871,10 @@ int ff_filter_process_command(AVFilterContext *ctx, const char *cmd, int avfilter_init_dict(AVFilterContext *ctx, AVDictionary **options) { + FFFilterContext *ctxi = fffilterctx(ctx); int ret = 0; - if (ctx->internal->initialized) { + if (ctxi->initialized) { av_log(ctx, AV_LOG_ERROR, "Filter already initialized\n"); return AVERROR(EINVAL); } @@ -891,7 +889,7 @@ int avfilter_init_dict(AVFilterContext *ctx, AVDictionary **options) ctx->thread_type & ctx->graph->thread_type & AVFILTER_THREAD_SLICE && ctx->graph->internal->thread_execute) { ctx->thread_type = AVFILTER_THREAD_SLICE; - ctx->internal->execute = ctx->graph->internal->thread_execute; + ctxi->execute = ctx->graph->internal->thread_execute; } else { ctx->thread_type = 0; } @@ -907,7 +905,7 @@ int avfilter_init_dict(AVFilterContext *ctx, AVDictionary **options) return ret; } - ctx->internal->initialized = 1; + ctxi->initialized = 1; return 0; } diff --git a/libavfilter/avfilter.h b/libavfilter/avfilter.h index a5d9398c9a..a3725b1516 100644 --- a/libavfilter/avfilter.h +++ b/libavfilter/avfilter.h @@ -403,8 +403,6 @@ unsigned avfilter_filter_pad_count(const AVFilter *filter, int is_output); */ #define AVFILTER_THREAD_SLICE (1 << 0) -typedef struct AVFilterInternal AVFilterInternal; - /** An instance of a filter */ struct AVFilterContext { const AVClass *av_class; ///< needed for av_log() and filters common options @@ -443,11 +441,6 @@ struct AVFilterContext { */ int thread_type; - /** - * An opaque struct for libavfilter internal use. - */ - AVFilterInternal *internal; - struct AVFilterCommand *command_queue; char *enable_str; ///< enable expression string diff --git a/libavfilter/graphparser.c b/libavfilter/graphparser.c index 96ef6b15bf..229e647c0a 100644 --- a/libavfilter/graphparser.c +++ b/libavfilter/graphparser.c @@ -626,7 +626,7 @@ int avfilter_graph_segment_init(AVFilterGraphSegment *seg, int flags) if (p->filter_name) return fail_creation_pending(seg, p->filter_name, __func__); - if (!p->filter || p->filter->internal->initialized) + if (!p->filter || fffilterctx(p->filter)->initialized) continue; ret = avfilter_init_dict(p->filter, NULL); diff --git a/libavfilter/internal.h b/libavfilter/internal.h index a6cdf9994c..3d46923cad 100644 --- a/libavfilter/internal.h +++ b/libavfilter/internal.h @@ -133,18 +133,28 @@ struct AVFilterGraphInternal { FFFrameQueueGlobal frame_queues; }; -struct AVFilterInternal { +typedef struct FFFilterContext { + /** + * The public AVFilterContext. See avfilter.h for it. + */ + AVFilterContext p; + avfilter_execute_func *execute; // 1 when avfilter_init_*() was successfully called on this filter // 0 otherwise int initialized; -}; +} FFFilterContext; + +static inline FFFilterContext *fffilterctx(AVFilterContext *ctx) +{ + return (FFFilterContext*)ctx; +} static av_always_inline int ff_filter_execute(AVFilterContext *ctx, avfilter_action_func *func, void *arg, int *ret, int nb_jobs) { - return ctx->internal->execute(ctx, func, arg, ret, nb_jobs); + return fffilterctx(ctx)->execute(ctx, func, arg, ret, nb_jobs); } enum FilterFormatsState {