From patchwork Tue Aug 1 15:06:07 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43063 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:c11f:b0:130:ccc6:6c4b with SMTP id bh31csp38425pzb; Tue, 1 Aug 2023 08:05:25 -0700 (PDT) X-Google-Smtp-Source: APBJJlHB6qlDdnGmfQ2kkMJcGyq9olvjS53o07WaiO3/Aes9RaXtphOM4WX+dB2VzImV/JF0mrSY X-Received: by 2002:a05:6512:2826:b0:4fb:9d61:db44 with SMTP id cf38-20020a056512282600b004fb9d61db44mr2661079lfb.12.1690902325203; Tue, 01 Aug 2023 08:05:25 -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 ci18-20020a170906c35200b009823816586esi8431888ejb.500.2023.08.01.08.05.20; Tue, 01 Aug 2023 08:05:25 -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=KNXhjeHt; 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 B532568C50A; Tue, 1 Aug 2023 18:05:17 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05olkn2100.outbound.protection.outlook.com [40.92.90.100]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 53AD468BE7B for ; Tue, 1 Aug 2023 18:05:10 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Q7d1ugue+DCgMbKDr47B2tO8r3fruZD0FhzfUMU19hg5SqSfoAwOSgBD1c2UNsxA/hQo6LsqqZvd6UHuOHDIHV40ZLIiPEZEXn2OXcrCxroSGVOgC1mMue5B7yhsg5D1qcrNRjo5m1j1sA/cEIjkTp9OWbZSgwTU5gnU0ZC0JQTQoU4k8ULkerZsWNHBpyFceGvCebXhyENgHOcrggL+vavBVHDSxvlm4rxpPAay9Pzk3InSmtl4rZNQMjh0j272Qtq/j+MG7499X+12wPanQjjISXHOllKjQeLpCNhqonGKmfZlX4bI2SrNsiazZHAc6bKDVrmLm26rYgYCBOrkbQ== 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=e3fXXdMeq66wUcwGqMyIPlvOQUXXlfPD8teh8lISWjk=; b=lvjwBZLBipnFDn1/HC6teTH9CWDRbqz1aC/HzbSUvkRqQC2hXWT8o1gb4IoifQgsPFg7c5nIV5QvFEITcTJiIocyV6qlERtB5zHrhCdKHT9T/NpZ7AZk+fpCR/s7qbtQPExZxiLeOFO+8iImVJtSOVdA6rYHTOixz0Neha15ag57U26Kd2tiED++cTZo7VXe9U96ufQKOxNZlxugKHKE9hBkkzFWzUwHfGi+xw/n3NFD5TEjCmEHebM7fCdOJ9QQwDmF8duTpUqT9GHTzEwZnKo1In+QBgIvkXLdlYqP7eE50oBcvh8Q5TRk87MNNggC5UB3UwKOpAHhV8eJ3Vx+Jg== 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=e3fXXdMeq66wUcwGqMyIPlvOQUXXlfPD8teh8lISWjk=; b=KNXhjeHthoMTOgn0gVgCIJ5dDX2NVkFGBitee2A9TqGNDKHssZjw9AWmHt1J7ItyRzXomCjhjewhGFzeC/azi9011NidlwG402H3O95VrQRBHdzqX3anj6hTKUGjbXk7SLrTKuwbkG8Tfk9iXs8xhNMTe3Pvku1hDQcjFpsVM9m+JE9/xnuqjboaiUvogafn/eQhhG0xOidpqSwztqp/aNhyieUwSZsJoAOILaV5lAo8pjEi3S1zoLoK+SQ7Klz+UHDSCxmNAFtIkISDuLOkOOGfLG7fmJcPqjYCRVi+RgNIDaqwxlw15wGoVSnGrCEgtSK9bHsstapCROii+Tc6rw== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by DU2P250MB0080.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:271::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6631.44; Tue, 1 Aug 2023 15:05:08 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::4d3a:7ca6:cf28:9e8c]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::4d3a:7ca6:cf28:9e8c%7]) with mapi id 15.20.6631.043; Tue, 1 Aug 2023 15:05:08 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Tue, 1 Aug 2023 17:06:07 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [XYDjQX6n6yITiozdZ3SVAhBSUBKE3J/jmYeY1asnJ1A=] X-ClientProxiedBy: FR2P281CA0092.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:9b::16) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230801150608.3756402-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|DU2P250MB0080:EE_ X-MS-Office365-Filtering-Correlation-Id: 756f0f38-958c-4e77-fcfd-08db92a0b227 X-MS-Exchange-SLBlob-MailProps: AZnQBsB9XmpdHtR81+IA7nbDSCnGfE510XT/uT0At841VlnYGX5H2UGRRE/KPGlYK07KEsk1zPL6oKgtfcC7z3Clwk+gTswQh+677pLLBi1iHLC1eSQeU7XE7KR6D9OAgVeqHDtam85kuwdau9Oqk8sKBaePQMNQYfnjFvshi3hVSU5JTOjkFhnW2iOur7HKGRwFOtGMGURV6i1uLX2Wg0OpiwbWKJji2LrvkG36E0r+TQMfM5XzYB1mGlBGttMQ/F8PK+GwRRpP7OLh++eY7lXwDDrrwkEuEXK5zXiO12zKaVSaa9h+Mv3l+01zwtYjyXVU7MaHFyN2MOx7gFyHbt3z6si9T4fEt6GzyUm2WHGKWMaEwwfmJyvtGak8U25gfHtiAee0B74DZip/3wZ7OO0toL+lUH9HzhJ2HxMgA8tH/ZpsO0Gu6KwnaJ4dR2194zr2tIRaK4wyZY/RNkOLBJo6YWZqxBmU0tXwLk73nULoXSy3x95Fl+fIgeHpmv0n9xyJQ54HX3S9YVR/9grbRfdepfIuiPgk2Iu0GG3jl4cDiS6JyQ696iTIuHX/gjNP+vk528UHcwz9tTAQuVmWJuaq8nAzuhdVUtglLVkDTcW0yPPvfkBDrFfcVUGS1gg/jc+mgLYKPvX3GJJLMEOtKzRZR4lliJRP7vfNqGIYrvqCroz2rCo8VPhzoIXUN3VztjdMdXjWP2NeXnvZNmAho13eH7NPt3a1kTeQPbC1yziLksKbvqIbIclk3vUxdFhdWjHXdkj8TsY= X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ceEqmYfapePemmeBIfh2bgn7gsshIFsg1j2k5xqMprZLWsXKtVb1Q6QeCsZoMGm0V+BWQkdByqJh62KHA+zggOUJ0r+A+SronLqdeAPTqI52slV44LIMFhwAKLUZp7rTpb5bVvK+sKz3MgFjAGAQeFbUP3oe37SAAaBT2Gzn9VS7r5lRmbz5Srlt8uhe8DchUuVe6CuPEjAbSOEJSwqz9zI+HavvhHlCl8mUXl11cX4tLK3sYBwJG1hHz6aZqblLFUJLywCMjiCIzlfYWA3iKD3rAXPN+yulpswndw6wf/fooY/E6GUINByUa4Gj135ILF9kmrGYLm9NBvgvNNop1NVyH1NorYJAhvVVoRmwj2ZN8qhm6JVU20Iivj7Jv1I9zQsNT2VWGipjBYvX8RfVhSCvksSSn/+hu0xi8XXu93UZYXpa/ntzJCwtsfFXXGHg1gbK7s0Dgd9x+GslTD4v79RF0nCj/VSIl9z1QbuuOmpM+3qzxVrsw7FqO4QVhaEso6/fi4YOLdjSaNNw0yM5LipUUfyCTuhzggP0Cyx3uIJYpISwib9eIdFUARcilN7oGhE8CqE5nn31WeQMUbW7mGvlogUsljiGV23mmZ8bPkeUBLmmFaROQPJzvidu/BmU X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: BPOfXEs0IoZf0ZzJU9pDDzdaMM7fC85BJQZlVMiy4sogocigjG0XU7AKYF0NtPwJTK5/G5qI5adCTzK7+TOLvXgg8B1iOKr9cUT/vfUv/LBOfMxV8OmQ9Zjp4UugKGY90Ias6/RSYF4VuWQ9T2uo7nfKvy5yv4Oy27wkwCmAmF8sE4VoyVcEX+A9Ne9KuqIfykHiTi4KXRme9cxyZ+8AEExwT/4boBO3djEU3cOLu48KOwesmOVQMXahjDdONxg9ip7WGZYoDOVDux4B6TeRYRNORGzfpOKlz0gi7biQHrdGGxUZZ/282m1jDhrWPySV3UpkRGqgpd05j3VlTPXVHSWaYKg4mRYancJ6eoz9FqoPPXH7ixn+S2WlSuLpaBOVLhBsNmjFGlb8/rz9ib5wgIdMaJlvipCkJqVe+2UwzDEk/3KY6TRAyXCYrlbn2OQyn6yO9RufehidqdI5h8PQaOSmbPEWMJp/9yav8nPYzTk1N19kARXJVg1YMi5ET+NpPvrvaCo2oOXYOblsSgptcHQQZm1gVRvaVsCLX6riEfVer7GgDg5MkGmtAZxefAQq4JKv6H76uOi1nibBetxzkYu1PATpdU3ovD2VQZZG4D6qhFqP9Oj+rn7jE03vaE8pdZ2VArsmIQKhmblbNQKhS9E+Kbo5JrIcWYucNYsDT0tWRYoCcHvtpDT3tC1LYey8c19FZkFlDB7e94ygzI9tEeRvuTGJHAp08Wxz748YGTtVl0YjteCMLtUXLHWUq1OMguJDhAvXP1H0KzM/0HNO6pXNmtnMUpo4e1aHA5ZaBPn5Px/RpNcYOUHEaXfbBemegR4TxAFCU1D28eAqzmcnIleO60oIiyN14SQWHfouD8qvGm4nySLHvvjhfKQRqZOOlR3ib+mcad2kEQyy7h5FgQQmMbHg4ufgVjhBbI/D0+ToWtt0U/6EV0I27jqYLkMgXQiZ9u21zZf/EOWe5YNQuq8foOo9o0N1DVObDhGLuyBekXpsjLOdBV6MDmhqZ8DTnBCRA/njqxunlmNIFLabW83R9kNkT/zLxdruVsETpL2phEHTRGMbtuUWPGyBSqu0jNJ6pObDxCT9JWZRXxmygORaGZPxD560fjqvkqOVn00yQIC71g042tihE5R42uBkjsQ2hnj6pME1VEKYhFTz2qdONqGWOrxNiVO5FGBLyK1PtuJwWHOqTcc4fTUg4ilX9fnkrGoDtadydsMXRAbzVmipQM+PdFsSU9sqBsaAvr/vicTyXvmi/1lDByWZdtwE X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 756f0f38-958c-4e77-fcfd-08db92a0b227 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Aug 2023 15:05:08.6543 (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: DU2P250MB0080 Subject: [FFmpeg-devel] [PATCH 2/3] avfilter/avfilter: Make functions only used here static 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: Skp5aNbFkPQ8 Signed-off-by: Andreas Rheinhardt --- libavfilter/avfilter.c | 44 +++++++++++++++++++++++------------------- libavfilter/internal.h | 8 -------- 2 files changed, 24 insertions(+), 28 deletions(-) diff --git a/libavfilter/avfilter.c b/libavfilter/avfilter.c index b8e1523bdb..df6f1ab3de 100644 --- a/libavfilter/avfilter.c +++ b/libavfilter/avfilter.c @@ -201,6 +201,17 @@ void avfilter_link_free(AVFilterLink **link) av_freep(link); } +static void update_link_current_pts(AVFilterLink *link, int64_t pts) +{ + if (pts == AV_NOPTS_VALUE) + return; + link->current_pts = pts; + link->current_pts_us = av_rescale_q(pts, link->time_base, AV_TIME_BASE_Q); + /* TODO use duration */ + if (link->graph && link->age_index >= 0) + ff_avfilter_graph_update_heap(link->graph, link); +} + void ff_filter_set_ready(AVFilterContext *filter, unsigned priority) { filter->ready = FFMAX(filter->ready, priority); @@ -232,13 +243,17 @@ void ff_avfilter_link_set_in_status(AVFilterLink *link, int status, int64_t pts) ff_filter_set_ready(link->dst, 200); } -void ff_avfilter_link_set_out_status(AVFilterLink *link, int status, int64_t pts) +/** + * Set the status field of a link from the destination filter. + * The pts should probably be left unset (AV_NOPTS_VALUE). + */ +static void avfilter_link_set_out_status(AVFilterLink *link, int status, int64_t pts) { av_assert0(!link->frame_wanted_out); av_assert0(!link->status_out); link->status_out = status; if (pts != AV_NOPTS_VALUE) - ff_update_link_current_pts(link, pts); + update_link_current_pts(link, pts); filter_unblock(link->dst); ff_filter_set_ready(link->src, 200); } @@ -428,7 +443,7 @@ int ff_request_frame(AVFilterLink *link) /* Acknowledge status change. Filters using ff_request_frame() will handle the change automatically. Filters can also check the status directly but none do yet. */ - ff_avfilter_link_set_out_status(link, link->status_in, link->status_in_pts); + avfilter_link_set_out_status(link, link->status_in, link->status_in_pts); return link->status_out; } } @@ -537,17 +552,6 @@ static int set_enable_expr(AVFilterContext *ctx, const char *expr) return 0; } -void ff_update_link_current_pts(AVFilterLink *link, int64_t pts) -{ - if (pts == AV_NOPTS_VALUE) - return; - link->current_pts = pts; - link->current_pts_us = av_rescale_q(pts, link->time_base, AV_TIME_BASE_Q); - /* TODO use duration */ - if (link->graph && link->age_index >= 0) - ff_avfilter_graph_update_heap(link->graph, link); -} - int avfilter_process_command(AVFilterContext *filter, const char *cmd, const char *arg, char *res, int res_len, int flags) { if(!strcmp(cmd, "ping")){ @@ -1117,7 +1121,7 @@ static int ff_filter_frame_to_filter(AVFilterLink *link) link->frame_count_out--; ret = ff_filter_frame_framed(link, frame); if (ret < 0 && ret != link->status_out) { - ff_avfilter_link_set_out_status(link, ret, AV_NOPTS_VALUE); + avfilter_link_set_out_status(link, ret, AV_NOPTS_VALUE); } else { /* Run once again, to see if several frames were available, or if the input status has also changed, or any other reason. */ @@ -1147,7 +1151,7 @@ static int forward_status_change(AVFilterContext *filter, AVFilterLink *in) if (!progress) { /* Every output already closed: input no longer interesting (example: overlay in shortest mode, other input closed). */ - ff_avfilter_link_set_out_status(in, in->status_in, in->status_in_pts); + avfilter_link_set_out_status(in, in->status_in, in->status_in_pts); return 0; } progress = 0; @@ -1249,7 +1253,7 @@ static int ff_filter_activate_default(AVFilterContext *filter) change is considered having already happened. It is set by the destination filter using - ff_avfilter_link_set_out_status(). + avfilter_link_set_out_status(). Filters are activated according to the ready field, set using the ff_filter_set_ready(). Eventually, a priority queue will be used. @@ -1339,7 +1343,7 @@ int ff_inlink_acknowledge_status(AVFilterLink *link, int *rstatus, int64_t *rpts if (!link->status_in) return *rstatus = 0; *rstatus = link->status_out = link->status_in; - ff_update_link_current_pts(link, link->status_in_pts); + update_link_current_pts(link, link->status_in_pts); *rpts = link->current_pts; return 1; } @@ -1368,7 +1372,7 @@ int ff_inlink_check_available_samples(AVFilterLink *link, unsigned min) static void consume_update(AVFilterLink *link, const AVFrame *frame) { - ff_update_link_current_pts(link, frame->pts); + update_link_current_pts(link, frame->pts); ff_inlink_process_commands(link, frame); link->dst->is_disabled = !ff_inlink_evaluate_timeline_at_frame(link, frame); link->frame_count_out++; @@ -1512,7 +1516,7 @@ void ff_inlink_set_status(AVFilterLink *link, int status) return; link->frame_wanted_out = 0; link->frame_blocked_in = 0; - ff_avfilter_link_set_out_status(link, status, AV_NOPTS_VALUE); + avfilter_link_set_out_status(link, status, AV_NOPTS_VALUE); while (ff_framequeue_queued_frames(&link->fifo)) { AVFrame *frame = ff_framequeue_take(&link->fifo); av_frame_free(&frame); diff --git a/libavfilter/internal.h b/libavfilter/internal.h index 8b232a8d8f..58665ff086 100644 --- a/libavfilter/internal.h +++ b/libavfilter/internal.h @@ -243,8 +243,6 @@ av_warn_unused_result int ff_parse_channel_layout(AVChannelLayout *ret, int *nret, const char *arg, void *log_ctx); -void ff_update_link_current_pts(AVFilterLink *link, int64_t pts); - /** * Set the status field of a link from the source filter. * The pts should reflect the timestamp of the status change, @@ -254,12 +252,6 @@ void ff_update_link_current_pts(AVFilterLink *link, int64_t pts); */ void ff_avfilter_link_set_in_status(AVFilterLink *link, int status, int64_t pts); -/** - * Set the status field of a link from the destination filter. - * The pts should probably be left unset (AV_NOPTS_VALUE). - */ -void ff_avfilter_link_set_out_status(AVFilterLink *link, int status, int64_t pts); - #define D2TS(d) (isnan(d) ? AV_NOPTS_VALUE : (int64_t)(d)) #define TS2D(ts) ((ts) == AV_NOPTS_VALUE ? NAN : (double)(ts)) #define TS2T(ts, tb) ((ts) == AV_NOPTS_VALUE ? NAN : (double)(ts) * av_q2d(tb))