+ * Adds the given listener to the list of registered listeners.
+ *
+ * @param metadataListener
+ * The metadata listener to add
+ */
+ void addMetadataListener(MetadataListener metadataListener);
+
+ /**
+ * Removes the given listener from the list of registered listeners.
+ *
+ * @param metadataListener
+ * The metadata listener to remove
+ */
+ void removeMetadataListener(MetadataListener metadataListener);
+
+ /**
+ * Returns the name of this filter.
+ *
+ * @return The name of this filter
+ */
+ String name();
+
+ /**
+ * Returns the controllers offered by this filter.
+ *
+ * @return The controllers of this filter
+ */
+ List<Controller<?>> controllers();
+
+ /**
+ * Returns the metadata of the audio stream.
+ *
+ * @return The metadata of the audio stream
+ */
+ Metadata metadata();
+
+ /**
+ * Notifies the sink that the metadata of the audio stream has changed. This
+ * method should return as fast as possible, i.e. every heavy lifting should be
+ * done from another thread.