mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
avfilter/af_loudnorm: do not upsample during second-pass linear normalization
Signed-off-by: Kyle Swanson <k@ylo.ph>
This commit is contained in:
parent
d8eb40bd70
commit
f3d8e0d369
@ -682,6 +682,7 @@ static int request_frame(AVFilterLink *outlink)
|
||||
|
||||
static int query_formats(AVFilterContext *ctx)
|
||||
{
|
||||
LoudNormContext *s = ctx->priv;
|
||||
AVFilterFormats *formats;
|
||||
AVFilterChannelLayouts *layouts;
|
||||
AVFilterLink *inlink = ctx->inputs[0];
|
||||
@ -707,15 +708,17 @@ static int query_formats(AVFilterContext *ctx)
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
formats = ff_make_format_list(input_srate);
|
||||
if (!formats)
|
||||
return AVERROR(ENOMEM);
|
||||
ret = ff_formats_ref(formats, &inlink->out_samplerates);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
ret = ff_formats_ref(formats, &outlink->in_samplerates);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
if (s->frame_type != LINEAR_MODE) {
|
||||
formats = ff_make_format_list(input_srate);
|
||||
if (!formats)
|
||||
return AVERROR(ENOMEM);
|
||||
ret = ff_formats_ref(formats, &inlink->out_samplerates);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
ret = ff_formats_ref(formats, &outlink->in_samplerates);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -754,21 +757,6 @@ static int config_input(AVFilterLink *inlink)
|
||||
|
||||
init_gaussian_filter(s);
|
||||
|
||||
s->frame_type = FIRST_FRAME;
|
||||
|
||||
if (s->linear) {
|
||||
double offset, offset_tp;
|
||||
offset = s->target_i - s->measured_i;
|
||||
offset_tp = s->measured_tp + offset;
|
||||
|
||||
if (s->measured_tp != 99 && s->measured_thresh != -70 && s->measured_lra != 0 && s->measured_i != 0) {
|
||||
if ((offset_tp <= s->target_tp) && (s->measured_lra <= s->target_lra)) {
|
||||
s->frame_type = LINEAR_MODE;
|
||||
s->offset = offset;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (s->frame_type != LINEAR_MODE) {
|
||||
inlink->min_samples =
|
||||
inlink->max_samples =
|
||||
@ -790,6 +778,27 @@ static int config_input(AVFilterLink *inlink)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static av_cold int init(AVFilterContext *ctx)
|
||||
{
|
||||
LoudNormContext *s = ctx->priv;
|
||||
s->frame_type = FIRST_FRAME;
|
||||
|
||||
if (s->linear) {
|
||||
double offset, offset_tp;
|
||||
offset = s->target_i - s->measured_i;
|
||||
offset_tp = s->measured_tp + offset;
|
||||
|
||||
if (s->measured_tp != 99 && s->measured_thresh != -70 && s->measured_lra != 0 && s->measured_i != 0) {
|
||||
if ((offset_tp <= s->target_tp) && (s->measured_lra <= s->target_lra)) {
|
||||
s->frame_type = LINEAR_MODE;
|
||||
s->offset = offset;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static av_cold void uninit(AVFilterContext *ctx)
|
||||
{
|
||||
LoudNormContext *s = ctx->priv;
|
||||
@ -914,6 +923,7 @@ AVFilter ff_af_loudnorm = {
|
||||
.priv_size = sizeof(LoudNormContext),
|
||||
.priv_class = &loudnorm_class,
|
||||
.query_formats = query_formats,
|
||||
.init = init,
|
||||
.uninit = uninit,
|
||||
.inputs = avfilter_af_loudnorm_inputs,
|
||||
.outputs = avfilter_af_loudnorm_outputs,
|
||||
|
@ -30,7 +30,7 @@
|
||||
#include "libavutil/version.h"
|
||||
|
||||
#define LIBAVFILTER_VERSION_MAJOR 6
|
||||
#define LIBAVFILTER_VERSION_MINOR 83
|
||||
#define LIBAVFILTER_VERSION_MINOR 84
|
||||
#define LIBAVFILTER_VERSION_MICRO 100
|
||||
|
||||
#define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \
|
||||
|
Loading…
Reference in New Issue
Block a user