Commited in SoC by Bobby Bingham on 2007-12-24 03:22:10 Originally committed as revision 12717 to svn://svn.ffmpeg.org/ffmpeg/trunk
Showing the changes to libavfilter/avfiltergraph.c (1 of 1 file). Show all
Unified · Split
| @@ -101,7 +101,6 @@ static inline AVFilterLink *get_extern_output_link(AVFilterLink *link) · 100 unmodified lines | ||
| 101 | 101 | static int link_out_config_props(AVFilterLink *link) |
| 102 | 102 | { |
| 103 | 103 | AVFilterLink *link2 = get_extern_output_link(link); |
| 104 | − int (*config_props)(AVFilterLink *); | |
| 105 | 104 | |
| 106 | 105 | if(!link2) |
| 107 | 106 | return 0; |
| @@ -109,9 +108,7 @@ static int link_out_config_props(AVFilterLink *link) · 1 unmodified line | ||
| 109 | 108 | link2->w = link->w; |
| 110 | 109 | link2->h = link->h; |
| 111 | 110 | |
| 112 | − if(!(config_props = link2->dst->input_pads[link2->dstpad].config_props)) | |
| 113 | − config_props = avfilter_default_config_input_link; | |
| 114 | − return config_props(link2); | |
| 111 | + return 0; | |
| 115 | 112 | } |
| 116 | 113 | |
| 117 | 114 | static void link_out_start_frame(AVFilterLink *link, AVFilterPicRef *picref) |
| @@ -203,6 +200,7 @@ static int graph_in_config_props(AVFilterLink *link) · 85 unmodified lines | ||
| 203 | 200 | { |
| 204 | 201 | AVFilterLink *link2 = get_intern_input_link(link); |
| 205 | 202 | int (*config_props)(AVFilterLink *); |
| 203 | + int ret; | |
| 206 | 204 | |
| 207 | 205 | if(!link2) |
| 208 | 206 | return -1; |
| @@ -215,7 +213,12 @@ static int graph_in_config_props(AVFilterLink *link) · 6 unmodified lines | ||
| 215 | 213 | if(!(config_props = link2->dst->input_pads[link2->dstpad].config_props)) |
| 216 | 214 | return 0; /* FIXME? */ |
| 217 | 215 | //config_props = avfilter_default_config_input_link; |
| 218 | − return config_props(link2); | |
| 216 | + if(!(ret = config_props(link2))) | |
| 217 | + link2->init_state = AVLINK_INIT; | |
| 218 | + else | |
| 219 | + link2->init_state = AVLINK_STARTINIT; | |
| 220 | + | |
| 221 | + return ret; | |
| 219 | 222 | } |
| 220 | 223 | |
| 221 | 224 | static AVFilterLink *get_intern_output_link(AVFilterLink *link) |
| @@ -235,26 +238,21 @@ static int graph_out_request_frame(AVFilterLink *link) · 13 unmodified lines | ||
| 235 | 238 | |
| 236 | 239 | static int graph_out_config_props(AVFilterLink *link) |
| 237 | 240 | { |
| 238 | − AVFilterLink *link2 = get_intern_output_link(link); | |
| 239 | − int (*config_props)(AVFilterLink *); | |
| 241 | + GraphContext *graph = link->src->priv; | |
| 242 | + AVFilterLink *link2 = graph->link_filter_out->inputs[link->srcpad]; | |
| 240 | 243 | int ret; |
| 241 | 244 | |
| 245 | + if((ret = avfilter_config_links(graph->link_filter_out))) | |
| 246 | + return ret; | |
| 247 | + | |
| 242 | 248 | if(!link2) |
| 243 | 249 | return 0; |
| 244 | 250 | |
| 245 | − link2->w = link->w; | |
| 246 | − link2->h = link->h; | |
| 247 | − link2->format = link->format; | |
| 248 | − | |
| 249 | − if(!(config_props = link2->src->output_pads[link2->srcpad].config_props)) | |
| 250 | − config_props = avfilter_default_config_output_link; | |
| 251 | − ret = config_props(link2); | |
| 252 | − | |
| 253 | 251 | link->w = link2->w; |
| 254 | 252 | link->h = link2->h; |
| 255 | 253 | link->format = link2->format; |
| 256 | 254 | |
| 257 | − return ret; | |
| 255 | + return 0; | |
| 258 | 256 | } |
| 259 | 257 | |
| 260 | 258 | static int add_graph_input(AVFilterContext *gctx, AVFilterContext *filt, unsigned idx, |
| @@ -477,27 +475,6 @@ int avfilter_graph_config_formats(AVFilterContext *graphctx) · 216 unmodified lines | ||
| 477 | 475 | return 0; |
| 478 | 476 | } |
| 479 | 477 | |
| 480 | −int avfilter_graph_config_links(AVFilterContext *graphctx) | |
| 481 | −{ | |
| 482 | − GraphContext *graph = graphctx->priv; | |
| 483 | − int i, j; | |
| 484 | − | |
| 485 | − for(i = 0; i < graph->filter_count; i ++) { | |
| 486 | − for(j = 0; j < graph->filters[i]->input_count; j ++) { | |
| 487 | − /* ensure that graphs contained within graphs are configured */ | |
| 488 | − if((graph->filters[i]->filter == &avfilter_vf_graph || | |
| 489 | − graph->filters[i]->filter == &avfilter_vf_graphfile || | |
| 490 | − graph->filters[i]->filter == &avfilter_vf_graphdesc) && | |
| 491 | − avfilter_graph_config_links(graph->filters[i])) | |
| 492 | − return -1; | |
| 493 | − if(avfilter_config_link(graph->filters[i]->inputs[j])) | |
| 494 | − return -1; | |
| 495 | − } | |
| 496 | − } | |
| 497 | − | |
| 498 | − return 0; | |
| 499 | −} | |
| 500 | − | |
| 501 | 478 | static int graph_load_from_desc(AVFilterContext *ctx, AVFilterGraphDesc *desc) |
| 502 | 479 | { |
| 503 | 480 | AVFilterGraphDescFilter *curfilt; |