Media Foundation: мульти-вход MFT и порядок подключения топологии
Эта проблема
Я пишу пользовательский MFT с двумя входами и одним выходом (он объединяет два видеопотока в один).
Мой MFT требует, чтобы типы носителей были установлены на его входах, прежде чем он сможет предоставить тип вывода.
Я настроил свою топологию, подключив два исходных узла (они принимают разные потоки из совокупного источника мультимедиа) к моему узлу преобразования, а затем к EVR к одному выходу.
Когда я начинаю сеанс медиа, я вижу, что топология вызывает SetInputType
на первом входе, и это успешно.
Но затем он сразу пытается получить тип вывода: сначала вызывая GetOutputCurrentType
на моем MFT, который возвращает MF_E_TRANSFORM_TYPE_NOT_SET
поскольку он не может предоставить один, а затем позвонив GetOutputAvailableType
, который я сделал вернуть MF_E_TRANSFORM_TYPE_NOT_SET
согласно документации (говорит, что Вы должны установить типы ввода перед установкой типов вывода; я также попытался вывести некоторые частичные типы носителей, но это то же самое).
И вот проблема: после этого топология, кажется, отказывается от моего MFT: он никогда не вызывает SetInputType
на втором входе.
Вопрос
Как я могу заставить топологию установить все типы ввода, прежде чем иметь дело с выводом?
1 ответ
Читать это: множественный ввод
Под Windows 7 это не работает...
Вы можете предоставить пользовательский медиа-сеанс, как я делаю в проекте MFNode.