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 | static int link_out_config_props(AVFilterLink *link) | 101 | static int link_out_config_props(AVFilterLink *link) |
| 102 | { | 102 | { |
| 103 | AVFilterLink *link2 = get_extern_output_link(link); | 103 | AVFilterLink *link2 = get_extern_output_link(link); |
| 104 | int (*config_props)(AVFilterLink *); | ||
| 105 | 104 | ||
| 106 | if(!link2) | 105 | if(!link2) |
| 107 | return 0; | 106 | return 0; |
| @@ -109,9 +108,7 @@ static int link_out_config_props(AVFilterLink *link) · 1 unmodified line | |||
| 109 | link2->w = link->w; | 108 | link2->w = link->w; |
| 110 | link2->h = link->h; | 109 | link2->h = link->h; |
| 111 | 110 | ||
| 112 | if(!(config_props = link2->dst->input_pads[link2->dstpad].config_props)) | 111 | return 0; |
| 113 | config_props = avfilter_default_config_input_link; | ||
| 114 | return config_props(link2); | ||
| 115 | } | 112 | } |
| 116 | 113 | ||
| 117 | static void link_out_start_frame(AVFilterLink *link, AVFilterPicRef *picref) | 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 | AVFilterLink *link2 = get_intern_input_link(link); | 201 | AVFilterLink *link2 = get_intern_input_link(link); |
| 205 | int (*config_props)(AVFilterLink *); | 202 | int (*config_props)(AVFilterLink *); |
| 203 | int ret; | ||
| 206 | 204 | ||
| 207 | if(!link2) | 205 | if(!link2) |
| 208 | return -1; | 206 | return -1; |
| @@ -215,7 +213,12 @@ static int graph_in_config_props(AVFilterLink *link) · 6 unmodified lines | |||
| 215 | if(!(config_props = link2->dst->input_pads[link2->dstpad].config_props)) | 213 | if(!(config_props = link2->dst->input_pads[link2->dstpad].config_props)) |
| 216 | return 0; /* FIXME? */ | 214 | return 0; /* FIXME? */ |
| 217 | //config_props = avfilter_default_config_input_link; | 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 | static AVFilterLink *get_intern_output_link(AVFilterLink *link) | 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 | static int graph_out_config_props(AVFilterLink *link) | 239 | static int graph_out_config_props(AVFilterLink *link) |
| 237 | { | 240 | { |
| 238 | AVFilterLink *link2 = get_intern_output_link(link); | 241 | GraphContext *graph = link->src->priv; |
| 239 | int (*config_props)(AVFilterLink *); | 242 | AVFilterLink *link2 = graph->link_filter_out->inputs[link->srcpad]; |
| 240 | int ret; | 243 | int ret; |
| 241 | 244 | ||
| 245 | if((ret = avfilter_config_links(graph->link_filter_out))) | ||
| 246 | return ret; | ||
| 247 | |||
| 242 | if(!link2) | 248 | if(!link2) |
| 243 | return 0; | 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 | link->w = link2->w; | 251 | link->w = link2->w; |
| 254 | link->h = link2->h; | 252 | link->h = link2->h; |
| 255 | link->format = link2->format; | 253 | link->format = link2->format; |
| 256 | 254 | ||
| 257 | return ret; | 255 | return 0; |
| 258 | } | 256 | } |
| 259 | 257 | ||
| 260 | static int add_graph_input(AVFilterContext *gctx, AVFilterContext *filt, unsigned idx, | 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 | return 0; | 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 | static int graph_load_from_desc(AVFilterContext *ctx, AVFilterGraphDesc *desc) | 478 | static int graph_load_from_desc(AVFilterContext *ctx, AVFilterGraphDesc *desc) |
| 502 | { | 479 | { |
| 503 | AVFilterGraphDescFilter *curfilt; | 480 | AVFilterGraphDescFilter *curfilt; |