From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 603154099B for ; Thu, 28 Dec 2023 00:38:38 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 5B23068C5FF; Thu, 28 Dec 2023 02:38:35 +0200 (EET) Received: from mail-ed1-f49.google.com (mail-ed1-f49.google.com [209.85.208.49]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id F401568BB4C for ; Thu, 28 Dec 2023 02:38:28 +0200 (EET) Received: by mail-ed1-f49.google.com with SMTP id 4fb4d7f45d1cf-553ba2f0c8fso6562469a12.1 for ; Wed, 27 Dec 2023 16:38:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1703723907; x=1704328707; darn=ffmpeg.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=fgnxZHWUqlwsyGNKTVPcd+tOJEz5n4mGYaMltPVGDY4=; b=GAJFcrRmBVkjxQ2dPJ1mL+eRtYh8wGHfcO6W7W50+TaOww/9vAUjJwwKZY0MkYsxs/ Mivay0/g/0IKsysk5HHyocLTc9YThAYdyV/L8d+w0cmBLGWIyw6F0YtgKnopALmfatBT vB85VP0/L4a8nV06E4mUtz3UL3jlVOBG7lRNeLY978E/zbdpI7e89/ZVznOfcgFpPT+A R0omfkTyKjp83MuPtusurMqMPYl2gFjLRjz1pjV72TYygz9XdTuFfVolme835eiJbPXE U+Nm/C1bcJrD6mOah+iC6B/wuZsvL2dJdnAiY5z6mUaKrpBw8++TVwYlyzd2Zrj1kzna tj9w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1703723907; x=1704328707; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=fgnxZHWUqlwsyGNKTVPcd+tOJEz5n4mGYaMltPVGDY4=; b=JrYCPj0DJMnRiD//REf/5q31DpJ1G9bPjj3qfcUHKCvMAUjb3tTmADM0pcM5Ecukyn V4dbIOkM13Ic0L5BjD2tnzOzYDEtfOYcVRMzqpyjkEEyPC+e0CoJcdkEtPcUa5RdbfSw vBn6Y0UWS2Hlj1AERS/hosEmstVnxgvG9U+DsoOlH5VAmGog54giOe4LQf+jQltzT7ne RMY5w+ln3C/0UU+YFt3Zd3U0OOu2YE9V2Xji4G07LC4zQpR8iQPNwUiQSV9GFURi9fks MztuT0Cx+vM5dpdjcnmjL+sjpJbz4Be1Odmp5Mj7eFZYsUByw3uXOYI4l39xbs26QAVs s6pA== X-Gm-Message-State: AOJu0YxmcgmsW4+vVLynUHsBAlDkNUtToJx4gL8xs+fQS7gXQRUYJO7G swn4Zf65E+P6Z4HRyuc6fUTzItyG8jE= X-Google-Smtp-Source: AGHT+IFR21tp5T3FD/ATYnvrQH9S1HGbuMRgmH0/w3c3fW9G8zpAXLJ5fYoDDv+I2T0jGYUfhAcFEw== X-Received: by 2002:a17:907:9727:b0:a26:85ec:f185 with SMTP id jg39-20020a170907972700b00a2685ecf185mr2953551ejc.117.1703723907077; Wed, 27 Dec 2023 16:38:27 -0800 (PST) Received: from mariano (dynamic-adsl-84-220-189-10.clienti.tiscali.it. [84.220.189.10]) by smtp.gmail.com with ESMTPSA id wl1-20020a170907310100b00a2697984204sm6936563ejb.72.2023.12.27.16.38.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 27 Dec 2023 16:38:26 -0800 (PST) Received: by mariano (Postfix, from userid 1000) id 7B616BFCDC; Thu, 28 Dec 2023 01:38:25 +0100 (CET) From: Stefano Sabatini To: FFmpeg development discussions and patches Date: Thu, 28 Dec 2023 01:38:25 +0100 Message-Id: <20231228003825.860874-1-stefasab@gmail.com> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/2] lavfi/setpts: use macro to access variables array 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: Stefano Sabatini Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: --- libavfilter/setpts.c | 94 +++++++++++++++++++++----------------------- 1 file changed, 45 insertions(+), 49 deletions(-) diff --git a/libavfilter/setpts.c b/libavfilter/setpts.c index d057fc91c4..88a8d6af86 100644 --- a/libavfilter/setpts.c +++ b/libavfilter/setpts.c @@ -103,6 +103,9 @@ typedef struct SetPTSContext { enum AVMediaType type; } SetPTSContext; +#define V(name_) \ + setpts->var_values[VAR_##name_] + static av_cold int init(AVFilterContext *ctx) { SetPTSContext *setpts = ctx->priv; @@ -114,15 +117,15 @@ static av_cold int init(AVFilterContext *ctx) return ret; } - setpts->var_values[VAR_N] = 0.0; - setpts->var_values[VAR_S] = 0.0; - setpts->var_values[VAR_PREV_INPTS] = NAN; - setpts->var_values[VAR_PREV_INT] = NAN; - setpts->var_values[VAR_PREV_OUTPTS] = NAN; - setpts->var_values[VAR_PREV_OUTT] = NAN; - setpts->var_values[VAR_STARTPTS] = NAN; - setpts->var_values[VAR_STARTT] = NAN; - setpts->var_values[VAR_T_CHANGE] = NAN; + V(N) = 0.0; + V(S) = 0.0; + V(PREV_INPTS) = NAN; + V(PREV_INT) = NAN; + V(PREV_OUTPTS) = NAN; + V(PREV_OUTT) = NAN; + V(STARTPTS) = NAN; + V(STARTT) = NAN; + V(T_CHANGE) = NAN; return 0; } @@ -132,22 +135,18 @@ static int config_input(AVFilterLink *inlink) SetPTSContext *setpts = ctx->priv; setpts->type = inlink->type; - setpts->var_values[VAR_TB] = av_q2d(inlink->time_base); - setpts->var_values[VAR_RTCSTART] = av_gettime(); + V(TB) = av_q2d(inlink->time_base); + V(RTCSTART) = av_gettime(); - setpts->var_values[VAR_SR] = - setpts->var_values[VAR_SAMPLE_RATE] = + V(SR) = V(SAMPLE_RATE) = setpts->type == AVMEDIA_TYPE_AUDIO ? inlink->sample_rate : NAN; - setpts->var_values[VAR_FRAME_RATE] = - setpts->var_values[VAR_FR] = inlink->frame_rate.num && - inlink->frame_rate.den ? - av_q2d(inlink->frame_rate) : NAN; + V(FRAME_RATE) = V(FR) = + inlink->frame_rate.num && inlink->frame_rate.den ? + av_q2d(inlink->frame_rate) : NAN; av_log(inlink->src, AV_LOG_VERBOSE, "TB:%f FRAME_RATE:%f SAMPLE_RATE:%f\n", - setpts->var_values[VAR_TB], - setpts->var_values[VAR_FRAME_RATE], - setpts->var_values[VAR_SAMPLE_RATE]); + V(TB), V(FRAME_RATE), V(SAMPLE_RATE)); return 0; } @@ -162,28 +161,28 @@ static inline char *double2int64str(char *buf, double v) static double eval_pts(SetPTSContext *setpts, AVFilterLink *inlink, AVFrame *frame, int64_t pts) { - if (isnan(setpts->var_values[VAR_STARTPTS])) { - setpts->var_values[VAR_STARTPTS] = TS2D(pts); - setpts->var_values[VAR_STARTT ] = TS2T(pts, inlink->time_base); + if (isnan(V(STARTPTS))) { + V(STARTPTS) = TS2D(pts); + V(STARTT ) = TS2T(pts, inlink->time_base); } - if (isnan(setpts->var_values[VAR_T_CHANGE])) { - setpts->var_values[VAR_T_CHANGE] = TS2T(pts, inlink->time_base); + if (isnan(V(T_CHANGE))) { + V(T_CHANGE) = TS2T(pts, inlink->time_base); } - setpts->var_values[VAR_PTS ] = TS2D(pts); - setpts->var_values[VAR_T ] = TS2T(pts, inlink->time_base); + V(PTS ) = TS2D(pts); + V(T ) = TS2T(pts, inlink->time_base); #if FF_API_FRAME_PKT FF_DISABLE_DEPRECATION_WARNINGS - setpts->var_values[VAR_POS ] = !frame || frame->pkt_pos == -1 ? NAN : frame->pkt_pos; + V(POS ) = !frame || frame->pkt_pos == -1 ? NAN : frame->pkt_pos; FF_ENABLE_DEPRECATION_WARNINGS #endif - setpts->var_values[VAR_RTCTIME ] = av_gettime(); + V(RTCTIME ) = av_gettime(); if (frame) { if (inlink->type == AVMEDIA_TYPE_VIDEO) { - setpts->var_values[VAR_INTERLACED] = !!(frame->flags & AV_FRAME_FLAG_INTERLACED); + V(INTERLACED) = !!(frame->flags & AV_FRAME_FLAG_INTERLACED); } else if (inlink->type == AVMEDIA_TYPE_AUDIO) { - setpts->var_values[VAR_S] = frame->nb_samples; - setpts->var_values[VAR_NB_SAMPLES] = frame->nb_samples; + V(S) = frame->nb_samples; + V(NB_SAMPLES) = frame->nb_samples; } } @@ -202,34 +201,32 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *frame) av_log(inlink->dst, AV_LOG_TRACE, "N:%"PRId64" PTS:%s T:%f", - (int64_t)setpts->var_values[VAR_N], - d2istr(setpts->var_values[VAR_PTS]), - setpts->var_values[VAR_T]); + (int64_t)V(N), d2istr(V(PTS)), V(T)); switch (inlink->type) { case AVMEDIA_TYPE_VIDEO: av_log(inlink->dst, AV_LOG_TRACE, " INTERLACED:%"PRId64, - (int64_t)setpts->var_values[VAR_INTERLACED]); + (int64_t)V(INTERLACED)); break; case AVMEDIA_TYPE_AUDIO: av_log(inlink->dst, AV_LOG_TRACE, " NB_SAMPLES:%"PRId64" NB_CONSUMED_SAMPLES:%"PRId64, - (int64_t)setpts->var_values[VAR_NB_SAMPLES], - (int64_t)setpts->var_values[VAR_NB_CONSUMED_SAMPLES]); + (int64_t)V(NB_SAMPLES), + (int64_t)V(NB_CONSUMED_SAMPLES)); break; } av_log(inlink->dst, AV_LOG_TRACE, " -> PTS:%s T:%f\n", d2istr(d), TS2T(d, inlink->time_base)); if (inlink->type == AVMEDIA_TYPE_VIDEO) { - setpts->var_values[VAR_N] += 1.0; + V(N) += 1.0; } else { - setpts->var_values[VAR_N] += frame->nb_samples; + V(N) += frame->nb_samples; } - setpts->var_values[VAR_PREV_INPTS ] = TS2D(in_pts); - setpts->var_values[VAR_PREV_INT ] = TS2T(in_pts, inlink->time_base); - setpts->var_values[VAR_PREV_OUTPTS] = TS2D(frame->pts); - setpts->var_values[VAR_PREV_OUTT] = TS2T(frame->pts, inlink->time_base); + V(PREV_INPTS ) = TS2D(in_pts); + V(PREV_INT ) = TS2T(in_pts, inlink->time_base); + V(PREV_OUTPTS) = TS2D(frame->pts); + V(PREV_OUTT) = TS2T(frame->pts, inlink->time_base); if (setpts->type == AVMEDIA_TYPE_AUDIO) { - setpts->var_values[VAR_NB_CONSUMED_SAMPLES] += frame->nb_samples; + V(NB_CONSUMED_SAMPLES) += frame->nb_samples; } return ff_filter_frame(inlink->dst->outputs[0], frame); } @@ -256,9 +253,7 @@ static int activate(AVFilterContext *ctx) double d = eval_pts(setpts, inlink, NULL, pts); av_log(ctx, AV_LOG_TRACE, "N:EOF PTS:%s T:%f -> PTS:%s T:%f\n", - d2istr(setpts->var_values[VAR_PTS]), - setpts->var_values[VAR_T], - d2istr(d), TS2T(d, inlink->time_base)); + d2istr(V(PTS)), V(T), d2istr(d), TS2T(d, inlink->time_base)); ff_outlink_set_status(outlink, status, D2TS(d)); return 0; } @@ -296,7 +291,7 @@ static int process_command(AVFilterContext *ctx, const char *cmd, const char *ar } else { av_expr_free(setpts->expr); setpts->expr = new_expr; - setpts->var_values[VAR_T_CHANGE] = NAN; + V(T_CHANGE) = NAN; } } else { ret = AVERROR(EINVAL); @@ -304,6 +299,7 @@ static int process_command(AVFilterContext *ctx, const char *cmd, const char *ar return ret; } +#undef V #define OFFSET(x) offsetof(SetPTSContext, x) #define V AV_OPT_FLAG_VIDEO_PARAM -- 2.34.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".