Commit 42655b24 authored by Nicolas George's avatar Nicolas George

avfiltergraph: avoid harmful auto audio conversions.

With the current code, an automatically inserted aconvert necessary
for format change would usually convert to mono for no good reason.

The new code will not avoid all conversions, but at least will keep
them among the layouts common to both filters.
parent 69a653ca
...@@ -187,6 +187,7 @@ static int query_formats(AVFilterGraph *graph, AVClass *log_ctx) ...@@ -187,6 +187,7 @@ static int query_formats(AVFilterGraph *graph, AVClass *log_ctx)
{ {
int i, j, ret; int i, j, ret;
char filt_args[128]; char filt_args[128];
AVFilterFormats *formats, *chlayouts, *packing;
/* ask all the sub-filters for their supported media formats */ /* ask all the sub-filters for their supported media formats */
for (i = 0; i < graph->filter_count; i++) { for (i = 0; i < graph->filter_count; i++) {
...@@ -221,9 +222,13 @@ static int query_formats(AVFilterGraph *graph, AVClass *log_ctx) ...@@ -221,9 +222,13 @@ static int query_formats(AVFilterGraph *graph, AVClass *log_ctx)
!link->in_packing || !link->out_packing) !link->in_packing || !link->out_packing)
return AVERROR(EINVAL); return AVERROR(EINVAL);
if (!avfilter_merge_formats(link->in_formats, link->out_formats) || /* Merge all three list before checking: that way, in all
!avfilter_merge_formats(link->in_chlayouts, link->out_chlayouts) || * three categories, aconvert will use a common format
!avfilter_merge_formats(link->in_packing, link->out_packing)) * whenever possible. */
formats = avfilter_merge_formats(link->in_formats, link->out_formats);
chlayouts = avfilter_merge_formats(link->in_chlayouts, link->out_chlayouts);
packing = avfilter_merge_formats(link->in_packing, link->out_packing);
if (!formats || !chlayouts || !packing)
if (ret = insert_conv_filter(graph, link, "aconvert", NULL)) if (ret = insert_conv_filter(graph, link, "aconvert", NULL))
return ret; return ret;
} }
......
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