Решил написать фильтр для DirectShow без использования лишних библиотек, например: strmbasd.lib. В процессе написания возникла проблема, что все классы фильтров должны наследоваться от класса CUnknown. Зачем он нужен? Чтоб считать количество ссылок на фильтр и когда m_cRef станет равно нулю удалить класс фильтра? Зачем он реализует интерфейс INonDelegatingUnknown, если все равно такой не запрашивается? Да и зачем этот интерфейс нужен, если адреса его функций в классе фильтра те же, что и IUnknown? Самое интересное, если не наследовать класс фильтра от CUnknown, то фильтр работает также хорошо как и с ним только без использования strmbasd.lib.