+ assert (filters->count < max);
+ filters->tab[filters->count] = filter;
+ filters->count++;
+ *infmt = filter->fmt_out.audio;
+ return 0;
+}
+
+#undef aout_FiltersNew
+/**
+ * Sets a chain of audio filters up.
+ * \param obj parent object for the filters
+ * \param infmt chain input format [IN]
+ * \param outfmt chain output format [IN]
+ * \param request_vout visualization video output request callback
+ * \return a filters chain or NULL on failure
+ *
+ * \note
+ * *request_vout (if not NULL) must remain valid until aout_FiltersDelete().
+ *
+ * \bug
+ * If request_vout is non NULL, obj is assumed to be an audio_output_t pointer.
+ */
+aout_filters_t *aout_FiltersNew (vlc_object_t *obj,
+ const audio_sample_format_t *restrict infmt,
+ const audio_sample_format_t *restrict outfmt,
+ const aout_request_vout_t *request_vout)
+{
+ aout_filters_t *filters = malloc (sizeof (*filters));
+ if (unlikely(filters == NULL))
+ return NULL;
+
+ filters->rate_filter = NULL;
+ filters->resampler = NULL;
+ filters->resampling = 0;
+ filters->count = 0;
+
+ /* Prepare format structure */
+ aout_FormatPrint (obj, "input", infmt);
+ audio_sample_format_t input_format = *infmt;
+ audio_sample_format_t output_format = *outfmt;
+
+ /* Callbacks (before reading values and also before return statement) */
+ if (request_vout != NULL)