1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2024-11-26 19:01:44 +02:00

avfilter/af_headphone: Simplify finding channel index

Before this commit, the headphone filter called
av_channel_layout_extract_channel() in a loop in order to find out
the index of a channel (given via its AV_CH_* value) in a channel layout.
This commit changes this to av_get_channel_layout_channel_index()
instead.

Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
This commit is contained in:
Andreas Rheinhardt 2020-08-27 07:28:55 +02:00
parent 0952f8f909
commit 9d1f58424a

View File

@ -100,7 +100,6 @@ static void parse_map(AVFilterContext *ctx)
char *arg, *tokenizer, *p;
uint64_t used_channels = 0;
s->lfe_channel = -1;
s->nb_inputs = 1;
p = s->map;
@ -452,18 +451,9 @@ static int convert_coeffs(AVFilterContext *ctx, AVFilterLink *inlink)
ptr = (float *)s->in[i + 1].frame->extended_data[0];
if (s->hrir_fmt == HRIR_STEREO) {
int idx = -1;
for (j = 0; j < inlink->channels; j++) {
if ((av_channel_layout_extract_channel(inlink->channel_layout, j)) == s->mapping[i]) {
idx = j;
if (s->mapping[i] == AV_CH_LOW_FREQUENCY)
s->lfe_channel = j;
break;
}
}
if (idx == -1)
int idx = av_get_channel_layout_channel_index(inlink->channel_layout,
s->mapping[i]);
if (idx < 0)
continue;
if (s->type == TIME_DOMAIN) {
float *data_ir_l = s->data_ir[0] + idx * s->air_len;
@ -494,17 +484,9 @@ static int convert_coeffs(AVFilterContext *ctx, AVFilterLink *inlink)
int I, N = ctx->inputs[1]->channels;
for (k = 0; k < N / 2; k++) {
int idx = -1;
for (j = 0; j < inlink->channels; j++) {
if ((av_channel_layout_extract_channel(inlink->channel_layout, j)) == s->mapping[k]) {
idx = j;
if (s->mapping[k] == AV_CH_LOW_FREQUENCY)
s->lfe_channel = j;
break;
}
}
if (idx == -1)
int idx = av_get_channel_layout_channel_index(inlink->channel_layout,
s->mapping[k]);
if (idx < 0)
continue;
I = k * 2;
@ -671,6 +653,8 @@ static int config_input(AVFilterLink *inlink)
return AVERROR(EINVAL);
}
s->lfe_channel = av_get_channel_layout_channel_index(inlink->channel_layout,
AV_CH_LOW_FREQUENCY);
return 0;
}