* 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
Merged-by: Michael Niedermayer <michaelni@gmx.at>
... | ... |
@@ -156,6 +156,10 @@ API changes, most recent first: |
156 | 156 |
2012-03-26 - a67d9cf - lavfi 2.66.100 |
157 | 157 |
Add avfilter_fill_frame_from_{audio_,}buffer_ref() functions. |
158 | 158 |
|
159 |
+2013-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 |
+ |
|
159 | 163 |
2013-xx-xx - lavfi 3.7.0 - avfilter.h |
160 | 164 |
Add AVFilter.priv_class for exporting filter options through the AVOptions API |
161 | 165 |
in the similar way private options work in lavc and lavf. |
... | ... |
@@ -117,7 +117,7 @@ A filtergraph can be represented using a textual representation, which is |
117 | 117 |
recognized by the @option{-filter}/@option{-vf} and @option{-filter_complex} |
118 | 118 |
options in @command{ffmpeg} and @option{-vf} in @command{ffplay}, and by the |
119 | 119 |
@code{avfilter_graph_parse()}/@code{avfilter_graph_parse2()} function defined in |
120 |
-@file{libavfilter/avfiltergraph.h}. |
|
120 |
+@file{libavfilter/avfilter.h}. |
|
121 | 121 |
|
122 | 122 |
A filterchain consists of a sequence of connected filters, each one |
123 | 123 |
connected to the previous one in the sequence. A filterchain is |
... | ... |
@@ -912,6 +912,257 @@ int avfilter_copy_buf_props(AVFrame *dst, const AVFilterBufferRef *src); |
912 | 912 |
*/ |
913 | 913 |
const AVClass *avfilter_get_class(void); |
914 | 914 |
|
915 |
+typedef 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 |
+ */ |
|
949 |
+AVFilterGraph *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 |
+ */ |
|
957 |
+AVFilterContext *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 |
+ */ |
|
965 |
+int 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 |
+ */ |
|
980 |
+int 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 |
+ */ |
|
992 |
+void avfilter_graph_set_auto_convert(AVFilterGraph *graph, unsigned flags); |
|
993 |
+ |
|
994 |
+enum { |
|
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 |
+ */ |
|
1006 |
+int 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 |
+ */ |
|
1012 |
+void 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 |
+ */ |
|
1023 |
+typedef 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 |
+ */ |
|
1042 |
+AVFilterInOut *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 |
+ */ |
|
1048 |
+void 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 |
+ */ |
|
1063 |
+int 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 |
+ */ |
|
1097 |
+int 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 |
+ */ |
|
1116 |
+int 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 |
+ */ |
|
1133 |
+int 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 |
+ */ |
|
1144 |
+char *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 |
+ */ |
|
1164 |
+int avfilter_graph_request_oldest(AVFilterGraph *graph); |
|
1165 |
+ |
|
915 | 1166 |
/** |
916 | 1167 |
* @} |
917 | 1168 |
*/ |
... | ... |
@@ -25,256 +25,4 @@ |
25 | 25 |
#include "avfilter.h" |
26 | 26 |
#include "libavutil/log.h" |
27 | 27 |
|
28 |
-typedef 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 |
- */ |
|
62 |
-AVFilterGraph *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 |
- */ |
|
70 |
-AVFilterContext *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 |
- */ |
|
78 |
-int 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 |
- */ |
|
93 |
-int 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 |
- */ |
|
105 |
-void avfilter_graph_set_auto_convert(AVFilterGraph *graph, unsigned flags); |
|
106 |
- |
|
107 |
-enum { |
|
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 |
- */ |
|
119 |
-int 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 |
- */ |
|
125 |
-void 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 |
- */ |
|
136 |
-typedef 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 |
- */ |
|
155 |
-AVFilterInOut *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 |
- */ |
|
161 |
-void 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 |
- */ |
|
176 |
-int 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 |
- */ |
|
210 |
-int 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 |
- */ |
|
230 |
-int 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 |
- */ |
|
247 |
-int 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 |
- */ |
|
258 |
-char *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 |
- */ |
|
278 |
-int avfilter_graph_request_oldest(AVFilterGraph *graph); |
|
279 |
- |
|
280 | 28 |
#endif /* AVFILTER_AVFILTERGRAPH_H */ |
... | ... |
@@ -29,8 +29,8 @@ |
29 | 29 |
#include "libavutil/avutil.h" |
30 | 30 |
|
31 | 31 |
#define LIBAVFILTER_VERSION_MAJOR 3 |
32 |
-#define LIBAVFILTER_VERSION_MINOR 52 |
|
33 |
-#define LIBAVFILTER_VERSION_MICRO 102 |
|
32 |
+#define LIBAVFILTER_VERSION_MINOR 53 |
|
33 |
+#define LIBAVFILTER_VERSION_MICRO 100 |
|
34 | 34 |
|
35 | 35 |
#define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \ |
36 | 36 |
LIBAVFILTER_VERSION_MINOR, \ |