| 641 | } |
| 642 | |
| 643 | static unsigned |
| 644 | find_linklabel(AVFilterGraphSegment *seg, const char *label, |
| 645 | int output, size_t idx_chain, size_t idx_filter, |
| 646 | AVFilterParams **pp) |
| 647 | { |
| 648 | for (; idx_chain < seg->nb_chains; idx_chain++) { |
| 649 | AVFilterChain *ch = seg->chains[idx_chain]; |
| 650 | |
| 651 | for (; idx_filter < ch->nb_filters; idx_filter++) { |
| 652 | AVFilterParams *p = ch->filters[idx_filter]; |
| 653 | AVFilterPadParams **io = output ? p->outputs : p->inputs; |
| 654 | unsigned nb_io = output ? p->nb_outputs : p->nb_inputs; |
| 655 | AVFilterLink **l; |
| 656 | unsigned nb_l; |
| 657 | |
| 658 | if (!p->filter) |
| 659 | continue; |
| 660 | |
| 661 | l = output ? p->filter->outputs : p->filter->inputs; |
| 662 | nb_l = output ? p->filter->nb_outputs : p->filter->nb_inputs; |
| 663 | |
| 664 | for (unsigned i = 0; i < FFMIN(nb_io, nb_l); i++) |
| 665 | if (!l[i] && io[i]->label && !strcmp(io[i]->label, label)) { |
| 666 | *pp = p; |
| 667 | return i; |
| 668 | } |
| 669 | } |
| 670 | |
| 671 | idx_filter = 0; |
| 672 | } |
| 673 | |
| 674 | *pp = NULL; |
| 675 | return 0; |
| 676 | } |
| 677 | |
| 678 | static int inout_add(AVFilterInOut **inouts, AVFilterContext *f, unsigned pad_idx, |
| 679 | const char *label) |
no outgoing calls
no test coverage detected