Media Foundation Capture - как определить истинный собственный формат ввода

У меня есть несколько видео конвертеров (Marshall VAC-11SU3, Marshall VAC-11HU3, Magewell USB Capture SDI, Blackmagic UltraStudio Express) и никаких камер. Все они имеют входящий видеосигнал, подключенный к соответствующим портам SDI или HDMI.

Проблема в том, что GetNativeMediaType всегда возвращает тот же формат, что и GetMediaTypeByIndex для индекса 0, независимо от фактического формата видео, поступающего в порт SDI/HDMI.

Каждый пример Media Foundation, который я видел до сих пор, имеет интерфейс для выбора "правильного" собственного формата. Это меню заполняется из GetMediaTypeCount и GetMediaTypeByIndex для устройства.

Мои пользователи не будут знать, что выбрать!

Мы использовали DeckLink API от Blackmagic, и наши пользователи видят формат входящего видеосигнала в пользовательском интерфейсе. Мы хотели бы расширить поддержку для нескольких производителей устройств, но это поставило меня в тупик.

1 ответ

Решение

Media Foundation не использует концепцию определения формата сигнала, которую вы используете с недавним оборудованием Blackmagic (более ранние продукты Blackmagic, кстати, не предлагали обнаружение).

Драйвер видеоисточника действительно может перечислить тип носителя, который он видит в проводной сети в качестве первого GetNativeMediaType выводить и / или предлагать динамическое изменение формата во время сеанса потоковой передачи на такой формат. Однако видеоисточники Media Foundation в основном предполагают устройства, подобные веб-камере, и имеют фиксированный порядок перечисления.

Я бы не предполагал, что драйвер Blackmagic отличается от других, поскольку он в основном имитирует веб-камеру, поэтому при использовании драйвера WDM устройства Blackmagic могут потреблять входные данные с использованием стандартных API-интерфейсов. Если требуется расширенная функциональность, такая как обнаружение сигнала, Blackmagic предлагает использовать их DeckLink SDK (что, кстати, хорошо).

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