* 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
Showing the changes to libavfilter/avfiltergraph.h (1 of 13 files). Show all
Unified · Split
| @@ -25,256 +25,4 @@ · 24 unmodified lines | ||
| 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 */ |