Всем доброго времени суток столкнулся с необъяснимым для меня явлением: фильтр АудиоРендерер ака Default DirectSound Device скипает данные.
Ситуация:
В демультиплексере/сплиттере из реализации IBaseFilter::GetSate возвращаем VFW_S_CANT_CUE(в сотоянии пауза) для того что бы граф мог перейти в состояние State_Run при отсутствии данных по аудио ветке графа. т.е. прикидываемся live сорцом.
Запускаем граф. Всё ОК.
В настройках фильтра на проперти паге меняем активный аудио стрим — просиходит динамическое пересоединения выходного аудио пина сплиттера с входным пином рендерера в результате чего меняется декодер, например было mp3 стало aac. Звук пропадает. На проперти паге рендерера на вкладке Advanced видно что рендерер скипает самплы. Времена не рвутся. Сам рендерер находиться в сотосянии Run. Сплиттер то же.
Если не возвращать из реализации IBaseFilter::GetSate VFW_S_CANT_CUE в сотоянии пауза, то всё работает.