History

avfiltergraph: make the AVFilterInOut alloc/free API public

This is required for letting applications to create and destroy AVFilterInOut structs in a convenient way.

Stefano Sabatini committed 15 years ago

Commit 91d3cbe1 parent 12e7e1d6 files · +42 −20Browse files

Unified · Split

6 files
  1. avconv.c +2 −2
  2. avplay.c +2 −2
  3. doc/APIchanges +4 −0
  4. libavfilter/avfiltergraph.h +13 −0
  5. libavfilter/graphparser.c +20 −15
  6. libavfilter/version.h +1 −1
avconv.c+2−2
@@ -592,8 +592,8 @@ static int configure_video_filters(InputStream *ist, OutputStream *ost) · 591 unmodified lines
592 ost->graph->scale_sws_opts = av_strdup(args);592 ost->graph->scale_sws_opts = av_strdup(args);
593 593
594 if (ost->avfilter) {594 if (ost->avfilter) {
595 AVFilterInOut *outputs = av_malloc(sizeof(AVFilterInOut));595 AVFilterInOut *outputs = avfilter_inout_alloc();
596 AVFilterInOut *inputs = av_malloc(sizeof(AVFilterInOut));596 AVFilterInOut *inputs = avfilter_inout_alloc();
597 597
598 outputs->name = av_strdup("in");598 outputs->name = av_strdup("in");
599 outputs->filter_ctx = last_filter;599 outputs->filter_ctx = last_filter;
avplay.c+2−2
@@ -1716,8 +1716,8 @@ static int configure_video_filters(AVFilterGraph *graph, VideoState *is, const c · 1715 unmodified lines
1716 return ret;1716 return ret;
1717 1717
1718 if (vfilters) {1718 if (vfilters) {
1719 AVFilterInOut *outputs = av_malloc(sizeof(AVFilterInOut));1719 AVFilterInOut *outputs = avfilter_inout_alloc();
1720 AVFilterInOut *inputs = av_malloc(sizeof(AVFilterInOut));1720 AVFilterInOut *inputs = avfilter_inout_alloc();
1721 1721
1722 outputs->name = av_strdup("in");1722 outputs->name = av_strdup("in");
1723 outputs->filter_ctx = filt_src;1723 outputs->filter_ctx = filt_src;
doc/APIchanges+4−0
@@ -12,6 +12,10 @@ libavutil: 2011-04-18 · 11 unmodified lines
12 12
13API changes, most recent first:13API changes, most recent first:
14 14
152012-xx-xx - xxxxxxx - lavfi 2.16.0 - avfiltergraph.h
16 Add avfilter_graph_parse2(), avfilter_inout_alloc() and
17 avfilter_inout_free() functions.
18
152012-xx-xx - xxxxxxx - lavu 51.27.0 - samplefmt.h192012-xx-xx - xxxxxxx - lavu 51.27.0 - samplefmt.h
16 Add av_get_packed_sample_fmt() and av_get_planar_sample_fmt()20 Add av_get_packed_sample_fmt() and av_get_planar_sample_fmt()
17 21
libavfilter/avfiltergraph.h+13−0
@@ -111,6 +111,19 @@ typedef struct AVFilterInOut { · 110 unmodified lines
111 struct AVFilterInOut *next;111 struct AVFilterInOut *next;
112} AVFilterInOut;112} AVFilterInOut;
113 113
114/**
115 * Allocate a single AVFilterInOut entry.
116 * Must be freed with avfilter_inout_free().
117 * @return allocated AVFilterInOut on success, NULL on failure.
118 */
119AVFilterInOut *avfilter_inout_alloc(void);
120
121/**
122 * Free the supplied list of AVFilterInOut and set *inout to NULL.
123 * If *inout is NULL, do nothing.
124 */
125void avfilter_inout_free(AVFilterInOut **inout);
126
114/**127/**
115 * Add a graph described by a string to a graph.128 * Add a graph described by a string to a graph.
116 *129 *
libavfilter/graphparser.c+20−15
@@ -170,13 +170,18 @@ static int parse_filter(AVFilterContext **filt_ctx, const char **buf, AVFilterGr · 169 unmodified lines
170 return ret;170 return ret;
171}171}
172 172
173static void free_inout(AVFilterInOut *head)173AVFilterInOut *avfilter_inout_alloc(void)
174{174{
175 while (head) {175 return av_mallocz(sizeof(AVFilterInOut));
176 AVFilterInOut *next = head->next;176}
177 av_free(head->name);177
178 av_free(head);178void avfilter_inout_free(AVFilterInOut **inout)
179 head = next;179{
180 while (*inout) {
181 AVFilterInOut *next = (*inout)->next;
182 av_freep(&(*inout)->name);
183 av_freep(inout);
184 *inout = next;
180 }185 }
181}186}
182 187
@@ -431,9 +436,9 @@ int avfilter_graph_parse2(AVFilterGraph *graph, const char *filters, · 248 unmodified lines
431 for (; graph->filter_count > 0; graph->filter_count--)436 for (; graph->filter_count > 0; graph->filter_count--)
432 avfilter_free(graph->filters[graph->filter_count - 1]);437 avfilter_free(graph->filters[graph->filter_count - 1]);
433 av_freep(&graph->filters);438 av_freep(&graph->filters);
434 free_inout(open_inputs);439 avfilter_inout_free(&open_inputs);
435 free_inout(open_outputs);440 avfilter_inout_free(&open_outputs);
436 free_inout(curr_inputs);441 avfilter_inout_free(&curr_inputs);
437 442
438 *inputs = NULL;443 *inputs = NULL;
439 *outputs = NULL;444 *outputs = NULL;
@@ -467,7 +472,7 @@ int avfilter_graph_parse(AVFilterGraph *graph, const char *filters, · 27 unmodified lines
467 continue;472 continue;
468 ret = avfilter_link(match->filter_ctx, match->pad_idx,473 ret = avfilter_link(match->filter_ctx, match->pad_idx,
469 cur->filter_ctx, cur->pad_idx);474 cur->filter_ctx, cur->pad_idx);
470 free_inout(match);475 avfilter_inout_free(&match);
471 if (ret < 0)476 if (ret < 0)
472 goto fail;477 goto fail;
473 }478 }
@@ -487,7 +492,7 @@ int avfilter_graph_parse(AVFilterGraph *graph, const char *filters, · 13 unmodified lines
487 continue;492 continue;
488 ret = avfilter_link(cur->filter_ctx, cur->pad_idx,493 ret = avfilter_link(cur->filter_ctx, cur->pad_idx,
489 match->filter_ctx, match->pad_idx);494 match->filter_ctx, match->pad_idx);
490 free_inout(match);495 avfilter_inout_free(&match);
491 if (ret < 0)496 if (ret < 0)
492 goto fail;497 goto fail;
493 }498 }
@@ -498,9 +503,9 @@ int avfilter_graph_parse(AVFilterGraph *graph, const char *filters, · 4 unmodified lines
498 avfilter_free(graph->filters[graph->filter_count - 1]);503 avfilter_free(graph->filters[graph->filter_count - 1]);
499 av_freep(&graph->filters);504 av_freep(&graph->filters);
500 }505 }
501 free_inout(inputs);506 avfilter_inout_free(&inputs);
502 free_inout(outputs);507 avfilter_inout_free(&outputs);
503 free_inout(open_inputs);508 avfilter_inout_free(&open_inputs);
504 free_inout(open_outputs);509 avfilter_inout_free(&open_outputs);
505 return ret;510 return ret;
506}511}
libavfilter/version.h+1−1
@@ -29,7 +29,7 @@ · 28 unmodified lines
29#include "libavutil/avutil.h"29#include "libavutil/avutil.h"
30 30
31#define LIBAVFILTER_VERSION_MAJOR 231#define LIBAVFILTER_VERSION_MAJOR 2
32#define LIBAVFILTER_VERSION_MINOR 1532#define LIBAVFILTER_VERSION_MINOR 16
33#define LIBAVFILTER_VERSION_MICRO 033#define LIBAVFILTER_VERSION_MICRO 0
34 34
35#define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \35#define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t