mirror of
https://github.com/nyanmisaka/ffmpeg-rockchip.git
synced 2025-10-13 12:34:26 +08:00
libavfilter: src_buffer, use only aresample, not aconvert.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
@@ -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,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
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;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user