mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2026-10-28 18:15:24 +08:00
avfilter/vf_gainmap: don't use sizeof(AVGainMapParams)
It's not part of the ABI. Signed-off-by: James Almer <jamrial@gmail.com>
This commit is contained in:
1 parent
91c4a5258c
commit
a01246f079
1 file changed
+17
-14
+17
-14
@@ -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 */
|
||||
|
||||
|
||||
Reference in new issue
Block a user