FFmpeg
avfilter.h
Go to the documentation of this file.
1 /*
2  * filter layer
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 #ifndef AVFILTER_AVFILTER_H
23 #define AVFILTER_AVFILTER_H
24 
25 /**
26  * @file
27  * @ingroup lavfi
28  * Main libavfilter public API header
29  */
30 
31 /**
32  * @defgroup lavfi libavfilter
33  * Graph-based frame editing library.
34  *
35  * @{
36  */
37 
38 #include <stddef.h>
39 
40 #include "libavutil/attributes.h"
41 #include "libavutil/avutil.h"
42 #include "libavutil/buffer.h"
43 #include "libavutil/dict.h"
44 #include "libavutil/frame.h"
45 #include "libavutil/log.h"
46 #include "libavutil/samplefmt.h"
47 #include "libavutil/pixfmt.h"
48 #include "libavutil/rational.h"
49 
50 #include "libavfilter/version.h"
51 
52 /**
53  * Return the LIBAVFILTER_VERSION_INT constant.
54  */
55 unsigned avfilter_version(void);
56 
57 /**
58  * Return the libavfilter build-time configuration.
59  */
60 const char *avfilter_configuration(void);
61 
62 /**
63  * Return the libavfilter license.
64  */
65 const char *avfilter_license(void);
66 
67 typedef struct AVFilterContext AVFilterContext;
68 typedef struct AVFilterLink AVFilterLink;
69 typedef struct AVFilterPad AVFilterPad;
70 typedef struct AVFilterFormats AVFilterFormats;
72 
73 /**
74  * Get the number of elements in a NULL-terminated array of AVFilterPads (e.g.
75  * AVFilter.inputs/outputs).
76  */
77 int avfilter_pad_count(const AVFilterPad *pads);
78 
79 /**
80  * Get the name of an AVFilterPad.
81  *
82  * @param pads an array of AVFilterPads
83  * @param pad_idx index of the pad in the array; it is the caller's
84  * responsibility to ensure the index is valid
85  *
86  * @return name of the pad_idx'th pad in pads
87  */
88 const char *avfilter_pad_get_name(const AVFilterPad *pads, int pad_idx);
89 
90 /**
91  * Get the type of an AVFilterPad.
92  *
93  * @param pads an array of AVFilterPads
94  * @param pad_idx index of the pad in the array; it is the caller's
95  * responsibility to ensure the index is valid
96  *
97  * @return type of the pad_idx'th pad in pads
98  */
99 enum AVMediaType avfilter_pad_get_type(const AVFilterPad *pads, int pad_idx);
100 
101 /**
102  * The number of the filter inputs is not determined just by AVFilter.inputs.
103  * The filter might add additional inputs during initialization depending on the
104  * options supplied to it.
105  */
106 #define AVFILTER_FLAG_DYNAMIC_INPUTS (1 << 0)
107 /**
108  * The number of the filter outputs is not determined just by AVFilter.outputs.
109  * The filter might add additional outputs during initialization depending on
110  * the options supplied to it.
111  */
112 #define AVFILTER_FLAG_DYNAMIC_OUTPUTS (1 << 1)
113 /**
114  * The filter supports multithreading by splitting frames into multiple parts
115  * and processing them concurrently.
116  */
117 #define AVFILTER_FLAG_SLICE_THREADS (1 << 2)
118 /**
119  * Some filters support a generic "enable" expression option that can be used
120  * to enable or disable a filter in the timeline. Filters supporting this
121  * option have this flag set. When the enable expression is false, the default
122  * no-op filter_frame() function is called in place of the filter_frame()
123  * callback defined on each input pad, thus the frame is passed unchanged to
124  * the next filters.
125  */
126 #define AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC (1 << 16)
127 /**
128  * Same as AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC, except that the filter will
129  * have its filter_frame() callback(s) called as usual even when the enable
130  * expression is false. The filter will disable filtering within the
131  * filter_frame() callback(s) itself, for example executing code depending on
132  * the AVFilterContext->is_disabled value.
133  */
134 #define AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL (1 << 17)
135 /**
136  * Handy mask to test whether the filter supports or no the timeline feature
137  * (internally or generically).
138  */
139 #define AVFILTER_FLAG_SUPPORT_TIMELINE (AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC | AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL)
140 
141 /**
142  * Filter definition. This defines the pads a filter contains, and all the
143  * callback functions used to interact with the filter.
144  */
145 typedef struct AVFilter {
146  /**
147  * Filter name. Must be non-NULL and unique among filters.
148  */
149  const char *name;
150 
151  /**
152  * A description of the filter. May be NULL.
153  *
154  * You should use the NULL_IF_CONFIG_SMALL() macro to define it.
155  */
156  const char *description;
157 
158  /**
159  * List of inputs, terminated by a zeroed element.
160  *
161  * NULL if there are no (static) inputs. Instances of filters with
162  * AVFILTER_FLAG_DYNAMIC_INPUTS set may have more inputs than present in
163  * this list.
164  */
166  /**
167  * List of outputs, terminated by a zeroed element.
168  *
169  * NULL if there are no (static) outputs. Instances of filters with
170  * AVFILTER_FLAG_DYNAMIC_OUTPUTS set may have more outputs than present in
171  * this list.
172  */
174 
175  /**
176  * A class for the private data, used to declare filter private AVOptions.
177  * This field is NULL for filters that do not declare any options.
178  *
179  * If this field is non-NULL, the first member of the filter private data
180  * must be a pointer to AVClass, which will be set by libavfilter generic
181  * code to this class.
182  */
184 
185  /**
186  * A combination of AVFILTER_FLAG_*
187  */
188  int flags;
189 
190  /*****************************************************************
191  * All fields below this line are not part of the public API. They
192  * may not be used outside of libavfilter and can be changed and
193  * removed at will.
194  * New public fields should be added right above.
195  *****************************************************************
196  */
197 
198  /**
199  * Filter pre-initialization function
200  *
201  * This callback will be called immediately after the filter context is
202  * allocated, to allow allocating and initing sub-objects.
203  *
204  * If this callback is not NULL, the uninit callback will be called on
205  * allocation failure.
206  *
207  * @return 0 on success,
208  * AVERROR code on failure (but the code will be
209  * dropped and treated as ENOMEM by the calling code)
210  */
212 
213  /**
214  * Filter initialization function.
215  *
216  * This callback will be called only once during the filter lifetime, after
217  * all the options have been set, but before links between filters are
218  * established and format negotiation is done.
219  *
220  * Basic filter initialization should be done here. Filters with dynamic
221  * inputs and/or outputs should create those inputs/outputs here based on
222  * provided options. No more changes to this filter's inputs/outputs can be
223  * done after this callback.
224  *
225  * This callback must not assume that the filter links exist or frame
226  * parameters are known.
227  *
228  * @ref AVFilter.uninit "uninit" is guaranteed to be called even if
229  * initialization fails, so this callback does not have to clean up on
230  * failure.
231  *
232  * @return 0 on success, a negative AVERROR on failure
233  */
235 
236  /**
237  * Should be set instead of @ref AVFilter.init "init" by the filters that
238  * want to pass a dictionary of AVOptions to nested contexts that are
239  * allocated during init.
240  *
241  * On return, the options dict should be freed and replaced with one that
242  * contains all the options which could not be processed by this filter (or
243  * with NULL if all the options were processed).
244  *
245  * Otherwise the semantics is the same as for @ref AVFilter.init "init".
246  */
248 
249  /**
250  * Filter uninitialization function.
251  *
252  * Called only once right before the filter is freed. Should deallocate any
253  * memory held by the filter, release any buffer references, etc. It does
254  * not need to deallocate the AVFilterContext.priv memory itself.
255  *
256  * This callback may be called even if @ref AVFilter.init "init" was not
257  * called or failed, so it must be prepared to handle such a situation.
258  */
260 
261  /**
262  * Query formats supported by the filter on its inputs and outputs.
263  *
264  * This callback is called after the filter is initialized (so the inputs
265  * and outputs are fixed), shortly before the format negotiation. This
266  * callback may be called more than once.
267  *
268  * This callback must set AVFilterLink.outcfg.formats on every input link and
269  * AVFilterLink.incfg.formats on every output link to a list of pixel/sample
270  * formats that the filter supports on that link. For audio links, this
271  * filter must also set @ref AVFilterLink.incfg.samplerates "in_samplerates" /
272  * @ref AVFilterLink.outcfg.samplerates "out_samplerates" and
273  * @ref AVFilterLink.incfg.channel_layouts "in_channel_layouts" /
274  * @ref AVFilterLink.outcfg.channel_layouts "out_channel_layouts" analogously.
275  *
276  * This callback may be NULL for filters with one input, in which case
277  * libavfilter assumes that it supports all input formats and preserves
278  * them on output.
279  *
280  * @return zero on success, a negative value corresponding to an
281  * AVERROR code otherwise
282  */
284 
285  int priv_size; ///< size of private data to allocate for the filter
286 
287  int flags_internal; ///< Additional flags for avfilter internal use only.
288 
289  /**
290  * Used by the filter registration system. Must not be touched by any other
291  * code.
292  */
293  struct AVFilter *next;
294 
295  /**
296  * Make the filter instance process a command.
297  *
298  * @param cmd the command to process, for handling simplicity all commands must be alphanumeric only
299  * @param arg the argument for the command
300  * @param res a buffer with size res_size where the filter(s) can return a response. This must not change when the command is not supported.
301  * @param flags if AVFILTER_CMD_FLAG_FAST is set and the command would be
302  * time consuming then a filter should treat it like an unsupported command
303  *
304  * @returns >=0 on success otherwise an error code.
305  * AVERROR(ENOSYS) on unsupported commands
306  */
307  int (*process_command)(AVFilterContext *, const char *cmd, const char *arg, char *res, int res_len, int flags);
308 
309  /**
310  * Filter initialization function, alternative to the init()
311  * callback. Args contains the user-supplied parameters, opaque is
312  * used for providing binary data.
313  */
314  int (*init_opaque)(AVFilterContext *ctx, void *opaque);
315 
316  /**
317  * Filter activation function.
318  *
319  * Called when any processing is needed from the filter, instead of any
320  * filter_frame and request_frame on pads.
321  *
322  * The function must examine inlinks and outlinks and perform a single
323  * step of processing. If there is nothing to do, the function must do
324  * nothing and not return an error. If more steps are or may be
325  * possible, it must use ff_filter_set_ready() to schedule another
326  * activation.
327  */
329 } AVFilter;
330 
331 /**
332  * Process multiple parts of the frame concurrently.
333  */
334 #define AVFILTER_THREAD_SLICE (1 << 0)
335 
336 typedef struct AVFilterInternal AVFilterInternal;
337 
338 /** An instance of a filter */
340  const AVClass *av_class; ///< needed for av_log() and filters common options
341 
342  const AVFilter *filter; ///< the AVFilter of which this is an instance
343 
344  char *name; ///< name of this filter instance
345 
346  AVFilterPad *input_pads; ///< array of input pads
347  AVFilterLink **inputs; ///< array of pointers to input links
348  unsigned nb_inputs; ///< number of input pads
349 
350  AVFilterPad *output_pads; ///< array of output pads
351  AVFilterLink **outputs; ///< array of pointers to output links
352  unsigned nb_outputs; ///< number of output pads
353 
354  void *priv; ///< private data for use by the filter
355 
356  struct AVFilterGraph *graph; ///< filtergraph this filter belongs to
357 
358  /**
359  * Type of multithreading being allowed/used. A combination of
360  * AVFILTER_THREAD_* flags.
361  *
362  * May be set by the caller before initializing the filter to forbid some
363  * or all kinds of multithreading for this filter. The default is allowing
364  * everything.
365  *
366  * When the filter is initialized, this field is combined using bit AND with
367  * AVFilterGraph.thread_type to get the final mask used for determining
368  * allowed threading types. I.e. a threading type needs to be set in both
369  * to be allowed.
370  *
371  * After the filter is initialized, libavfilter sets this field to the
372  * threading type that is actually used (0 for no multithreading).
373  */
375 
376  /**
377  * An opaque struct for libavfilter internal use.
378  */
379  AVFilterInternal *internal;
380 
382 
383  char *enable_str; ///< enable expression string
384  void *enable; ///< parsed expression (AVExpr*)
385  double *var_values; ///< variable values for the enable expression
386  int is_disabled; ///< the enabled state from the last expression evaluation
387 
388  /**
389  * For filters which will create hardware frames, sets the device the
390  * filter should create them in. All other filters will ignore this field:
391  * in particular, a filter which consumes or processes hardware frames will
392  * instead use the hw_frames_ctx field in AVFilterLink to carry the
393  * hardware context information.
394  */
396 
397  /**
398  * Max number of threads allowed in this filter instance.
399  * If <= 0, its value is ignored.
400  * Overrides global number of threads set per filter graph.
401  */
403 
404  /**
405  * Ready status of the filter.
406  * A non-0 value means that the filter needs activating;
407  * a higher value suggests a more urgent activation.
408  */
409  unsigned ready;
410 
411  /**
412  * Sets the number of extra hardware frames which the filter will
413  * allocate on its output links for use in following filters or by
414  * the caller.
415  *
416  * Some hardware filters require all frames that they will use for
417  * output to be defined in advance before filtering starts. For such
418  * filters, any hardware frame pools used for output must therefore be
419  * of fixed size. The extra frames set here are on top of any number
420  * that the filter needs internally in order to operate normally.
421  *
422  * This field must be set before the graph containing this filter is
423  * configured.
424  */
426 };
427 
428 /**
429  * Lists of formats / etc. supported by an end of a link.
430  *
431  * This structure is directly part of AVFilterLink, in two copies:
432  * one for the source filter, one for the destination filter.
433 
434  * These lists are used for negotiating the format to actually be used,
435  * which will be loaded into the format and channel_layout members of
436  * AVFilterLink, when chosen.
437  */
438 typedef struct AVFilterFormatsConfig {
439 
440  /**
441  * List of supported formats (pixel or sample).
442  */
444 
445  /**
446  * Lists of supported sample rates, only for audio.
447  */
449 
450  /**
451  * Lists of supported channel layouts, only for audio.
452  */
454 
456 
457 /**
458  * A link between two filters. This contains pointers to the source and
459  * destination filters between which this link exists, and the indexes of
460  * the pads involved. In addition, this link also contains the parameters
461  * which have been negotiated and agreed upon between the filter, such as
462  * image dimensions, format, etc.
463  *
464  * Applications must not normally access the link structure directly.
465  * Use the buffersrc and buffersink API instead.
466  * In the future, access to the header may be reserved for filters
467  * implementation.
468  */
469 struct AVFilterLink {
470  AVFilterContext *src; ///< source filter
471  AVFilterPad *srcpad; ///< output pad on the source filter
472 
473  AVFilterContext *dst; ///< dest filter
474  AVFilterPad *dstpad; ///< input pad on the dest filter
475 
476  enum AVMediaType type; ///< filter media type
477 
478  /* These parameters apply only to video */
479  int w; ///< agreed upon image width
480  int h; ///< agreed upon image height
481  AVRational sample_aspect_ratio; ///< agreed upon sample aspect ratio
482  /* These parameters apply only to audio */
483  uint64_t channel_layout; ///< channel layout of current buffer (see libavutil/channel_layout.h)
484  int sample_rate; ///< samples per second
485 
486  int format; ///< agreed upon media format
487 
488  /**
489  * Define the time base used by the PTS of the frames/samples
490  * which will pass through this link.
491  * During the configuration stage, each filter is supposed to
492  * change only the output timebase, while the timebase of the
493  * input link is assumed to be an unchangeable property.
494  */
496 
497  /*****************************************************************
498  * All fields below this line are not part of the public API. They
499  * may not be used outside of libavfilter and can be changed and
500  * removed at will.
501  * New public fields should be added right above.
502  *****************************************************************
503  */
504 
505  /**
506  * Lists of supported formats / etc. supported by the input filter.
507  */
509 
510  /**
511  * Lists of supported formats / etc. supported by the output filter.
512  */
514 
515  /** stage of the initialization of the link properties (dimensions, etc) */
516  enum {
517  AVLINK_UNINIT = 0, ///< not started
518  AVLINK_STARTINIT, ///< started, but incomplete
519  AVLINK_INIT ///< complete
520  } init_state;
521 
522  /**
523  * Graph the filter belongs to.
524  */
526 
527  /**
528  * Current timestamp of the link, as defined by the most recent
529  * frame(s), in link time_base units.
530  */
531  int64_t current_pts;
532 
533  /**
534  * Current timestamp of the link, as defined by the most recent
535  * frame(s), in AV_TIME_BASE units.
536  */
537  int64_t current_pts_us;
538 
539  /**
540  * Index in the age array.
541  */
543 
544  /**
545  * Frame rate of the stream on the link, or 1/0 if unknown or variable;
546  * if left to 0/0, will be automatically copied from the first input
547  * of the source filter if it exists.
548  *
549  * Sources should set it to the best estimation of the real frame rate.
550  * If the source frame rate is unknown or variable, set this to 1/0.
551  * Filters should update it if necessary depending on their function.
552  * Sinks can use it to set a default output frame rate.
553  * It is similar to the r_frame_rate field in AVStream.
554  */
556 
557  /**
558  * Buffer partially filled with samples to achieve a fixed/minimum size.
559  */
561 
562  /**
563  * Size of the partial buffer to allocate.
564  * Must be between min_samples and max_samples.
565  */
567 
568  /**
569  * Minimum number of samples to filter at once. If filter_frame() is
570  * called with fewer samples, it will accumulate them in partial_buf.
571  * This field and the related ones must not be changed after filtering
572  * has started.
573  * If 0, all related fields are ignored.
574  */
576 
577  /**
578  * Maximum number of samples to filter at once. If filter_frame() is
579  * called with more samples, it will split them.
580  */
582 
583  /**
584  * Number of channels.
585  */
586  int channels;
587 
588  /**
589  * Link processing flags.
590  */
591  unsigned flags;
592 
593  /**
594  * Number of past frames sent through the link.
595  */
596  int64_t frame_count_in, frame_count_out;
597 
598  /**
599  * A pointer to a FFFramePool struct.
600  */
601  void *frame_pool;
602 
603  /**
604  * True if a frame is currently wanted on the output of this filter.
605  * Set when ff_request_frame() is called by the output,
606  * cleared when a frame is filtered.
607  */
609 
610  /**
611  * For hwaccel pixel formats, this should be a reference to the
612  * AVHWFramesContext describing the frames.
613  */
615 
616 #ifndef FF_INTERNAL_FIELDS
617 
618  /**
619  * Internal structure members.
620  * The fields below this limit are internal for libavfilter's use
621  * and must in no way be accessed by applications.
622  */
623  char reserved[0xF000];
624 
625 #else /* FF_INTERNAL_FIELDS */
626 
627  /**
628  * Queue of frames waiting to be filtered.
629  */
630  FFFrameQueue fifo;
631 
632  /**
633  * If set, the source filter can not generate a frame as is.
634  * The goal is to avoid repeatedly calling the request_frame() method on
635  * the same link.
636  */
637  int frame_blocked_in;
638 
639  /**
640  * Link input status.
641  * If not zero, all attempts of filter_frame will fail with the
642  * corresponding code.
643  */
644  int status_in;
645 
646  /**
647  * Timestamp of the input status change.
648  */
649  int64_t status_in_pts;
650 
651  /**
652  * Link output status.
653  * If not zero, all attempts of request_frame will fail with the
654  * corresponding code.
655  */
656  int status_out;
657 
658 #endif /* FF_INTERNAL_FIELDS */
659 
660 };
661 
662 /**
663  * Link two filters together.
664  *
665  * @param src the source filter
666  * @param srcpad index of the output pad on the source filter
667  * @param dst the destination filter
668  * @param dstpad index of the input pad on the destination filter
669  * @return zero on success
670  */
671 int avfilter_link(AVFilterContext *src, unsigned srcpad,
672  AVFilterContext *dst, unsigned dstpad);
673 
674 /**
675  * Free the link in *link, and set its pointer to NULL.
676  */
678 
679 #if FF_API_FILTER_GET_SET
680 /**
681  * Get the number of channels of a link.
682  * @deprecated Use av_buffersink_get_channels()
683  */
686 #endif
687 
688 /**
689  * Set the closed field of a link.
690  * @deprecated applications are not supposed to mess with links, they should
691  * close the sinks.
692  */
694 void avfilter_link_set_closed(AVFilterLink *link, int closed);
695 
696 /**
697  * Negotiate the media format, dimensions, etc of all inputs to a filter.
698  *
699  * @param filter the filter to negotiate the properties for its inputs
700  * @return zero on successful negotiation
701  */
703 
704 #define AVFILTER_CMD_FLAG_ONE 1 ///< Stop once a filter understood the command (for target=all for example), fast filters are favored automatically
705 #define AVFILTER_CMD_FLAG_FAST 2 ///< Only execute command when its fast (like a video out that supports contrast adjustment in hw)
706 
707 /**
708  * Make the filter instance process a command.
709  * It is recommended to use avfilter_graph_send_command().
710  */
711 int avfilter_process_command(AVFilterContext *filter, const char *cmd, const char *arg, char *res, int res_len, int flags);
712 
713 /**
714  * Iterate over all registered filters.
715  *
716  * @param opaque a pointer where libavfilter will store the iteration state. Must
717  * point to NULL to start the iteration.
718  *
719  * @return the next registered filter or NULL when the iteration is
720  * finished
721  */
722 const AVFilter *av_filter_iterate(void **opaque);
723 
724 #if FF_API_NEXT
725 /** Initialize the filter system. Register all builtin filters. */
727 void avfilter_register_all(void);
728 
729 /**
730  * Register a filter. This is only needed if you plan to use
731  * avfilter_get_by_name later to lookup the AVFilter structure by name. A
732  * filter can still by instantiated with avfilter_graph_alloc_filter even if it
733  * is not registered.
734  *
735  * @param filter the filter to register
736  * @return 0 if the registration was successful, a negative value
737  * otherwise
738  */
740 int avfilter_register(AVFilter *filter);
741 
742 /**
743  * Iterate over all registered filters.
744  * @return If prev is non-NULL, next registered filter after prev or NULL if
745  * prev is the last filter. If prev is NULL, return the first registered filter.
746  */
748 const AVFilter *avfilter_next(const AVFilter *prev);
749 #endif
750 
751 /**
752  * Get a filter definition matching the given name.
753  *
754  * @param name the filter name to find
755  * @return the filter definition, if any matching one is registered.
756  * NULL if none found.
757  */
758 const AVFilter *avfilter_get_by_name(const char *name);
759 
760 
761 /**
762  * Initialize a filter with the supplied parameters.
763  *
764  * @param ctx uninitialized filter context to initialize
765  * @param args Options to initialize the filter with. This must be a
766  * ':'-separated list of options in the 'key=value' form.
767  * May be NULL if the options have been set directly using the
768  * AVOptions API or there are no options that need to be set.
769  * @return 0 on success, a negative AVERROR on failure
770  */
771 int avfilter_init_str(AVFilterContext *ctx, const char *args);
772 
773 /**
774  * Initialize a filter with the supplied dictionary of options.
775  *
776  * @param ctx uninitialized filter context to initialize
777  * @param options An AVDictionary filled with options for this filter. On
778  * return this parameter will be destroyed and replaced with
779  * a dict containing options that were not found. This dictionary
780  * must be freed by the caller.
781  * May be NULL, then this function is equivalent to
782  * avfilter_init_str() with the second parameter set to NULL.
783  * @return 0 on success, a negative AVERROR on failure
784  *
785  * @note This function and avfilter_init_str() do essentially the same thing,
786  * the difference is in manner in which the options are passed. It is up to the
787  * calling code to choose whichever is more preferable. The two functions also
788  * behave differently when some of the provided options are not declared as
789  * supported by the filter. In such a case, avfilter_init_str() will fail, but
790  * this function will leave those extra options in the options AVDictionary and
791  * continue as usual.
792  */
794 
795 /**
796  * Free a filter context. This will also remove the filter from its
797  * filtergraph's list of filters.
798  *
799  * @param filter the filter to free
800  */
802 
803 /**
804  * Insert a filter in the middle of an existing link.
805  *
806  * @param link the link into which the filter should be inserted
807  * @param filt the filter to be inserted
808  * @param filt_srcpad_idx the input pad on the filter to connect
809  * @param filt_dstpad_idx the output pad on the filter to connect
810  * @return zero on success
811  */
813  unsigned filt_srcpad_idx, unsigned filt_dstpad_idx);
814 
815 /**
816  * @return AVClass for AVFilterContext.
817  *
818  * @see av_opt_find().
819  */
820 const AVClass *avfilter_get_class(void);
821 
823 
824 /**
825  * A function pointer passed to the @ref AVFilterGraph.execute callback to be
826  * executed multiple times, possibly in parallel.
827  *
828  * @param ctx the filter context the job belongs to
829  * @param arg an opaque parameter passed through from @ref
830  * AVFilterGraph.execute
831  * @param jobnr the index of the job being executed
832  * @param nb_jobs the total number of jobs
833  *
834  * @return 0 on success, a negative AVERROR on error
835  */
836 typedef int (avfilter_action_func)(AVFilterContext *ctx, void *arg, int jobnr, int nb_jobs);
837 
838 /**
839  * A function executing multiple jobs, possibly in parallel.
840  *
841  * @param ctx the filter context to which the jobs belong
842  * @param func the function to be called multiple times
843  * @param arg the argument to be passed to func
844  * @param ret a nb_jobs-sized array to be filled with return values from each
845  * invocation of func
846  * @param nb_jobs the number of jobs to execute
847  *
848  * @return 0 on success, a negative AVERROR on error
849  */
851  void *arg, int *ret, int nb_jobs);
852 
853 typedef struct AVFilterGraph {
856  unsigned nb_filters;
857 
858  char *scale_sws_opts; ///< sws options to use for the auto-inserted scale filters
859 #if FF_API_LAVR_OPTS
860  attribute_deprecated char *resample_lavr_opts; ///< libavresample options to use for the auto-inserted resample filters
861 #endif
862 
863  /**
864  * Type of multithreading allowed for filters in this graph. A combination
865  * of AVFILTER_THREAD_* flags.
866  *
867  * May be set by the caller at any point, the setting will apply to all
868  * filters initialized after that. The default is allowing everything.
869  *
870  * When a filter in this graph is initialized, this field is combined using
871  * bit AND with AVFilterContext.thread_type to get the final mask used for
872  * determining allowed threading types. I.e. a threading type needs to be
873  * set in both to be allowed.
874  */
876 
877  /**
878  * Maximum number of threads used by filters in this graph. May be set by
879  * the caller before adding any filters to the filtergraph. Zero (the
880  * default) means that the number of threads is determined automatically.
881  */
883 
884  /**
885  * Opaque object for libavfilter internal use.
886  */
888 
889  /**
890  * Opaque user data. May be set by the caller to an arbitrary value, e.g. to
891  * be used from callbacks like @ref AVFilterGraph.execute.
892  * Libavfilter will not touch this field in any way.
893  */
894  void *opaque;
895 
896  /**
897  * This callback may be set by the caller immediately after allocating the
898  * graph and before adding any filters to it, to provide a custom
899  * multithreading implementation.
900  *
901  * If set, filters with slice threading capability will call this callback
902  * to execute multiple jobs in parallel.
903  *
904  * If this field is left unset, libavfilter will use its internal
905  * implementation, which may or may not be multithreaded depending on the
906  * platform and build options.
907  */
909 
910  char *aresample_swr_opts; ///< swr options to use for the auto-inserted aresample filters, Access ONLY through AVOptions
911 
912  /**
913  * Private fields
914  *
915  * The following fields are for internal use only.
916  * Their type, offset, number and semantic can change without notice.
917  */
918 
921 
923 } AVFilterGraph;
924 
925 /**
926  * Allocate a filter graph.
927  *
928  * @return the allocated filter graph on success or NULL.
929  */
931 
932 /**
933  * Create a new filter instance in a filter graph.
934  *
935  * @param graph graph in which the new filter will be used
936  * @param filter the filter to create an instance of
937  * @param name Name to give to the new instance (will be copied to
938  * AVFilterContext.name). This may be used by the caller to identify
939  * different filters, libavfilter itself assigns no semantics to
940  * this parameter. May be NULL.
941  *
942  * @return the context of the newly created filter instance (note that it is
943  * also retrievable directly through AVFilterGraph.filters or with
944  * avfilter_graph_get_filter()) on success or NULL on failure.
945  */
947  const AVFilter *filter,
948  const char *name);
949 
950 /**
951  * Get a filter instance identified by instance name from graph.
952  *
953  * @param graph filter graph to search through.
954  * @param name filter instance name (should be unique in the graph).
955  * @return the pointer to the found filter instance or NULL if it
956  * cannot be found.
957  */
959 
960 /**
961  * Create and add a filter instance into an existing graph.
962  * The filter instance is created from the filter filt and inited
963  * with the parameter args. opaque is currently ignored.
964  *
965  * In case of success put in *filt_ctx the pointer to the created
966  * filter instance, otherwise set *filt_ctx to NULL.
967  *
968  * @param name the instance name to give to the created filter instance
969  * @param graph_ctx the filter graph
970  * @return a negative AVERROR error code in case of failure, a non
971  * negative value otherwise
972  */
974  const char *name, const char *args, void *opaque,
975  AVFilterGraph *graph_ctx);
976 
977 /**
978  * Enable or disable automatic format conversion inside the graph.
979  *
980  * Note that format conversion can still happen inside explicitly inserted
981  * scale and aresample filters.
982  *
983  * @param flags any of the AVFILTER_AUTO_CONVERT_* constants
984  */
986 
987 enum {
988  AVFILTER_AUTO_CONVERT_ALL = 0, /**< all automatic conversions enabled */
989  AVFILTER_AUTO_CONVERT_NONE = -1, /**< all automatic conversions disabled */
990 };
991 
992 /**
993  * Check validity and configure all the links and formats in the graph.
994  *
995  * @param graphctx the filter graph
996  * @param log_ctx context used for logging
997  * @return >= 0 in case of success, a negative AVERROR code otherwise
998  */
999 int avfilter_graph_config(AVFilterGraph *graphctx, void *log_ctx);
1000 
1001 /**
1002  * Free a graph, destroy its links, and set *graph to NULL.
1003  * If *graph is NULL, do nothing.
1004  */
1005 void avfilter_graph_free(AVFilterGraph **graph);
1006 
1007 /**
1008  * A linked-list of the inputs/outputs of the filter chain.
1009  *
1010  * This is mainly useful for avfilter_graph_parse() / avfilter_graph_parse2(),
1011  * where it is used to communicate open (unlinked) inputs and outputs from and
1012  * to the caller.
1013  * This struct specifies, per each not connected pad contained in the graph, the
1014  * filter context and the pad index required for establishing a link.
1015  */
1016 typedef struct AVFilterInOut {
1017  /** unique name for this input/output in the list */
1018  char *name;
1019 
1020  /** filter context associated to this input/output */
1022 
1023  /** index of the filt_ctx pad to use for linking */
1024  int pad_idx;
1025 
1026  /** next input/input in the list, NULL if this is the last */
1028 } AVFilterInOut;
1029 
1030 /**
1031  * Allocate a single AVFilterInOut entry.
1032  * Must be freed with avfilter_inout_free().
1033  * @return allocated AVFilterInOut on success, NULL on failure.
1034  */
1036 
1037 /**
1038  * Free the supplied list of AVFilterInOut and set *inout to NULL.
1039  * If *inout is NULL, do nothing.
1040  */
1041 void avfilter_inout_free(AVFilterInOut **inout);
1042 
1043 /**
1044  * Add a graph described by a string to a graph.
1045  *
1046  * @note The caller must provide the lists of inputs and outputs,
1047  * which therefore must be known before calling the function.
1048  *
1049  * @note The inputs parameter describes inputs of the already existing
1050  * part of the graph; i.e. from the point of view of the newly created
1051  * part, they are outputs. Similarly the outputs parameter describes
1052  * outputs of the already existing filters, which are provided as
1053  * inputs to the parsed filters.
1054  *
1055  * @param graph the filter graph where to link the parsed graph context
1056  * @param filters string to be parsed
1057  * @param inputs linked list to the inputs of the graph
1058  * @param outputs linked list to the outputs of the graph
1059  * @return zero on success, a negative AVERROR code on error
1060  */
1061 int avfilter_graph_parse(AVFilterGraph *graph, const char *filters,
1063  void *log_ctx);
1064 
1065 /**
1066  * Add a graph described by a string to a graph.
1067  *
1068  * In the graph filters description, if the input label of the first
1069  * filter is not specified, "in" is assumed; if the output label of
1070  * the last filter is not specified, "out" is assumed.
1071  *
1072  * @param graph the filter graph where to link the parsed graph context
1073  * @param filters string to be parsed
1074  * @param inputs pointer to a linked list to the inputs of the graph, may be NULL.
1075  * If non-NULL, *inputs is updated to contain the list of open inputs
1076  * after the parsing, should be freed with avfilter_inout_free().
1077  * @param outputs pointer to a linked list to the outputs of the graph, may be NULL.
1078  * If non-NULL, *outputs is updated to contain the list of open outputs
1079  * after the parsing, should be freed with avfilter_inout_free().
1080  * @return non negative on success, a negative AVERROR code on error
1081  */
1082 int avfilter_graph_parse_ptr(AVFilterGraph *graph, const char *filters,
1084  void *log_ctx);
1085 
1086 /**
1087  * Add a graph described by a string to a graph.
1088  *
1089  * @param[in] graph the filter graph where to link the parsed graph context
1090  * @param[in] filters string to be parsed
1091  * @param[out] inputs a linked list of all free (unlinked) inputs of the
1092  * parsed graph will be returned here. It is to be freed
1093  * by the caller using avfilter_inout_free().
1094  * @param[out] outputs a linked list of all free (unlinked) outputs of the
1095  * parsed graph will be returned here. It is to be freed by the
1096  * caller using avfilter_inout_free().
1097  * @return zero on success, a negative AVERROR code on error
1098  *
1099  * @note This function returns the inputs and outputs that are left
1100  * unlinked after parsing the graph and the caller then deals with
1101  * them.
1102  * @note This function makes no reference whatsoever to already
1103  * existing parts of the graph and the inputs parameter will on return
1104  * contain inputs of the newly parsed part of the graph. Analogously
1105  * the outputs parameter will contain outputs of the newly created
1106  * filters.
1107  */
1108 int avfilter_graph_parse2(AVFilterGraph *graph, const char *filters,
1111 
1112 /**
1113  * Send a command to one or more filter instances.
1114  *
1115  * @param graph the filter graph
1116  * @param target the filter(s) to which the command should be sent
1117  * "all" sends to all filters
1118  * otherwise it can be a filter or filter instance name
1119  * which will send the command to all matching filters.
1120  * @param cmd the command to send, for handling simplicity all commands must be alphanumeric only
1121  * @param arg the argument for the command
1122  * @param res a buffer with size res_size where the filter(s) can return a response.
1123  *
1124  * @returns >=0 on success otherwise an error code.
1125  * AVERROR(ENOSYS) on unsupported commands
1126  */
1127 int avfilter_graph_send_command(AVFilterGraph *graph, const char *target, const char *cmd, const char *arg, char *res, int res_len, int flags);
1128 
1129 /**
1130  * Queue a command for one or more filter instances.
1131  *
1132  * @param graph the filter graph
1133  * @param target the filter(s) to which the command should be sent
1134  * "all" sends to all filters
1135  * otherwise it can be a filter or filter instance name
1136  * which will send the command to all matching filters.
1137  * @param cmd the command to sent, for handling simplicity all commands must be alphanumeric only
1138  * @param arg the argument for the command
1139  * @param ts time at which the command should be sent to the filter
1140  *
1141  * @note As this executes commands after this function returns, no return code
1142  * from the filter is provided, also AVFILTER_CMD_FLAG_ONE is not supported.
1143  */
1144 int avfilter_graph_queue_command(AVFilterGraph *graph, const char *target, const char *cmd, const char *arg, int flags, double ts);
1145 
1146 
1147 /**
1148  * Dump a graph into a human-readable string representation.
1149  *
1150  * @param graph the graph to dump
1151  * @param options formatting options; currently ignored
1152  * @return a string, or NULL in case of memory allocation failure;
1153  * the string must be freed using av_free
1154  */
1155 char *avfilter_graph_dump(AVFilterGraph *graph, const char *options);
1156 
1157 /**
1158  * Request a frame on the oldest sink link.
1159  *
1160  * If the request returns AVERROR_EOF, try the next.
1161  *
1162  * Note that this function is not meant to be the sole scheduling mechanism
1163  * of a filtergraph, only a convenience function to help drain a filtergraph
1164  * in a balanced way under normal circumstances.
1165  *
1166  * Also note that AVERROR_EOF does not mean that frames did not arrive on
1167  * some of the sinks during the process.
1168  * When there are multiple sink links, in case the requested link
1169  * returns an EOF, this may cause a filter to flush pending frames
1170  * which are sent to another sink link, although unrequested.
1171  *
1172  * @return the return value of ff_request_frame(),
1173  * or AVERROR_EOF if all links returned AVERROR_EOF
1174  */
1176 
1177 /**
1178  * @}
1179  */
1180 
1181 #endif /* AVFILTER_AVFILTER_H */
AVFilterContext ** filters
Definition: avfilter.h:855
void avfilter_graph_set_auto_convert(AVFilterGraph *graph, unsigned flags)
Enable or disable automatic format conversion inside the graph.
Lists of formats / etc.
Definition: avfilter.h:438
double * var_values
variable values for the enable expression
Definition: avfilter.h:385
int sink_links_count
Definition: avfilter.h:920
This structure describes decoded (raw) audio or video data.
Definition: frame.h:308
int avfilter_graph_queue_command(AVFilterGraph *graph, const char *target, const char *cmd, const char *arg, int flags, double ts)
Queue a command for one or more filter instances.
int thread_type
Type of multithreading allowed for filters in this graph.
Definition: avfilter.h:875
void avfilter_free(AVFilterContext *filter)
Free a filter context.
Definition: avfilter.c:758
AVFilterGraph * avfilter_graph_alloc(void)
Allocate a filter graph.
Definition: avfiltergraph.c:83
int avfilter_graph_config(AVFilterGraph *graphctx, void *log_ctx)
Check validity and configure all the links and formats in the graph.
void avfilter_inout_free(AVFilterInOut **inout)
Free the supplied list of AVFilterInOut and set *inout to NULL.
Definition: graphparser.c:212
struct AVFilterInOut * next
next input/input in the list, NULL if this is the last
Definition: avfilter.h:1027
Queue of AVFrame pointers.
Definition: framequeue.h:53
enum AVMediaType avfilter_pad_get_type(const AVFilterPad *pads, int pad_idx)
Get the type of an AVFilterPad.
Definition: avfilter.c:1050
the definition of that something depends on the semantic of the filter The callback must examine the status of the filter s links and proceed accordingly The status of output links is stored in the status_in and status_out fields and tested by the then the processing requires a frame on this link and the filter is expected to make efforts in that direction The status of input links is stored by the status_in
Libavfilter version macros.
void avfilter_graph_free(AVFilterGraph **graph)
Free a graph, destroy its links, and set *graph to NULL.
AVBufferRef * hw_device_ctx
For filters which will create hardware frames, sets the device the filter should create them in...
Definition: avfilter.h:395
Convenience header that includes libavutil&#39;s core.
GLint GLenum type
Definition: opengl_enc.c:104
int(* activate)(AVFilterContext *ctx)
Filter activation function.
Definition: avfilter.h:328
int thread_type
Type of multithreading being allowed/used.
Definition: avfilter.h:374
void(* uninit)(AVFilterContext *ctx)
Filter uninitialization function.
Definition: avfilter.h:259
int is_disabled
the enabled state from the last expression evaluation
Definition: avfilter.h:386
Macro definitions for various function/variable attributes.
int nb_threads
Max number of threads allowed in this filter instance.
Definition: avfilter.h:402
char * scale_sws_opts
sws options to use for the auto-inserted scale filters
Definition: avfilter.h:858
struct AVFilterGraph * graph
filtergraph this filter belongs to
Definition: avfilter.h:356
int(* init_dict)(AVFilterContext *ctx, AVDictionary **options)
Should be set instead of init by the filters that want to pass a dictionary of AVOptions to nested co...
Definition: avfilter.h:247
int priv_size
size of private data to allocate for the filter
Definition: avfilter.h:285
AVFilterLink ** inputs
array of pointers to input links
Definition: avfilter.h:347
char * name
name of this filter instance
Definition: avfilter.h:344
Public dictionary API.
avfilter_execute_func * execute
This callback may be set by the caller immediately after allocating the graph and before adding any f...
Definition: avfilter.h:908
int avfilter_link(AVFilterContext *src, unsigned srcpad, AVFilterContext *dst, unsigned dstpad)
Link two filters together.
Definition: avfilter.c:135
AVFilterPad * output_pads
array of output pads
Definition: avfilter.h:350
const char * avfilter_license(void)
Return the libavfilter license.
Definition: avfilter.c:88
unsigned ready
Ready status of the filter.
Definition: avfilter.h:409
all automatic conversions disabled
Definition: avfilter.h:989
int( avfilter_execute_func)(AVFilterContext *ctx, avfilter_action_func *func, void *arg, int *ret, int nb_jobs)
A function executing multiple jobs, possibly in parallel.
Definition: avfilter.h:850
int flags
A combination of AVFILTER_FLAG_*.
Definition: avfilter.h:188
int avfilter_graph_create_filter(AVFilterContext **filt_ctx, const AVFilter *filt, const char *name, const char *args, void *opaque, AVFilterGraph *graph_ctx)
Create and add a filter instance into an existing graph.
int nb_threads
Maximum number of threads used by filters in this graph.
Definition: avfilter.h:882
int avfilter_config_links(AVFilterContext *filter)
Negotiate the media format, dimensions, etc of all inputs to a filter.
Definition: avfilter.c:277
AVFilterContext * avfilter_graph_get_filter(AVFilterGraph *graph, const char *name)
Get a filter instance identified by instance name from graph.
int(* preinit)(AVFilterContext *ctx)
Filter pre-initialization function.
Definition: avfilter.h:211
int avfilter_graph_parse2(AVFilterGraph *graph, const char *filters, AVFilterInOut **inputs, AVFilterInOut **outputs)
Add a graph described by a string to a graph.
Definition: graphparser.c:418
int extra_hw_frames
Sets the number of extra hardware frames which the filter will allocate on its output links for use i...
Definition: avfilter.h:425
A filter pad used for either input or output.
Definition: internal.h:54
#define src
Definition: vp8dsp.c:254
AVFilterPad * input_pads
array of input pads
Definition: avfilter.h:346
filter_frame For filters that do not use the this method is called when a frame is pushed to the filter s input It can be called at any time except in a reentrant way If the input frame is enough to produce then the filter should push the output frames on the output link immediately As an exception to the previous rule if the input frame is enough to produce several output frames then the filter needs output only at least one per link The additional frames can be left buffered in the filter
const AVClass * av_class
Definition: avfilter.h:854
unsigned nb_outputs
number of output pads
Definition: avfilter.h:352
unsigned avfilter_version(void)
Return the LIBAVFILTER_VERSION_INT constant.
Definition: avfilter.c:77
void * priv
private data for use by the filter
Definition: avfilter.h:354
AVFilterFormats * formats
List of supported formats (pixel or sample).
Definition: avfilter.h:443
char * enable_str
enable expression string
Definition: avfilter.h:383
const char * arg
Definition: jacosubdec.c:66
AVFilterLink ** sink_links
Private fields.
Definition: avfilter.h:919
reference-counted frame API
const AVFilter * avfilter_get_by_name(const char *name)
Get a filter definition matching the given name.
Definition: allfilters.c:521
attribute_deprecated void avfilter_link_set_closed(AVFilterLink *link, int closed)
Set the closed field of a link.
Definition: avfilter.c:235
unsigned nb_inputs
number of input pads
Definition: avfilter.h:348
AVFilterChannelLayouts * channel_layouts
Lists of supported channel layouts, only for audio.
Definition: avfilter.h:453
typedef void(APIENTRY *FF_PFNGLACTIVETEXTUREPROC)(GLenum texture)
AVFormatContext * ctx
Definition: movenc.c:48
int(* init)(AVFilterContext *ctx)
Filter initialization function.
Definition: avfilter.h:234
int flags_internal
Additional flags for avfilter internal use only.
Definition: avfilter.h:287
AVFilterFormats * samplerates
Lists of supported sample rates, only for audio.
Definition: avfilter.h:448
AVFilterContext * filter_ctx
filter context associated to this input/output
Definition: avfilter.h:1021
int( avfilter_action_func)(AVFilterContext *ctx, void *arg, int jobnr, int nb_jobs)
A function pointer passed to the AVFilterGraph::execute callback to be executed multiple times...
Definition: avfilter.h:836
A list of supported channel layouts.
Definition: formats.h:86
int avfilter_init_str(AVFilterContext *ctx, const char *args)
Initialize a filter with the supplied parameters.
Definition: avfilter.c:935
const AVFilterPad * inputs
List of inputs, terminated by a zeroed element.
Definition: avfilter.h:165
const AVClass * avfilter_get_class(void)
Definition: avfilter.c:1643
A linked-list of the inputs/outputs of the filter chain.
Definition: avfilter.h:1016
int avfilter_insert_filter(AVFilterLink *link, AVFilterContext *filt, unsigned filt_srcpad_idx, unsigned filt_dstpad_idx)
Insert a filter in the middle of an existing link.
Definition: avfilter.c:240
const AVClass * priv_class
A class for the private data, used to declare filter private AVOptions.
Definition: avfilter.h:183
int(* process_command)(AVFilterContext *, const char *cmd, const char *arg, char *res, int res_len, int flags)
Make the filter instance process a command.
Definition: avfilter.h:307
int avfilter_graph_request_oldest(AVFilterGraph *graph)
Request a frame on the oldest sink link.
int avfilter_process_command(AVFilterContext *filter, const char *cmd, const char *arg, char *res, int res_len, int flags)
Make the filter instance process a command.
Definition: avfilter.c:539
int avfilter_graph_parse(AVFilterGraph *graph, const char *filters, AVFilterInOut *inputs, AVFilterInOut *outputs, void *log_ctx)
Add a graph described by a string to a graph.
Definition: graphparser.c:486
int(* func)(AVBPrint *dst, const char *in, const char *arg)
Definition: jacosubdec.c:67
Describe the class of an AVClass context structure.
Definition: log.h:67
Filter definition.
Definition: avfilter.h:145
int pad_idx
index of the filt_ctx pad to use for linking
Definition: avfilter.h:1024
Rational number (pair of numerator and denominator).
Definition: rational.h:58
const AVFilter * av_filter_iterate(void **opaque)
Iterate over all registered filters.
Definition: allfilters.c:510
int(* query_formats)(AVFilterContext *)
Query formats supported by the filter on its inputs and outputs.
Definition: avfilter.h:283
struct AVFilter * next
Used by the filter registration system.
Definition: avfilter.h:293
AVMediaType
Definition: avutil.h:199
refcounted data buffer API
const char * name
Filter name.
Definition: avfilter.h:149
unsigned nb_filters
Definition: avfilter.h:856
const char * avfilter_configuration(void)
Return the libavfilter build-time configuration.
Definition: avfilter.c:83
Filter the word “frame” indicates either a video frame or a group of audio as stored in an AVFrame structure Format for each input and each output the list of supported formats For video that means pixel format For audio that means channel sample they are references to shared objects When the negotiation mechanism computes the intersection of the formats supported at each end of a link
const char * avfilter_pad_get_name(const AVFilterPad *pads, int pad_idx)
Get the name of an AVFilterPad.
Definition: avfilter.c:1045
AVFilterLink ** outputs
array of pointers to output links
Definition: avfilter.h:351
int avfilter_link_get_channels(AVFilterLink *link)
Definition: avfilter.c:187
char * name
unique name for this input/output in the list
Definition: avfilter.h:1018
static const int8_t filt[NUMTAPS]
Definition: af_earwax.c:39
int(* init_opaque)(AVFilterContext *ctx, void *opaque)
Filter initialization function, alternative to the init() callback.
Definition: avfilter.h:314
#define attribute_deprecated
Definition: attributes.h:100
int avfilter_init_dict(AVFilterContext *ctx, AVDictionary **options)
Initialize a filter with the supplied dictionary of options.
Definition: avfilter.c:898
A reference to a data buffer.
Definition: buffer.h:81
void * opaque
Opaque user data.
Definition: avfilter.h:894
int
const OptionDef options[]
Definition: ffmpeg_opt.c:3393
AVFilterInOut * avfilter_inout_alloc(void)
Allocate a single AVFilterInOut entry.
Definition: graphparser.c:207
Utilties for rational number calculation.
struct AVFilterCommand * command_queue
Definition: avfilter.h:381
char * avfilter_graph_dump(AVFilterGraph *graph, const char *options)
Dump a graph into a human-readable string representation.
Definition: graphdump.c:154
int avfilter_graph_send_command(AVFilterGraph *graph, const char *target, const char *cmd, const char *arg, char *res, int res_len, int flags)
Send a command to one or more filter instances.
char * aresample_swr_opts
swr options to use for the auto-inserted aresample filters, Access ONLY through AVOptions ...
Definition: avfilter.h:910
pixel format definitions
const char * description
A description of the filter.
Definition: avfilter.h:156
AVFilterContext * avfilter_graph_alloc_filter(AVFilterGraph *graph, const AVFilter *filter, const char *name)
Create a new filter instance in a filter graph.
void * enable
parsed expression (AVExpr*)
Definition: avfilter.h:384
const AVClass * av_class
needed for av_log() and filters common options
Definition: avfilter.h:340
static const struct PPFilter filters[]
Definition: postprocess.c:134
A list of supported formats for one end of a filter link.
Definition: formats.h:65
int avfilter_graph_parse_ptr(AVFilterGraph *graph, const char *filters, AVFilterInOut **inputs, AVFilterInOut **outputs, void *log_ctx)
Add a graph described by a string to a graph.
Definition: graphparser.c:549
An instance of a filter.
Definition: avfilter.h:339
int avfilter_pad_count(const AVFilterPad *pads)
Get the number of elements in a NULL-terminated array of AVFilterPads (e.g.
Definition: avfilter.c:560
const AVFilterPad * outputs
List of outputs, terminated by a zeroed element.
Definition: avfilter.h:173
all automatic conversions enabled
Definition: avfilter.h:988
void avfilter_link_free(AVFilterLink **link)
Free the link in *link, and set its pointer to NULL.
Definition: avfilter.c:174
const AVFilter * filter
the AVFilter of which this is an instance
Definition: avfilter.h:342
unsigned disable_auto_convert
Definition: avfilter.h:922
const char * name
Definition: opengl_enc.c:102