History

Merge commit '38f0c0781a6e099f11c0acec07f9b8be742190c4'

* commit '38f0c0781a6e099f11c0acec07f9b8be742190c4': lavfi: merge avfiltergraph.h into avfilter.h Conflicts: doc/APIchanges ffmpeg_filter.c libavfilter/avfilter.h libavfilter/avfiltergraph.h libavfilter/version.h tools/graph2dot.c

Michael Niedermayer committed 13 years ago

Commit 231fd442 parents 9110f95 38f0c0713 files · +259 −263Browse files

Unified · Split

13 files
  1. doc/APIchanges +4 −0
  2. doc/filters.texi +1 −1
  3. ffmpeg.c +0 −1
  4. ffmpeg.h +0 −1
  5. ffmpeg_filter.c +0 −1
  6. ffmpeg_opt.c +0 −1
  7. ffplay.c +0 −1
  8. libavfilter/avfilter.h +251 −0
  9. libavfilter/avfiltergraph.c +0 −1
  10. libavfilter/avfiltergraph.h +0 −252
  11. libavfilter/graphparser.c +0 −1
  12. libavfilter/version.h +2 −2
  13. tools/graph2dot.c +1 −1
doc/APIchanges+4−0
@@ -156,6 +156,10 @@ API changes, most recent first: · 155 unmodified lines
1562012-03-26 - a67d9cf - lavfi 2.66.1001562012-03-26 - a67d9cf - lavfi 2.66.100
157 Add avfilter_fill_frame_from_{audio_,}buffer_ref() functions.157 Add avfilter_fill_frame_from_{audio_,}buffer_ref() functions.
158 158
1592013-xx-xx - lavfi 3.8.0
160 Move all content from avfiltergraph.h to avfilter.h. Deprecate
161 avfilterhraph.h, user applications should include just avfilter.h
162
1592013-xx-xx - lavfi 3.7.0 - avfilter.h1632013-xx-xx - lavfi 3.7.0 - avfilter.h
160 Add AVFilter.priv_class for exporting filter options through the AVOptions API164 Add AVFilter.priv_class for exporting filter options through the AVOptions API
161 in the similar way private options work in lavc and lavf.165 in the similar way private options work in lavc and lavf.
doc/filters.texi+1−1
@@ -117,7 +117,7 @@ A filtergraph can be represented using a textual representation, which is · 116 unmodified lines
117recognized by the @option{-filter}/@option{-vf} and @option{-filter_complex}117recognized by the @option{-filter}/@option{-vf} and @option{-filter_complex}
118options in @command{ffmpeg} and @option{-vf} in @command{ffplay}, and by the118options in @command{ffmpeg} and @option{-vf} in @command{ffplay}, and by the
119@code{avfilter_graph_parse()}/@code{avfilter_graph_parse2()} function defined in119@code{avfilter_graph_parse()}/@code{avfilter_graph_parse2()} function defined in
120@file{libavfilter/avfiltergraph.h}.120@file{libavfilter/avfilter.h}.
121 121
122A filterchain consists of a sequence of connected filters, each one122A filterchain consists of a sequence of connected filters, each one
123connected to the previous one in the sequence. A filterchain is123connected to the previous one in the sequence. A filterchain is
ffmpeg.c+0−1
@@ -64,7 +64,6 @@ · 63 unmodified lines
64 64
65# include "libavfilter/avcodec.h"65# include "libavfilter/avcodec.h"
66# include "libavfilter/avfilter.h"66# include "libavfilter/avfilter.h"
67# include "libavfilter/avfiltergraph.h"
68# include "libavfilter/buffersrc.h"67# include "libavfilter/buffersrc.h"
69# include "libavfilter/buffersink.h"68# include "libavfilter/buffersink.h"
70 69
ffmpeg.h+0−1
@@ -37,7 +37,6 @@ · 36 unmodified lines
37#include "libavcodec/avcodec.h"37#include "libavcodec/avcodec.h"
38 38
39#include "libavfilter/avfilter.h"39#include "libavfilter/avfilter.h"
40#include "libavfilter/avfiltergraph.h"
41 40
42#include "libavutil/avutil.h"41#include "libavutil/avutil.h"
43#include "libavutil/dict.h"42#include "libavutil/dict.h"
ffmpeg_filter.c+0−1
@@ -21,7 +21,6 @@ · 20 unmodified lines
21#include "ffmpeg.h"21#include "ffmpeg.h"
22 22
23#include "libavfilter/avfilter.h"23#include "libavfilter/avfilter.h"
24#include "libavfilter/avfiltergraph.h"
25#include "libavfilter/buffersink.h"24#include "libavfilter/buffersink.h"
26 25
27#include "libavresample/avresample.h"26#include "libavresample/avresample.h"
ffmpeg_opt.c+0−1
@@ -28,7 +28,6 @@ · 27 unmodified lines
28#include "libavcodec/avcodec.h"28#include "libavcodec/avcodec.h"
29 29
30#include "libavfilter/avfilter.h"30#include "libavfilter/avfilter.h"
31#include "libavfilter/avfiltergraph.h"
32 31
33#include "libavutil/avassert.h"32#include "libavutil/avassert.h"
34#include "libavutil/avstring.h"33#include "libavutil/avstring.h"
ffplay.c+0−1
@@ -48,7 +48,6 @@ · 47 unmodified lines
48#if CONFIG_AVFILTER48#if CONFIG_AVFILTER
49# include "libavfilter/avcodec.h"49# include "libavfilter/avcodec.h"
50# include "libavfilter/avfilter.h"50# include "libavfilter/avfilter.h"
51# include "libavfilter/avfiltergraph.h"
52# include "libavfilter/buffersink.h"51# include "libavfilter/buffersink.h"
53# include "libavfilter/buffersrc.h"52# include "libavfilter/buffersrc.h"
54#endif53#endif
libavfilter/avfilter.h+251−0
@@ -912,6 +912,257 @@ int avfilter_copy_buf_props(AVFrame *dst, const AVFilterBufferRef *src); · 911 unmodified lines
912 */912 */
913const AVClass *avfilter_get_class(void);913const AVClass *avfilter_get_class(void);
914 914
915typedef struct AVFilterGraph {
916 const AVClass *av_class;
917#if FF_API_FOO_COUNT
918 attribute_deprecated
919 unsigned filter_count_unused;
920#endif
921 AVFilterContext **filters;
922#if !FF_API_FOO_COUNT
923 unsigned nb_filters;
924#endif
925
926 char *scale_sws_opts; ///< sws options to use for the auto-inserted scale filters
927 char *resample_lavr_opts; ///< libavresample options to use for the auto-inserted resample filters
928#if FF_API_FOO_COUNT
929 unsigned nb_filters;
930#endif
931 char *aresample_swr_opts; ///< swr options to use for the auto-inserted aresample filters, Access ONLY through AVOptions
932
933 /**
934 * Private fields
935 *
936 * The following fields are for internal use only.
937 * Their type, offset, number and semantic can change without notice.
938 */
939
940 AVFilterLink **sink_links;
941 int sink_links_count;
942
943 unsigned disable_auto_convert;
944} AVFilterGraph;
945
946/**
947 * Allocate a filter graph.
948 */
949AVFilterGraph *avfilter_graph_alloc(void);
950
951/**
952 * Get a filter instance with name name from graph.
953 *
954 * @return the pointer to the found filter instance or NULL if it
955 * cannot be found.
956 */
957AVFilterContext *avfilter_graph_get_filter(AVFilterGraph *graph, char *name);
958
959/**
960 * Add an existing filter instance to a filter graph.
961 *
962 * @param graphctx the filter graph
963 * @param filter the filter to be added
964 */
965int avfilter_graph_add_filter(AVFilterGraph *graphctx, AVFilterContext *filter);
966
967/**
968 * Create and add a filter instance into an existing graph.
969 * The filter instance is created from the filter filt and inited
970 * with the parameters args and opaque.
971 *
972 * In case of success put in *filt_ctx the pointer to the created
973 * filter instance, otherwise set *filt_ctx to NULL.
974 *
975 * @param name the instance name to give to the created filter instance
976 * @param graph_ctx the filter graph
977 * @return a negative AVERROR error code in case of failure, a non
978 * negative value otherwise
979 */
980int avfilter_graph_create_filter(AVFilterContext **filt_ctx, AVFilter *filt,
981 const char *name, const char *args, void *opaque,
982 AVFilterGraph *graph_ctx);
983
984/**
985 * Enable or disable automatic format conversion inside the graph.
986 *
987 * Note that format conversion can still happen inside explicitly inserted
988 * scale and aresample filters.
989 *
990 * @param flags any of the AVFILTER_AUTO_CONVERT_* constants
991 */
992void avfilter_graph_set_auto_convert(AVFilterGraph *graph, unsigned flags);
993
994enum {
995 AVFILTER_AUTO_CONVERT_ALL = 0, /**< all automatic conversions enabled */
996 AVFILTER_AUTO_CONVERT_NONE = -1, /**< all automatic conversions disabled */
997};
998
999/**
1000 * Check validity and configure all the links and formats in the graph.
1001 *
1002 * @param graphctx the filter graph
1003 * @param log_ctx context used for logging
1004 * @return 0 in case of success, a negative AVERROR code otherwise
1005 */
1006int avfilter_graph_config(AVFilterGraph *graphctx, void *log_ctx);
1007
1008/**
1009 * Free a graph, destroy its links, and set *graph to NULL.
1010 * If *graph is NULL, do nothing.
1011 */
1012void avfilter_graph_free(AVFilterGraph **graph);
1013
1014/**
1015 * A linked-list of the inputs/outputs of the filter chain.
1016 *
1017 * This is mainly useful for avfilter_graph_parse() / avfilter_graph_parse2(),
1018 * where it is used to communicate open (unlinked) inputs and outputs from and
1019 * to the caller.
1020 * This struct specifies, per each not connected pad contained in the graph, the
1021 * filter context and the pad index required for establishing a link.
1022 */
1023typedef struct AVFilterInOut {
1024 /** unique name for this input/output in the list */
1025 char *name;
1026
1027 /** filter context associated to this input/output */
1028 AVFilterContext *filter_ctx;
1029
1030 /** index of the filt_ctx pad to use for linking */
1031 int pad_idx;
1032
1033 /** next input/input in the list, NULL if this is the last */
1034 struct AVFilterInOut *next;
1035} AVFilterInOut;
1036
1037/**
1038 * Allocate a single AVFilterInOut entry.
1039 * Must be freed with avfilter_inout_free().
1040 * @return allocated AVFilterInOut on success, NULL on failure.
1041 */
1042AVFilterInOut *avfilter_inout_alloc(void);
1043
1044/**
1045 * Free the supplied list of AVFilterInOut and set *inout to NULL.
1046 * If *inout is NULL, do nothing.
1047 */
1048void avfilter_inout_free(AVFilterInOut **inout);
1049
1050/**
1051 * Add a graph described by a string to a graph.
1052 *
1053 * @param graph the filter graph where to link the parsed graph context
1054 * @param filters string to be parsed
1055 * @param inputs pointer to a linked list to the inputs of the graph, may be NULL.
1056 * If non-NULL, *inputs is updated to contain the list of open inputs
1057 * after the parsing, should be freed with avfilter_inout_free().
1058 * @param outputs pointer to a linked list to the outputs of the graph, may be NULL.
1059 * If non-NULL, *outputs is updated to contain the list of open outputs
1060 * after the parsing, should be freed with avfilter_inout_free().
1061 * @return non negative on success, a negative AVERROR code on error
1062 */
1063int avfilter_graph_parse(AVFilterGraph *graph, const char *filters,
1064 AVFilterInOut **inputs, AVFilterInOut **outputs,
1065 void *log_ctx);
1066
1067/**
1068 * Add a graph described by a string to a graph.
1069 *
1070 * @param[in] graph the filter graph where to link the parsed graph context
1071 * @param[in] filters string to be parsed
1072 * @param[out] inputs a linked list of all free (unlinked) inputs of the
1073 * parsed graph will be returned here. It is to be freed
1074 * by the caller using avfilter_inout_free().
1075 * @param[out] outputs a linked list of all free (unlinked) outputs of the
1076 * parsed graph will be returned here. It is to be freed by the
1077 * caller using avfilter_inout_free().
1078 * @return zero on success, a negative AVERROR code on error
1079 *
1080 * @note the difference between avfilter_graph_parse2() and
1081 * avfilter_graph_parse() is that in avfilter_graph_parse(), the caller provides
1082 * the lists of inputs and outputs, which therefore must be known before calling
1083 * the function. On the other hand, avfilter_graph_parse2() \em returns the
1084 * inputs and outputs that are left unlinked after parsing the graph and the
1085 * caller then deals with them. Another difference is that in
1086 * avfilter_graph_parse(), the inputs parameter describes inputs of the
1087 * <em>already existing</em> part of the graph; i.e. from the point of view of
1088 * the newly created part, they are outputs. Similarly the outputs parameter
1089 * describes outputs of the already existing filters, which are provided as
1090 * inputs to the parsed filters.
1091 * avfilter_graph_parse2() takes the opposite approach -- it makes no reference
1092 * whatsoever to already existing parts of the graph and the inputs parameter
1093 * will on return contain inputs of the newly parsed part of the graph.
1094 * Analogously the outputs parameter will contain outputs of the newly created
1095 * filters.
1096 */
1097int avfilter_graph_parse2(AVFilterGraph *graph, const char *filters,
1098 AVFilterInOut **inputs,
1099 AVFilterInOut **outputs);
1100
1101/**
1102 * Send a command to one or more filter instances.
1103 *
1104 * @param graph the filter graph
1105 * @param target the filter(s) to which the command should be sent
1106 * "all" sends to all filters
1107 * otherwise it can be a filter or filter instance name
1108 * which will send the command to all matching filters.
1109 * @param cmd the command to sent, for handling simplicity all commands must be alphanumeric only
1110 * @param arg the argument for the command
1111 * @param res a buffer with size res_size where the filter(s) can return a response.
1112 *
1113 * @returns >=0 on success otherwise an error code.
1114 * AVERROR(ENOSYS) on unsupported commands
1115 */
1116int avfilter_graph_send_command(AVFilterGraph *graph, const char *target, const char *cmd, const char *arg, char *res, int res_len, int flags);
1117
1118/**
1119 * Queue a command for one or more filter instances.
1120 *
1121 * @param graph the filter graph
1122 * @param target the filter(s) to which the command should be sent
1123 * "all" sends to all filters
1124 * otherwise it can be a filter or filter instance name
1125 * which will send the command to all matching filters.
1126 * @param cmd the command to sent, for handling simplicity all commands must be alphanummeric only
1127 * @param arg the argument for the command
1128 * @param ts time at which the command should be sent to the filter
1129 *
1130 * @note As this executes commands after this function returns, no return code
1131 * from the filter is provided, also AVFILTER_CMD_FLAG_ONE is not supported.
1132 */
1133int avfilter_graph_queue_command(AVFilterGraph *graph, const char *target, const char *cmd, const char *arg, int flags, double ts);
1134
1135
1136/**
1137 * Dump a graph into a human-readable string representation.
1138 *
1139 * @param graph the graph to dump
1140 * @param options formatting options; currently ignored
1141 * @return a string, or NULL in case of memory allocation failure;
1142 * the string must be freed using av_free
1143 */
1144char *avfilter_graph_dump(AVFilterGraph *graph, const char *options);
1145
1146/**
1147 * Request a frame on the oldest sink link.
1148 *
1149 * If the request returns AVERROR_EOF, try the next.
1150 *
1151 * Note that this function is not meant to be the sole scheduling mechanism
1152 * of a filtergraph, only a convenience function to help drain a filtergraph
1153 * in a balanced way under normal circumstances.
1154 *
1155 * Also note that AVERROR_EOF does not mean that frames did not arrive on
1156 * some of the sinks during the process.
1157 * When there are multiple sink links, in case the requested link
1158 * returns an EOF, this may cause a filter to flush pending frames
1159 * which are sent to another sink link, although unrequested.
1160 *
1161 * @return the return value of ff_request_frame(),
1162 * or AVERROR_EOF if all links returned AVERROR_EOF
1163 */
1164int avfilter_graph_request_oldest(AVFilterGraph *graph);
1165
915/**1166/**
916 * @}1167 * @}
917 */1168 */
libavfilter/avfiltergraph.c+0−1
@@ -30,7 +30,6 @@ · 29 unmodified lines
30#include "libavutil/pixdesc.h"30#include "libavutil/pixdesc.h"
31#include "libavcodec/avcodec.h" // avcodec_find_best_pix_fmt_of_2()31#include "libavcodec/avcodec.h" // avcodec_find_best_pix_fmt_of_2()
32#include "avfilter.h"32#include "avfilter.h"
33#include "avfiltergraph.h"
34#include "formats.h"33#include "formats.h"
35#include "internal.h"34#include "internal.h"
36 35
libavfilter/avfiltergraph.h+0−252
@@ -25,256 +25,4 @@ · 24 unmodified lines
25#include "avfilter.h"25#include "avfilter.h"
26#include "libavutil/log.h"26#include "libavutil/log.h"
27 27
28typedef struct AVFilterGraph {
29 const AVClass *av_class;
30#if FF_API_FOO_COUNT
31 attribute_deprecated
32 unsigned filter_count_unused;
33#endif
34 AVFilterContext **filters;
35#if !FF_API_FOO_COUNT
36 unsigned nb_filters;
37#endif
38
39 char *scale_sws_opts; ///< sws options to use for the auto-inserted scale filters
40 char *resample_lavr_opts; ///< libavresample options to use for the auto-inserted resample filters
41#if FF_API_FOO_COUNT
42 unsigned nb_filters;
43#endif
44 char *aresample_swr_opts; ///< swr options to use for the auto-inserted aresample filters, Access ONLY through AVOptions
45
46 /**
47 * Private fields
48 *
49 * The following fields are for internal use only.
50 * Their type, offset, number and semantic can change without notice.
51 */
52
53 AVFilterLink **sink_links;
54 int sink_links_count;
55
56 unsigned disable_auto_convert;
57} AVFilterGraph;
58
59/**
60 * Allocate a filter graph.
61 */
62AVFilterGraph *avfilter_graph_alloc(void);
63
64/**
65 * Get a filter instance with name name from graph.
66 *
67 * @return the pointer to the found filter instance or NULL if it
68 * cannot be found.
69 */
70AVFilterContext *avfilter_graph_get_filter(AVFilterGraph *graph, char *name);
71
72/**
73 * Add an existing filter instance to a filter graph.
74 *
75 * @param graphctx the filter graph
76 * @param filter the filter to be added
77 */
78int avfilter_graph_add_filter(AVFilterGraph *graphctx, AVFilterContext *filter);
79
80/**
81 * Create and add a filter instance into an existing graph.
82 * The filter instance is created from the filter filt and inited
83 * with the parameters args and opaque.
84 *
85 * In case of success put in *filt_ctx the pointer to the created
86 * filter instance, otherwise set *filt_ctx to NULL.
87 *
88 * @param name the instance name to give to the created filter instance
89 * @param graph_ctx the filter graph
90 * @return a negative AVERROR error code in case of failure, a non
91 * negative value otherwise
92 */
93int avfilter_graph_create_filter(AVFilterContext **filt_ctx, AVFilter *filt,
94 const char *name, const char *args, void *opaque,
95 AVFilterGraph *graph_ctx);
96
97/**
98 * Enable or disable automatic format conversion inside the graph.
99 *
100 * Note that format conversion can still happen inside explicitly inserted
101 * scale and aresample filters.
102 *
103 * @param flags any of the AVFILTER_AUTO_CONVERT_* constants
104 */
105void avfilter_graph_set_auto_convert(AVFilterGraph *graph, unsigned flags);
106
107enum {
108 AVFILTER_AUTO_CONVERT_ALL = 0, /**< all automatic conversions enabled */
109 AVFILTER_AUTO_CONVERT_NONE = -1, /**< all automatic conversions disabled */
110};
111
112/**
113 * Check validity and configure all the links and formats in the graph.
114 *
115 * @param graphctx the filter graph
116 * @param log_ctx context used for logging
117 * @return 0 in case of success, a negative AVERROR code otherwise
118 */
119int avfilter_graph_config(AVFilterGraph *graphctx, void *log_ctx);
120
121/**
122 * Free a graph, destroy its links, and set *graph to NULL.
123 * If *graph is NULL, do nothing.
124 */
125void avfilter_graph_free(AVFilterGraph **graph);
126
127/**
128 * A linked-list of the inputs/outputs of the filter chain.
129 *
130 * This is mainly useful for avfilter_graph_parse() / avfilter_graph_parse2(),
131 * where it is used to communicate open (unlinked) inputs and outputs from and
132 * to the caller.
133 * This struct specifies, per each not connected pad contained in the graph, the
134 * filter context and the pad index required for establishing a link.
135 */
136typedef struct AVFilterInOut {
137 /** unique name for this input/output in the list */
138 char *name;
139
140 /** filter context associated to this input/output */
141 AVFilterContext *filter_ctx;
142
143 /** index of the filt_ctx pad to use for linking */
144 int pad_idx;
145
146 /** next input/input in the list, NULL if this is the last */
147 struct AVFilterInOut *next;
148} AVFilterInOut;
149
150/**
151 * Allocate a single AVFilterInOut entry.
152 * Must be freed with avfilter_inout_free().
153 * @return allocated AVFilterInOut on success, NULL on failure.
154 */
155AVFilterInOut *avfilter_inout_alloc(void);
156
157/**
158 * Free the supplied list of AVFilterInOut and set *inout to NULL.
159 * If *inout is NULL, do nothing.
160 */
161void avfilter_inout_free(AVFilterInOut **inout);
162
163/**
164 * Add a graph described by a string to a graph.
165 *
166 * @param graph the filter graph where to link the parsed graph context
167 * @param filters string to be parsed
168 * @param inputs pointer to a linked list to the inputs of the graph, may be NULL.
169 * If non-NULL, *inputs is updated to contain the list of open inputs
170 * after the parsing, should be freed with avfilter_inout_free().
171 * @param outputs pointer to a linked list to the outputs of the graph, may be NULL.
172 * If non-NULL, *outputs is updated to contain the list of open outputs
173 * after the parsing, should be freed with avfilter_inout_free().
174 * @return non negative on success, a negative AVERROR code on error
175 */
176int avfilter_graph_parse(AVFilterGraph *graph, const char *filters,
177 AVFilterInOut **inputs, AVFilterInOut **outputs,
178 void *log_ctx);
179
180/**
181 * Add a graph described by a string to a graph.
182 *
183 * @param[in] graph the filter graph where to link the parsed graph context
184 * @param[in] filters string to be parsed
185 * @param[out] inputs a linked list of all free (unlinked) inputs of the
186 * parsed graph will be returned here. It is to be freed
187 * by the caller using avfilter_inout_free().
188 * @param[out] outputs a linked list of all free (unlinked) outputs of the
189 * parsed graph will be returned here. It is to be freed by the
190 * caller using avfilter_inout_free().
191 * @return zero on success, a negative AVERROR code on error
192 *
193 * @note the difference between avfilter_graph_parse2() and
194 * avfilter_graph_parse() is that in avfilter_graph_parse(), the caller provides
195 * the lists of inputs and outputs, which therefore must be known before calling
196 * the function. On the other hand, avfilter_graph_parse2() \em returns the
197 * inputs and outputs that are left unlinked after parsing the graph and the
198 * caller then deals with them. Another difference is that in
199 * avfilter_graph_parse(), the inputs parameter describes inputs of the
200 * <em>already existing</em> part of the graph; i.e. from the point of view of
201 * the newly created part, they are outputs. Similarly the outputs parameter
202 * describes outputs of the already existing filters, which are provided as
203 * inputs to the parsed filters.
204 * avfilter_graph_parse2() takes the opposite approach -- it makes no reference
205 * whatsoever to already existing parts of the graph and the inputs parameter
206 * will on return contain inputs of the newly parsed part of the graph.
207 * Analogously the outputs parameter will contain outputs of the newly created
208 * filters.
209 */
210int avfilter_graph_parse2(AVFilterGraph *graph, const char *filters,
211 AVFilterInOut **inputs,
212 AVFilterInOut **outputs);
213
214
215/**
216 * Send a command to one or more filter instances.
217 *
218 * @param graph the filter graph
219 * @param target the filter(s) to which the command should be sent
220 * "all" sends to all filters
221 * otherwise it can be a filter or filter instance name
222 * which will send the command to all matching filters.
223 * @param cmd the command to sent, for handling simplicity all commands must be alphanumeric only
224 * @param arg the argument for the command
225 * @param res a buffer with size res_size where the filter(s) can return a response.
226 *
227 * @returns >=0 on success otherwise an error code.
228 * AVERROR(ENOSYS) on unsupported commands
229 */
230int avfilter_graph_send_command(AVFilterGraph *graph, const char *target, const char *cmd, const char *arg, char *res, int res_len, int flags);
231
232/**
233 * Queue a command for one or more filter instances.
234 *
235 * @param graph the filter graph
236 * @param target the filter(s) to which the command should be sent
237 * "all" sends to all filters
238 * otherwise it can be a filter or filter instance name
239 * which will send the command to all matching filters.
240 * @param cmd the command to sent, for handling simplicity all commands must be alphanummeric only
241 * @param arg the argument for the command
242 * @param ts time at which the command should be sent to the filter
243 *
244 * @note As this executes commands after this function returns, no return code
245 * from the filter is provided, also AVFILTER_CMD_FLAG_ONE is not supported.
246 */
247int avfilter_graph_queue_command(AVFilterGraph *graph, const char *target, const char *cmd, const char *arg, int flags, double ts);
248
249
250/**
251 * Dump a graph into a human-readable string representation.
252 *
253 * @param graph the graph to dump
254 * @param options formatting options; currently ignored
255 * @return a string, or NULL in case of memory allocation failure;
256 * the string must be freed using av_free
257 */
258char *avfilter_graph_dump(AVFilterGraph *graph, const char *options);
259
260/**
261 * Request a frame on the oldest sink link.
262 *
263 * If the request returns AVERROR_EOF, try the next.
264 *
265 * Note that this function is not meant to be the sole scheduling mechanism
266 * of a filtergraph, only a convenience function to help drain a filtergraph
267 * in a balanced way under normal circumstances.
268 *
269 * Also note that AVERROR_EOF does not mean that frames did not arrive on
270 * some of the sinks during the process.
271 * When there are multiple sink links, in case the requested link
272 * returns an EOF, this may cause a filter to flush pending frames
273 * which are sent to another sink link, although unrequested.
274 *
275 * @return the return value of ff_request_frame(),
276 * or AVERROR_EOF if all links returned AVERROR_EOF
277 */
278int avfilter_graph_request_oldest(AVFilterGraph *graph);
279
280#endif /* AVFILTER_AVFILTERGRAPH_H */28#endif /* AVFILTER_AVFILTERGRAPH_H */
libavfilter/graphparser.c+0−1
@@ -26,7 +26,6 @@ · 25 unmodified lines
26#include "libavutil/avstring.h"26#include "libavutil/avstring.h"
27#include "libavutil/mem.h"27#include "libavutil/mem.h"
28#include "avfilter.h"28#include "avfilter.h"
29#include "avfiltergraph.h"
30 29
31#define WHITESPACES " \n\t"30#define WHITESPACES " \n\t"
32 31
libavfilter/version.h+2−2
@@ -29,8 +29,8 @@ · 28 unmodified lines
29#include "libavutil/avutil.h"29#include "libavutil/avutil.h"
30 30
31#define LIBAVFILTER_VERSION_MAJOR 331#define LIBAVFILTER_VERSION_MAJOR 3
32#define LIBAVFILTER_VERSION_MINOR 5232#define LIBAVFILTER_VERSION_MINOR 53
33#define LIBAVFILTER_VERSION_MICRO 10233#define LIBAVFILTER_VERSION_MICRO 100
34 34
35#define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \35#define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \
36 LIBAVFILTER_VERSION_MINOR, \36 LIBAVFILTER_VERSION_MINOR, \
tools/graph2dot.c+1−1
@@ -28,7 +28,7 @@ · 27 unmodified lines
28#include "libavutil/channel_layout.h"28#include "libavutil/channel_layout.h"
29#include "libavutil/mem.h"29#include "libavutil/mem.h"
30#include "libavutil/pixdesc.h"30#include "libavutil/pixdesc.h"
31#include "libavfilter/avfiltergraph.h"31#include "libavfilter/avfilter.h"
32 32
33#if !HAVE_GETOPT33#if !HAVE_GETOPT
34#include "compat/getopt.c"34#include "compat/getopt.c"

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