mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
avfiltergraph: make the AVFilterInOut alloc/free API public
This is required for letting applications to create and destroy AVFilterInOut structs in a convenient way. Signed-off-by: Anton Khirnov <anton@khirnov.net>
This commit is contained in:
parent
12e7e1d03e
commit
91d3cbe0fd
4
avconv.c
4
avconv.c
@ -592,8 +592,8 @@ static int configure_video_filters(InputStream *ist, OutputStream *ost)
|
|||||||
ost->graph->scale_sws_opts = av_strdup(args);
|
ost->graph->scale_sws_opts = av_strdup(args);
|
||||||
|
|
||||||
if (ost->avfilter) {
|
if (ost->avfilter) {
|
||||||
AVFilterInOut *outputs = av_malloc(sizeof(AVFilterInOut));
|
AVFilterInOut *outputs = avfilter_inout_alloc();
|
||||||
AVFilterInOut *inputs = av_malloc(sizeof(AVFilterInOut));
|
AVFilterInOut *inputs = avfilter_inout_alloc();
|
||||||
|
|
||||||
outputs->name = av_strdup("in");
|
outputs->name = av_strdup("in");
|
||||||
outputs->filter_ctx = last_filter;
|
outputs->filter_ctx = last_filter;
|
||||||
|
4
avplay.c
4
avplay.c
@ -1716,8 +1716,8 @@ static int configure_video_filters(AVFilterGraph *graph, VideoState *is, const c
|
|||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
if (vfilters) {
|
if (vfilters) {
|
||||||
AVFilterInOut *outputs = av_malloc(sizeof(AVFilterInOut));
|
AVFilterInOut *outputs = avfilter_inout_alloc();
|
||||||
AVFilterInOut *inputs = av_malloc(sizeof(AVFilterInOut));
|
AVFilterInOut *inputs = avfilter_inout_alloc();
|
||||||
|
|
||||||
outputs->name = av_strdup("in");
|
outputs->name = av_strdup("in");
|
||||||
outputs->filter_ctx = filt_src;
|
outputs->filter_ctx = filt_src;
|
||||||
|
@ -12,6 +12,10 @@ libavutil: 2011-04-18
|
|||||||
|
|
||||||
API changes, most recent first:
|
API changes, most recent first:
|
||||||
|
|
||||||
|
2012-xx-xx - xxxxxxx - lavfi 2.16.0 - avfiltergraph.h
|
||||||
|
Add avfilter_graph_parse2(), avfilter_inout_alloc() and
|
||||||
|
avfilter_inout_free() functions.
|
||||||
|
|
||||||
2012-xx-xx - xxxxxxx - lavu 51.27.0 - samplefmt.h
|
2012-xx-xx - xxxxxxx - lavu 51.27.0 - samplefmt.h
|
||||||
Add av_get_packed_sample_fmt() and av_get_planar_sample_fmt()
|
Add av_get_packed_sample_fmt() and av_get_planar_sample_fmt()
|
||||||
|
|
||||||
|
@ -111,6 +111,19 @@ typedef struct AVFilterInOut {
|
|||||||
struct AVFilterInOut *next;
|
struct AVFilterInOut *next;
|
||||||
} AVFilterInOut;
|
} AVFilterInOut;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allocate a single AVFilterInOut entry.
|
||||||
|
* Must be freed with avfilter_inout_free().
|
||||||
|
* @return allocated AVFilterInOut on success, NULL on failure.
|
||||||
|
*/
|
||||||
|
AVFilterInOut *avfilter_inout_alloc(void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Free the supplied list of AVFilterInOut and set *inout to NULL.
|
||||||
|
* If *inout is NULL, do nothing.
|
||||||
|
*/
|
||||||
|
void avfilter_inout_free(AVFilterInOut **inout);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add a graph described by a string to a graph.
|
* Add a graph described by a string to a graph.
|
||||||
*
|
*
|
||||||
|
@ -170,13 +170,18 @@ static int parse_filter(AVFilterContext **filt_ctx, const char **buf, AVFilterGr
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void free_inout(AVFilterInOut *head)
|
AVFilterInOut *avfilter_inout_alloc(void)
|
||||||
{
|
{
|
||||||
while (head) {
|
return av_mallocz(sizeof(AVFilterInOut));
|
||||||
AVFilterInOut *next = head->next;
|
}
|
||||||
av_free(head->name);
|
|
||||||
av_free(head);
|
void avfilter_inout_free(AVFilterInOut **inout)
|
||||||
head = next;
|
{
|
||||||
|
while (*inout) {
|
||||||
|
AVFilterInOut *next = (*inout)->next;
|
||||||
|
av_freep(&(*inout)->name);
|
||||||
|
av_freep(inout);
|
||||||
|
*inout = next;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -431,9 +436,9 @@ int avfilter_graph_parse2(AVFilterGraph *graph, const char *filters,
|
|||||||
for (; graph->filter_count > 0; graph->filter_count--)
|
for (; graph->filter_count > 0; graph->filter_count--)
|
||||||
avfilter_free(graph->filters[graph->filter_count - 1]);
|
avfilter_free(graph->filters[graph->filter_count - 1]);
|
||||||
av_freep(&graph->filters);
|
av_freep(&graph->filters);
|
||||||
free_inout(open_inputs);
|
avfilter_inout_free(&open_inputs);
|
||||||
free_inout(open_outputs);
|
avfilter_inout_free(&open_outputs);
|
||||||
free_inout(curr_inputs);
|
avfilter_inout_free(&curr_inputs);
|
||||||
|
|
||||||
*inputs = NULL;
|
*inputs = NULL;
|
||||||
*outputs = NULL;
|
*outputs = NULL;
|
||||||
@ -467,7 +472,7 @@ int avfilter_graph_parse(AVFilterGraph *graph, const char *filters,
|
|||||||
continue;
|
continue;
|
||||||
ret = avfilter_link(match->filter_ctx, match->pad_idx,
|
ret = avfilter_link(match->filter_ctx, match->pad_idx,
|
||||||
cur->filter_ctx, cur->pad_idx);
|
cur->filter_ctx, cur->pad_idx);
|
||||||
free_inout(match);
|
avfilter_inout_free(&match);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
@ -487,7 +492,7 @@ int avfilter_graph_parse(AVFilterGraph *graph, const char *filters,
|
|||||||
continue;
|
continue;
|
||||||
ret = avfilter_link(cur->filter_ctx, cur->pad_idx,
|
ret = avfilter_link(cur->filter_ctx, cur->pad_idx,
|
||||||
match->filter_ctx, match->pad_idx);
|
match->filter_ctx, match->pad_idx);
|
||||||
free_inout(match);
|
avfilter_inout_free(&match);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
@ -498,9 +503,9 @@ int avfilter_graph_parse(AVFilterGraph *graph, const char *filters,
|
|||||||
avfilter_free(graph->filters[graph->filter_count - 1]);
|
avfilter_free(graph->filters[graph->filter_count - 1]);
|
||||||
av_freep(&graph->filters);
|
av_freep(&graph->filters);
|
||||||
}
|
}
|
||||||
free_inout(inputs);
|
avfilter_inout_free(&inputs);
|
||||||
free_inout(outputs);
|
avfilter_inout_free(&outputs);
|
||||||
free_inout(open_inputs);
|
avfilter_inout_free(&open_inputs);
|
||||||
free_inout(open_outputs);
|
avfilter_inout_free(&open_outputs);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -29,7 +29,7 @@
|
|||||||
#include "libavutil/avutil.h"
|
#include "libavutil/avutil.h"
|
||||||
|
|
||||||
#define LIBAVFILTER_VERSION_MAJOR 2
|
#define LIBAVFILTER_VERSION_MAJOR 2
|
||||||
#define LIBAVFILTER_VERSION_MINOR 15
|
#define LIBAVFILTER_VERSION_MINOR 16
|
||||||
#define LIBAVFILTER_VERSION_MICRO 0
|
#define LIBAVFILTER_VERSION_MICRO 0
|
||||||
|
|
||||||
#define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \
|
#define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \
|
||||||
|
Loading…
Reference in New Issue
Block a user