| 411 | } |
| 412 | |
| 413 | static int formats_declared(AVFilterContext *f) |
| 414 | { |
| 415 | int i; |
| 416 | |
| 417 | for (i = 0; i < f->nb_inputs; i++) { |
| 418 | if (!f->inputs[i]->outcfg.formats) |
| 419 | return 0; |
| 420 | if (f->inputs[i]->type == AVMEDIA_TYPE_VIDEO && |
| 421 | !(f->inputs[i]->outcfg.color_ranges && |
| 422 | f->inputs[i]->outcfg.color_spaces && |
| 423 | f->inputs[i]->outcfg.alpha_modes)) |
| 424 | return 0; |
| 425 | if (f->inputs[i]->type == AVMEDIA_TYPE_AUDIO && |
| 426 | !(f->inputs[i]->outcfg.samplerates && |
| 427 | f->inputs[i]->outcfg.channel_layouts)) |
| 428 | return 0; |
| 429 | } |
| 430 | for (i = 0; i < f->nb_outputs; i++) { |
| 431 | if (!f->outputs[i]->incfg.formats) |
| 432 | return 0; |
| 433 | if (f->outputs[i]->type == AVMEDIA_TYPE_VIDEO && |
| 434 | !(f->outputs[i]->incfg.color_ranges && |
| 435 | f->outputs[i]->incfg.color_spaces && |
| 436 | f->outputs[i]->incfg.alpha_modes)) |
| 437 | return 0; |
| 438 | if (f->outputs[i]->type == AVMEDIA_TYPE_AUDIO && |
| 439 | !(f->outputs[i]->incfg.samplerates && |
| 440 | f->outputs[i]->incfg.channel_layouts)) |
| 441 | return 0; |
| 442 | } |
| 443 | return 1; |
| 444 | } |
| 445 | |
| 446 | static void print_link_formats(void *log_ctx, int level, const AVFilterLink *l, |
| 447 | const AVFilterFormatsMerger *mergers[], |