Commit 7610dee8 authored by Michael Niedermayer's avatar Michael Niedermayer

avfiltergraph: improve pick_format()

without this the recent changes to format/sink handling would cause a regression in fate
Signed-off-by: 's avatarMichael Niedermayer <michaelni@gmx.at>
parent 61930bd0
......@@ -337,19 +337,42 @@ static void reduce_formats(AVFilterGraph *graph)
static void pick_formats(AVFilterGraph *graph)
{
int i, j;
for (i = 0; i < graph->filter_count; i++) {
AVFilterContext *filter = graph->filters[i];
if (filter->input_count && filter->output_count) {
for (j = 0; j < filter->input_count; j++)
pick_format(filter->inputs[j], NULL);
for (j = 0; j < filter->output_count; j++)
pick_format(filter->outputs[j], filter->inputs[0]);
int change;
do{
change = 0;
for (i = 0; i < graph->filter_count; i++) {
AVFilterContext *filter = graph->filters[i];
if (filter->input_count){
for (j = 0; j < filter->input_count; j++){
if(filter->inputs[j]->in_formats && filter->inputs[j]->in_formats->format_count == 1) {
pick_format(filter->inputs[j], NULL);
change = 1;
}
}
}
if (filter->output_count){
for (j = 0; j < filter->output_count; j++){
if(filter->outputs[j]->in_formats && filter->outputs[j]->in_formats->format_count == 1) {
pick_format(filter->outputs[j], NULL);
change = 1;
}
}
}
if (filter->input_count && filter->output_count && filter->inputs[0]->format>=0) {
for (j = 0; j < filter->output_count; j++) {
if(filter->outputs[j]->format<0) {
pick_format(filter->outputs[j], filter->inputs[0]);
change = 1;
}
}
}
}
}
}while(change);
for (i = 0; i < graph->filter_count; i++) {
AVFilterContext *filter = graph->filters[i];
if (!(filter->input_count && filter->output_count)) {
if (1) {
for (j = 0; j < filter->input_count; j++)
pick_format(filter->inputs[j], NULL);
for (j = 0; j < filter->output_count; j++)
......
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