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.

Другие вопросы по тегам