This is an automated email from the git hooks/post-receive script.
Git pushed a commit to branch master
in repository ffmpeg.
The following commit(s) were added to refs/heads/master by this push:
new a01246f079 avfilter/vf_gainmap: don't use sizeof(AVGainMapParams)
a01246f079 is described below
commit a01246f079e06910bb06034c8eb6001a44e84fca
Author: James Almer <[email protected]>
AuthorDate: Tue Oct 6 13:24:15 2026 -0300
Commit: James Almer <[email protected]>
CommitDate: Tue Oct 6 13:24:15 2026 -0300
avfilter/vf_gainmap: don't use sizeof(AVGainMapParams)
It's not part of the ABI.
Signed-off-by: James Almer <[email protected]>
---
libavfilter/vf_gainmap.c | 31 +++++++++++++++++--------------
1 file changed, 17 insertions(+), 14 deletions(-)
diff --git a/libavfilter/vf_gainmap.c b/libavfilter/vf_gainmap.c
index 98ea8b9177..7b8b81614b 100644
--- a/libavfilter/vf_gainmap.c
+++ b/libavfilter/vf_gainmap.c
@@ -110,7 +110,8 @@ typedef struct GainMapContext {
enum GainMapMeasure measure;
/* Generated gain map parameters (recomputed per frame) */
- AVGainMapParams params;
+ AVGainMapParams *params;
+ size_t params_size;
} GainMapContext;
typedef struct ThreadData {
@@ -171,8 +172,8 @@ static void setup_range(AVFilterContext *ctx, int ch,
AVRational min, AVRational
s->quant_offset[ch] = -minf * s->quant_scale[ch];
}
- s->params.channels[ch].gain_map_min = min;
- s->params.channels[ch].gain_map_max = max;
+ s->params->channels[ch].gain_map_min = min;
+ s->params->channels[ch].gain_map_max = max;
av_log(ctx, AV_LOG_TRACE, "channel %d: measured min=%g max=%g\n",
ch, av_q2d(min), av_q2d(max));
}
@@ -181,7 +182,7 @@ static void setup_gamma(AVFilterContext *ctx, int ch,
AVRational gamma)
{
GainMapContext *s = ctx->priv;
s->quant_gamma[ch] = av_q2d(gamma);
- s->params.channels[ch].gamma = gamma;
+ s->params->channels[ch].gamma = gamma;
av_log(ctx, AV_LOG_TRACE, "channel %d: measured gamma=%g\n",
ch, s->quant_gamma[ch]);
}
@@ -208,15 +209,17 @@ static av_cold int init(AVFilterContext *ctx)
"parameters from the input frame.\n");
}
- s->params = (AVGainMapParams) {
- .version = 0,
- .nb_channels = s->nb_channels,
- .use_base_color_space = s->colorspace == GAINMAP_CSP_BASE,
- /* payload metadata recomputed per frame */
- };
+ s->params = av_gain_map_params_alloc(&s->params_size);
+ if (!s->params)
+ return AVERROR(ENOMEM);
+
+ /* payload metadata recomputed per frame */
+ s->params->version = 0;
+ s->params->nb_channels = s->nb_channels;
+ s->params->use_base_color_space = s->colorspace == GAINMAP_CSP_BASE;
for (int c = 0; c < s->nb_channels; c++) {
- struct AVGainMapChannel *ch = &s->params.channels[c];
+ struct AVGainMapChannel *ch = &s->params->channels[c];
ch->base_offset = s->base_offset;
ch->alternate_offset = s->alt_offset;
if (!(s->measure & MEASURE_RANGE))
@@ -338,8 +341,8 @@ static int setup_colorspace(AVFilterContext *ctx, const
AVFrame *base, const AVF
double alt_lw = s->alt_nits.den ? av_q2d(s->alt_nits) :
frame_luminance(alt);
double base_headroom = fmax(log2(base_lw / SDR_DIFFUSE_WHITE), 0.0);
double alt_headroom = fmax(log2(alt_lw / SDR_DIFFUSE_WHITE), 0.0);
- s->params.base_hdr_headroom = quantq(base_headroom,
AV_ROUND_NEAR_INF);
- s->params.alternate_hdr_headroom = quantq(alt_headroom,
AV_ROUND_NEAR_INF);
+ s->params->base_hdr_headroom = quantq(base_headroom,
AV_ROUND_NEAR_INF);
+ s->params->alternate_hdr_headroom = quantq(alt_headroom,
AV_ROUND_NEAR_INF);
s->sign = FFDIFFSIGN(alt_headroom, base_headroom);
if (!s->sign) {
/* No-op, set up empty gain map */
@@ -680,7 +683,7 @@ skip:;
goto fail;
}
- *params = s->params;
+ memcpy(params, s->params, s->params_size);
if (av_gain_map_params_validate(params) < 0)
return AVERROR_BUG; /* should never happen */
--
To stop receiving notification emails like this one, please contact
[email protected].
_______________________________________________
ffmpeg-cvslog mailing list -- [email protected]
To unsubscribe send an email to [email protected]