A filter is a COM object that performs a specific task, such as reading data from a disk. For each stream it handles, it exposes at least one pin. A pin is a COM object created by the filter, that represents a point of connection for a unidirectional data stream on the filter, as shown in the following illustration. Input pins accept data into the filter, and output pins provide data to other filters. A source filter provides one output pin for each stream of data in the file.
More complex arrangements are also possible.
You can name pins anything you want. This can apply to pins that are just informational and are not meant to be rendered, or need to be enumerated so that their properties can be set. However, output pins of intermediate filters which are being used to complete the connection which have the tilde at the start of their name will not be connected as part of the intelligent connection attempt. At a minimum, a filter exposes the IBaseFilter interface. This interface provides methods that allow the enumeration of the pins on the filter and return filter information.