Commit 664f0aac authored by Michael Niedermayer's avatar Michael Niedermayer

libavfilter: src_buffer, use only aresample, not aconvert.

Signed-off-by: 's avatarMichael Niedermayer <michaelni@gmx.at>
parent 13fdb355
...@@ -215,19 +215,25 @@ static int check_format_change_audio(AVFilterContext *ctx, ...@@ -215,19 +215,25 @@ static int check_format_change_audio(AVFilterContext *ctx,
int ret, logged = 0; int ret, logged = 0;
link = ctx->outputs[0]; link = ctx->outputs[0];
if (samplesref->audio->sample_rate != link->sample_rate) { if (samplesref->audio->sample_rate != link->sample_rate ||
samplesref->format != link->format ||
samplesref->audio->channel_layout != link->channel_layout) {
log_input_change(ctx, link, samplesref); log_input_change(ctx, link, samplesref);
logged = 1; logged = 1;
abuffer->sample_rate = samplesref->audio->sample_rate; abuffer->sample_rate = samplesref->audio->sample_rate;
abuffer->sample_format = samplesref->format;
abuffer->channel_layout = samplesref->audio->channel_layout;
if (!abuffer->aresample) { if (!abuffer->aresample) {
ret = insert_filter(abuffer, link, &abuffer->aresample, "aresample"); ret = insert_filter(abuffer, link, &abuffer->aresample, "aresample");
if (ret < 0) return ret; if (ret < 0) return ret;
} else { } else {
link = abuffer->aresample->outputs[0]; link = abuffer->aresample->outputs[0];
if (samplesref->audio->sample_rate == link->sample_rate) if (samplesref->audio->sample_rate == link->sample_rate &&
samplesref->format == link->format &&
samplesref->audio->channel_layout == link->channel_layout)
remove_filter(&abuffer->aresample); remove_filter(&abuffer->aresample);
else else
if ((ret = reconfigure_filter(abuffer, abuffer->aresample)) < 0) if ((ret = reconfigure_filter(abuffer, abuffer->aresample)) < 0)
...@@ -235,28 +241,6 @@ static int check_format_change_audio(AVFilterContext *ctx, ...@@ -235,28 +241,6 @@ static int check_format_change_audio(AVFilterContext *ctx,
} }
} }
link = ctx->outputs[0];
if (samplesref->format != link->format ||
samplesref->audio->channel_layout != link->channel_layout) {
if (!logged) log_input_change(ctx, link, samplesref);
abuffer->sample_format = samplesref->format;
abuffer->channel_layout = samplesref->audio->channel_layout;
if (!abuffer->aconvert) {
ret = insert_filter(abuffer, link, &abuffer->aconvert, "aconvert");
if (ret < 0) return ret;
} else {
link = abuffer->aconvert->outputs[0];
if (samplesref->format == link->format &&
samplesref->audio->channel_layout == link->channel_layout)
remove_filter(&abuffer->aconvert);
else
if ((ret = reconfigure_filter(abuffer, abuffer->aconvert)) < 0)
return ret;
}
}
return 0; return 0;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment