Media Foundation Capture - 你如何检测真正的原生输入格式

Media Foundation Capture - how do you detect the true native input format

我有几个视频转换器(Marshall VAC-11SU3、Marshall VAC-11HU3、Magewell USB Capture SDI、Blackmagic UltraStudio Express)但没有相机。 它们都有一个输入视频信号插入各自的 SDI 或 HDMI 端口。

问题是 GetNativeMediaType 总是 returns 与 GetMediaTypeByIndex 对索引 0 所做的格式相同,而不管进入 SDI/HDMI 端口的实际视频格式如何。

到目前为止我看到的每个 Media Foundation 示例都有一个 UI 来选择 "correct" 本机格式。此菜单由设备的 GetMediaTypeCount 和 GetMediaTypeByIndex 填充。

我的用户会不知道该选什么!

我们一直在使用 Blackmagic 的 DeckLink API,我们的用户在 UI 中看到输入的视频信号格式。 我们想扩大对多个设备制造商的支持,但这让我很困惑。

Media Foundation 不采用最近的 Blackmagic 硬件所具有的信号格式检测概念(顺便说一下,早期的 Blackmagic 产品不提供检测功能)。

视频源驱动程序确实可以枚举它在网络上看到的媒体类型,因为第一个 GetNativeMediaType 输出 and/or 在流式传输会话期间提供动态格式更改为这种格式。 Media Foundation 视频源大多采用类似网络摄像头的设备,并且具有固定的类型枚举顺序。

我不认为 Blackmagic 驱动程序会有所不同,因为它主要模仿网络摄像头,因此使用 WDM 驱动程序可以使用标准 API 使用 Blackmagic 设备输入。如果需要扩展功能,例如信号检测,Blackmagic 建议使用他们的 DeckLink SDK(顺便说一句,这很好)。