typedef struct AVFilterLink AVFilterLink;
typedef struct AVFilterPad AVFilterPad;
typedef struct AVFilterFormats AVFilterFormats;
+typedef struct AVFilterChannelLayouts AVFilterChannelLayouts;
/**
* Get the number of elements in a NULL-terminated array of AVFilterPads (e.g.
* and outputs are fixed), shortly before the format negotiation. This
* callback may be called more than once.
*
- * This callback must set AVFilterLink.out_formats on every input link and
- * AVFilterLink.in_formats on every output link to a list of pixel/sample
+ * This callback must set AVFilterLink.outcfg.formats on every input link and
+ * AVFilterLink.incfg.formats on every output link to a list of pixel/sample
* formats that the filter supports on that link. For audio links, this
- * filter must also set @ref AVFilterLink.in_samplerates "in_samplerates" /
- * @ref AVFilterLink.out_samplerates "out_samplerates" and
- * @ref AVFilterLink.in_channel_layouts "in_channel_layouts" /
- * @ref AVFilterLink.out_channel_layouts "out_channel_layouts" analogously.
+ * filter must also set @ref AVFilterLink.incfg.samplerates "in_samplerates" /
+ * @ref AVFilterLink.outcfg.samplerates "out_samplerates" and
+ * @ref AVFilterLink.incfg.channel_layouts "in_channel_layouts" /
+ * @ref AVFilterLink.outcfg.channel_layouts "out_channel_layouts" analogously.
*
* This callback may be NULL for filters with one input, in which case
* libavfilter assumes that it supports all input formats and preserves
int flags_internal; ///< Additional flags for avfilter internal use only.
+#if FF_API_NEXT
/**
* Used by the filter registration system. Must not be touched by any other
* code.
*/
struct AVFilter *next;
+#endif
/**
* Make the filter instance process a command.
int extra_hw_frames;
};
+/**
+ * Lists of formats / etc. supported by an end of a link.
+ *
+ * This structure is directly part of AVFilterLink, in two copies:
+ * one for the source filter, one for the destination filter.
+
+ * These lists are used for negotiating the format to actually be used,
+ * which will be loaded into the format and channel_layout members of
+ * AVFilterLink, when chosen.
+ */
+typedef struct AVFilterFormatsConfig {
+
+ /**
+ * List of supported formats (pixel or sample).
+ */
+ AVFilterFormats *formats;
+
+ /**
+ * Lists of supported sample rates, only for audio.
+ */
+ AVFilterFormats *samplerates;
+
+ /**
+ * Lists of supported channel layouts, only for audio.
+ */
+ AVFilterChannelLayouts *channel_layouts;
+
+} AVFilterFormatsConfig;
+
/**
* A link between two filters. This contains pointers to the source and
* destination filters between which this link exists, and the indexes of
* New public fields should be added right above.
*****************************************************************
*/
+
/**
- * Lists of formats and channel layouts supported by the input and output
- * filters respectively. These lists are used for negotiating the format
- * to actually be used, which will be loaded into the format and
- * channel_layout members, above, when chosen.
- *
+ * Lists of supported formats / etc. supported by the input filter.
*/
- AVFilterFormats *in_formats;
- AVFilterFormats *out_formats;
+ AVFilterFormatsConfig incfg;
/**
- * Lists of channel layouts and sample rates used for automatic
- * negotiation.
+ * Lists of supported formats / etc. supported by the output filter.
*/
- AVFilterFormats *in_samplerates;
- AVFilterFormats *out_samplerates;
- struct AVFilterChannelLayouts *in_channel_layouts;
- struct AVFilterChannelLayouts *out_channel_layouts;
+ AVFilterFormatsConfig outcfg;
/** stage of the initialization of the link properties (dimensions, etc) */
enum {
*/
int channels;
- /**
- * Link processing flags.
- */
- unsigned flags;
-
/**
* Number of past frames sent through the link.
*/
*/
void avfilter_link_free(AVFilterLink **link);
-#if FF_API_FILTER_GET_SET
-/**
- * Get the number of channels of a link.
- * @deprecated Use av_buffersink_get_channels()
- */
-attribute_deprecated
-int avfilter_link_get_channels(AVFilterLink *link);
-#endif
-
+#if FF_API_FILTER_LINK_SET_CLOSED
/**
* Set the closed field of a link.
* @deprecated applications are not supposed to mess with links, they should
*/
attribute_deprecated
void avfilter_link_set_closed(AVFilterLink *link, int closed);
-
+#endif
/**
* Negotiate the media format, dimensions, etc of all inputs to a filter.
*
unsigned nb_filters;
char *scale_sws_opts; ///< sws options to use for the auto-inserted scale filters
-#if FF_API_LAVR_OPTS
- attribute_deprecated char *resample_lavr_opts; ///< libavresample options to use for the auto-inserted resample filters
-#endif
/**
* Type of multithreading allowed for filters in this graph. A combination