ffmpeg / libavfilter / avfiltergraph.h @ 4359288c
History | View | Annotate | Download (4.05 KB)
1 | eccb6fb7 | Vitor Sessak | /*
|
---|---|---|---|
2 | * Filter graphs
|
||
3 | * copyright (c) 2007 Bobby Bingham
|
||
4 | *
|
||
5 | * This file is part of FFmpeg.
|
||
6 | *
|
||
7 | * FFmpeg is free software; you can redistribute it and/or
|
||
8 | * modify it under the terms of the GNU Lesser General Public
|
||
9 | * License as published by the Free Software Foundation; either
|
||
10 | * version 2.1 of the License, or (at your option) any later version.
|
||
11 | *
|
||
12 | * FFmpeg is distributed in the hope that it will be useful,
|
||
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||
15 | * Lesser General Public License for more details.
|
||
16 | *
|
||
17 | * You should have received a copy of the GNU Lesser General Public
|
||
18 | * License along with FFmpeg; if not, write to the Free Software
|
||
19 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||
20 | */
|
||
21 | |||
22 | 98790382 | Stefano Sabatini | #ifndef AVFILTER_AVFILTERGRAPH_H
|
23 | #define AVFILTER_AVFILTERGRAPH_H
|
||
24 | eccb6fb7 | Vitor Sessak | |
25 | #include "avfilter.h" |
||
26 | |||
27 | f2ee8083 | Vitor Sessak | typedef struct AVFilterGraph { |
28 | unsigned filter_count;
|
||
29 | AVFilterContext **filters; |
||
30 | 39c07b8e | Stefano Sabatini | |
31 | char *scale_sws_opts; ///< sws options to use for the auto-inserted scale filters |
||
32 | 9f39bb37 | Vitor Sessak | } AVFilterGraph; |
33 | 3ec394ea | Vitor Sessak | |
34 | d22ebb1b | Vitor Sessak | /**
|
35 | e15aeea6 | Stefano Sabatini | * Allocate a filter graph.
|
36 | */
|
||
37 | AVFilterGraph *avfilter_graph_alloc(void);
|
||
38 | |||
39 | /**
|
||
40 | 49bd8e4b | Måns Rullgård | * Get a filter instance with name name from graph.
|
41 | 9864142b | Stefano Sabatini | *
|
42 | * @return the pointer to the found filter instance or NULL if it
|
||
43 | * cannot be found.
|
||
44 | d22ebb1b | Vitor Sessak | */
|
45 | d2027baa | Vitor Sessak | AVFilterContext *avfilter_graph_get_filter(AVFilterGraph *graph, char *name);
|
46 | d22ebb1b | Vitor Sessak | |
47 | 57d4a157 | Vitor Sessak | /**
|
48 | 49bd8e4b | Måns Rullgård | * Add an existing filter instance to a filter graph.
|
49 | bc3c85a3 | Stefano Sabatini | *
|
50 | 9a58234f | Diego Biurrun | * @param graphctx the filter graph
|
51 | bc3c85a3 | Stefano Sabatini | * @param filter the filter to be added
|
52 | eccb6fb7 | Vitor Sessak | */
|
53 | 4e4a3e23 | Vitor Sessak | int avfilter_graph_add_filter(AVFilterGraph *graphctx, AVFilterContext *filter);
|
54 | eccb6fb7 | Vitor Sessak | |
55 | 256d0e0a | Vitor Sessak | /**
|
56 | 037be76e | Stefano Sabatini | * Create and add a filter instance into an existing graph.
|
57 | * The filter instance is created from the filter filt and inited
|
||
58 | * with the parameters args and opaque.
|
||
59 | *
|
||
60 | * In case of success put in *filt_ctx the pointer to the created
|
||
61 | * filter instance, otherwise set *filt_ctx to NULL.
|
||
62 | *
|
||
63 | * @param name the instance name to give to the created filter instance
|
||
64 | * @param graph_ctx the filter graph
|
||
65 | * @return a negative AVERROR error code in case of failure, a non
|
||
66 | * negative value otherwise
|
||
67 | */
|
||
68 | int avfilter_graph_create_filter(AVFilterContext **filt_ctx, AVFilter *filt,
|
||
69 | const char *name, const char *args, void *opaque, |
||
70 | AVFilterGraph *graph_ctx); |
||
71 | |||
72 | /**
|
||
73 | 2a24df93 | Stefano Sabatini | * Check validity and configure all the links and formats in the graph.
|
74 | *
|
||
75 | 4fcbb2af | Stefano Sabatini | * @param graphctx the filter graph
|
76 | * @param log_ctx context used for logging
|
||
77 | * @return 0 in case of success, a negative AVERROR code otherwise
|
||
78 | 2a24df93 | Stefano Sabatini | */
|
79 | int avfilter_graph_config(AVFilterGraph *graphctx, AVClass *log_ctx);
|
||
80 | |||
81 | /**
|
||
82 | 4359288c | Stefano Sabatini | * Free a graph, destroy its links, and set *graph to NULL.
|
83 | * If *graph is NULL, do nothing.
|
||
84 | c4913b81 | Vitor Sessak | */
|
85 | 4359288c | Stefano Sabatini | void avfilter_graph_free(AVFilterGraph **graph);
|
86 | c4913b81 | Vitor Sessak | |
87 | 1e80a0ea | Stefano Sabatini | /**
|
88 | * A linked-list of the inputs/outputs of the filter chain.
|
||
89 | *
|
||
90 | * This is mainly useful for avfilter_graph_parse(), since this
|
||
91 | * function may accept a description of a graph with not connected
|
||
92 | * input/output pads. This struct specifies, per each not connected
|
||
93 | * pad contained in the graph, the filter context and the pad index
|
||
94 | * required for establishing a link.
|
||
95 | */
|
||
96 | typedef struct AVFilterInOut { |
||
97 | /** unique name for this input/output in the list */
|
||
98 | char *name;
|
||
99 | |||
100 | /** filter context associated to this input/output */
|
||
101 | AVFilterContext *filter_ctx; |
||
102 | |||
103 | /** index of the filt_ctx pad to use for linking */
|
||
104 | int pad_idx;
|
||
105 | |||
106 | /** next input/input in the list, NULL if this is the last */
|
||
107 | struct AVFilterInOut *next;
|
||
108 | } AVFilterInOut; |
||
109 | |||
110 | /**
|
||
111 | * Add a graph described by a string to a graph.
|
||
112 | *
|
||
113 | * @param graph the filter graph where to link the parsed graph context
|
||
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
|
||
117 | * @return zero on success, a negative AVERROR code on error
|
||
118 | */
|
||
119 | int avfilter_graph_parse(AVFilterGraph *graph, const char *filters, |
||
120 | AVFilterInOut *inputs, AVFilterInOut *outputs, |
||
121 | AVClass *log_ctx); |
||
122 | |||
123 | 98790382 | Stefano Sabatini | #endif /* AVFILTER_AVFILTERGRAPH_H */ |