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.
* Get the name of an AVFilterPad.
*
* @param pads an array of AVFilterPads
- * @param pad_idx index of the pad in the array it; is the caller's
+ * @param pad_idx index of the pad in the array; it is the caller's
* responsibility to ensure the index is valid
*
* @return name of the pad_idx'th pad in pads
* 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 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.
- *
- */
- AVFilterFormats *in_formats;
- AVFilterFormats *out_formats;
/**
- * Lists of channel layouts and sample rates used for automatic
- * negotiation.
+ * Lists of supported formats / etc. supported by the input filter.
*/
- AVFilterFormats *in_samplerates;
- AVFilterFormats *out_samplerates;
- struct AVFilterChannelLayouts *in_channel_layouts;
- struct AVFilterChannelLayouts *out_channel_layouts;
+ AVFilterFormatsConfig incfg;
/**
- * Audio only, the destination filter sets this to a non-zero value to
- * request that buffers with the given number of samples should be sent to
- * it. AVFilterPad.needs_fifo must also be set on the corresponding input
- * pad.
- * Last buffer before EOF will be padded with silence.
+ * Lists of supported formats / etc. supported by the output filter.
*/
- int request_samples;
+ AVFilterFormatsConfig outcfg;
/** stage of the initialization of the link properties (dimensions, etc) */
enum {
/**
* Create and add a filter instance into an existing graph.
* The filter instance is created from the filter filt and inited
- * with the parameters args and opaque.
+ * with the parameter args. opaque is currently ignored.
*
* In case of success put in *filt_ctx the pointer to the created
* filter instance, otherwise set *filt_ctx to NULL.