Make it returns the list of open inputs and outputs, so it can be
reused by applications.
Breaks API/ABI.
| ... | ... |
@@ -13,6 +13,9 @@ libavutil: 2011-04-18 |
| 13 | 13 |
|
| 14 | 14 |
API changes, most recent first: |
| 15 | 15 |
|
| 16 |
+2011-06-12 - xxxxxxx - lavfi 2.16.0 - avfilter_graph_parse() |
|
| 17 |
+ Change avfilter_graph_parse() signature. |
|
| 18 |
+ |
|
| 16 | 19 |
2011-06-xx - xxxxxxx - lavu 51.6.0 - opt.h |
| 17 | 20 |
Add av_opt_flag_is_set(). |
| 18 | 21 |
|
| ... | ... |
@@ -418,7 +418,7 @@ static int configure_video_filters(AVInputStream *ist, AVOutputStream *ost) |
| 418 | 418 |
inputs->pad_idx = 0; |
| 419 | 419 |
inputs->next = NULL; |
| 420 | 420 |
|
| 421 |
- if ((ret = avfilter_graph_parse(ost->graph, ost->avfilter, inputs, outputs, NULL)) < 0) |
|
| 421 |
+ if ((ret = avfilter_graph_parse(ost->graph, ost->avfilter, &inputs, &outputs, NULL)) < 0) |
|
| 422 | 422 |
return ret; |
| 423 | 423 |
av_freep(&ost->avfilter); |
| 424 | 424 |
} else {
|
| ... | ... |
@@ -1708,7 +1708,7 @@ static int configure_video_filters(AVFilterGraph *graph, VideoState *is, const c |
| 1708 | 1708 |
inputs->pad_idx = 0; |
| 1709 | 1709 |
inputs->next = NULL; |
| 1710 | 1710 |
|
| 1711 |
- if ((ret = avfilter_graph_parse(graph, vfilters, inputs, outputs, NULL)) < 0) |
|
| 1711 |
+ if ((ret = avfilter_graph_parse(graph, vfilters, &inputs, &outputs, NULL)) < 0) |
|
| 1712 | 1712 |
goto the_end; |
| 1713 | 1713 |
av_freep(&vfilters); |
| 1714 | 1714 |
} else {
|
| ... | ... |
@@ -26,8 +26,8 @@ |
| 26 | 26 |
#include "libavutil/samplefmt.h" |
| 27 | 27 |
|
| 28 | 28 |
#define LIBAVFILTER_VERSION_MAJOR 2 |
| 29 |
-#define LIBAVFILTER_VERSION_MINOR 15 |
|
| 30 |
-#define LIBAVFILTER_VERSION_MICRO 1 |
|
| 29 |
+#define LIBAVFILTER_VERSION_MINOR 16 |
|
| 30 |
+#define LIBAVFILTER_VERSION_MICRO 0 |
|
| 31 | 31 |
|
| 32 | 32 |
#define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \ |
| 33 | 33 |
LIBAVFILTER_VERSION_MINOR, \ |
| ... | ... |
@@ -112,12 +112,14 @@ typedef struct AVFilterInOut {
|
| 112 | 112 |
* |
| 113 | 113 |
* @param graph the filter graph where to link the parsed graph context |
| 114 | 114 |
* @param filters string to be parsed |
| 115 |
- * @param inputs linked list to the inputs of the graph |
|
| 116 |
- * @param outputs linked list to the outputs of the graph |
|
| 115 |
+ * @param inputs linked list to the inputs of the graph, may be NULL. |
|
| 116 |
+ * It is updated to contain the list of open inputs after the parsing. |
|
| 117 |
+ * @param outputs linked list to the outputs of the graph, may be NULL. |
|
| 118 |
+ * It is updated to contain the list of open outputs after the parsing. |
|
| 117 | 119 |
* @return zero on success, a negative AVERROR code on error |
| 118 | 120 |
*/ |
| 119 | 121 |
int avfilter_graph_parse(AVFilterGraph *graph, const char *filters, |
| 120 |
- AVFilterInOut *inputs, AVFilterInOut *outputs, |
|
| 122 |
+ AVFilterInOut **inputs, AVFilterInOut **outputs, |
|
| 121 | 123 |
void *log_ctx); |
| 122 | 124 |
|
| 123 | 125 |
#endif /* AVFILTER_AVFILTERGRAPH_H */ |
| ... | ... |
@@ -328,8 +328,8 @@ static int parse_outputs(const char **buf, AVFilterInOut **curr_inputs, |
| 328 | 328 |
} |
| 329 | 329 |
|
| 330 | 330 |
int avfilter_graph_parse(AVFilterGraph *graph, const char *filters, |
| 331 |
- AVFilterInOut *open_inputs, |
|
| 332 |
- AVFilterInOut *open_outputs, void *log_ctx) |
|
| 331 |
+ AVFilterInOut **open_inputs, AVFilterInOut **open_outputs, |
|
| 332 |
+ void *log_ctx) |
|
| 333 | 333 |
{
|
| 334 | 334 |
int index = 0, ret; |
| 335 | 335 |
char chr = 0; |
| ... | ... |
@@ -341,7 +341,7 @@ int avfilter_graph_parse(AVFilterGraph *graph, const char *filters, |
| 341 | 341 |
const char *filterchain = filters; |
| 342 | 342 |
filters += strspn(filters, WHITESPACES); |
| 343 | 343 |
|
| 344 |
- if ((ret = parse_inputs(&filters, &curr_inputs, &open_outputs, log_ctx)) < 0) |
|
| 344 |
+ if ((ret = parse_inputs(&filters, &curr_inputs, open_outputs, log_ctx)) < 0) |
|
| 345 | 345 |
goto fail; |
| 346 | 346 |
|
| 347 | 347 |
if ((ret = parse_filter(&filter, &filters, graph, index, log_ctx)) < 0) |
| ... | ... |
@@ -350,14 +350,14 @@ int avfilter_graph_parse(AVFilterGraph *graph, const char *filters, |
| 350 | 350 |
if (filter->input_count == 1 && !curr_inputs && !index) {
|
| 351 | 351 |
/* First input can be omitted if it is "[in]" */ |
| 352 | 352 |
const char *tmp = "[in]"; |
| 353 |
- if ((ret = parse_inputs(&tmp, &curr_inputs, &open_outputs, log_ctx)) < 0) |
|
| 353 |
+ if ((ret = parse_inputs(&tmp, &curr_inputs, open_outputs, log_ctx)) < 0) |
|
| 354 | 354 |
goto fail; |
| 355 | 355 |
} |
| 356 | 356 |
|
| 357 |
- if ((ret = link_filter_inouts(filter, &curr_inputs, &open_inputs, log_ctx)) < 0) |
|
| 357 |
+ if ((ret = link_filter_inouts(filter, &curr_inputs, open_inputs, log_ctx)) < 0) |
|
| 358 | 358 |
goto fail; |
| 359 | 359 |
|
| 360 |
- if ((ret = parse_outputs(&filters, &curr_inputs, &open_inputs, &open_outputs, |
|
| 360 |
+ if ((ret = parse_outputs(&filters, &curr_inputs, open_inputs, open_outputs, |
|
| 361 | 361 |
log_ctx)) < 0) |
| 362 | 362 |
goto fail; |
| 363 | 363 |
|
| ... | ... |
@@ -382,10 +382,10 @@ int avfilter_graph_parse(AVFilterGraph *graph, const char *filters, |
| 382 | 382 |
goto fail; |
| 383 | 383 |
} |
| 384 | 384 |
|
| 385 |
- if (open_inputs && !strcmp(open_inputs->name, "out") && curr_inputs) {
|
|
| 385 |
+ if (*open_inputs && !strcmp((*open_inputs)->name, "out") && curr_inputs) {
|
|
| 386 | 386 |
/* Last output can be omitted if it is "[out]" */ |
| 387 | 387 |
const char *tmp = "[out]"; |
| 388 |
- if ((ret = parse_outputs(&tmp, &curr_inputs, &open_inputs, &open_outputs, |
|
| 388 |
+ if ((ret = parse_outputs(&tmp, &curr_inputs, open_inputs, open_outputs, |
|
| 389 | 389 |
log_ctx)) < 0) |
| 390 | 390 |
goto fail; |
| 391 | 391 |
} |
| ... | ... |
@@ -396,8 +396,8 @@ int avfilter_graph_parse(AVFilterGraph *graph, const char *filters, |
| 396 | 396 |
for (; graph->filter_count > 0; graph->filter_count--) |
| 397 | 397 |
avfilter_free(graph->filters[graph->filter_count - 1]); |
| 398 | 398 |
av_freep(&graph->filters); |
| 399 |
- free_inout(open_inputs); |
|
| 400 |
- free_inout(open_outputs); |
|
| 399 |
+ free_inout(*open_inputs); |
|
| 400 |
+ free_inout(*open_outputs); |
|
| 401 | 401 |
free_inout(curr_inputs); |
| 402 | 402 |
return ret; |
| 403 | 403 |
} |