Commited in SoC by Bobby Bingham on 2007-12-24 03:22:10 Originally committed as revision 12031 to svn://svn.ffmpeg.org/ffmpeg/trunk
Unified · Split
| @@ -125,23 +125,41 @@ int avfilter_insert_filter(AVFilterLink *link, AVFilterContext *filt, · 124 unmodified lines | |||
| 125 | return 0; | 125 | return 0; |
| 126 | } | 126 | } |
| 127 | 127 | ||
| 128 | int avfilter_config_link(AVFilterLink *link) | 128 | int avfilter_config_links(AVFilterContext *filter) |
| 129 | { | 129 | { |
| 130 | int (*config_link)(AVFilterLink *); | 130 | int (*config_link)(AVFilterLink *); |
| 131 | unsigned i; | ||
| 131 | 132 | ||
| 132 | if(!link) | 133 | for(i = 0; i < filter->input_count; i ++) { |
| 133 | return 0; | 134 | AVFilterLink *link; |
| 135 | |||
| 136 | if(!(link = filter->inputs[i])) continue; | ||
| 137 | |||
| 138 | switch(link->init_state) { | ||
| 139 | case AVLINK_INIT: | ||
| 140 | continue; | ||
| 141 | case AVLINK_STARTINIT: | ||
| 142 | av_log(filter, AV_LOG_ERROR, "circular filter chain detected\n"); | ||
| 143 | return -1; | ||
| 144 | case AVLINK_UNINIT: | ||
| 145 | link->init_state = AVLINK_STARTINIT; | ||
| 146 | |||
| 147 | if(avfilter_config_links(link->src)) | ||
| 148 | return -1; | ||
| 134 | 149 | ||
| 135 | if(!(config_link = link_spad(link).config_props)) | 150 | if(!(config_link = link_spad(link).config_props)) |
| 136 | config_link = avfilter_default_config_output_link; | 151 | config_link = avfilter_default_config_output_link; |
| 137 | if(config_link(link)) | 152 | if(config_link(link)) |
| 138 | return -1; | 153 | return -1; |
| 139 | 154 | ||
| 140 | if(!(config_link = link_dpad(link).config_props)) | 155 | if((config_link = link_dpad(link).config_props)) |
| 141 | config_link = avfilter_default_config_input_link; | ||
| 142 | if(config_link(link)) | 156 | if(config_link(link)) |
| 143 | return -1; | 157 | return -1; |
| 144 | 158 | ||
| 159 | link->init_state = AVLINK_INIT; | ||
| 160 | } | ||
| 161 | } | ||
| 162 | |||
| 145 | return 0; | 163 | return 0; |
| 146 | } | 164 | } |
| 147 | 165 | ||