如何通过媒体基础使用英特尔 Quicksync 进行解码?

Posted

技术标签:

【中文标题】如何通过媒体基础使用英特尔 Quicksync 进行解码?【英文标题】:How can I use Intel Quicksync for DECODE through media foundation? 【发布时间】:2018-05-03 21:26:19 【问题描述】:

使用Microsoft H.264 MFT的方法是什么?有一个用于快速同步的 MFT,但仅用于编码。

Microsoft H.264 MFT 上的标志是同步和软件。我可以使用 D3D 设备并使用 IMFVideoSampleAllocatorEX 进行一定程度的视频加速,但我想知道是否有更好的方法通过 Media Foundation 使用英特尔快速同步。

【问题讨论】:

【参考方案1】:

Microsoft H.264 Video Encoder 用于编码。

Intel Quick Sync Video H.264 Encoder MFT 也是一个编码器对象。

如果您正在寻找硬件辅助解码器,Media Foundation API 通过H.264 Video Decoder 提供,它能够利用 DXVA2 API,而后者又使用硬件功能来解码 H.264 视频。

UPD。在下面的 cmets 中详细阐述后续问题,H.264 视频解码器 MFT 作为同步 MFT 没有任何问题。事实上,hardware MFTs 有一个记录在案的要求是异步的。 H.264 视频解码器 MFT 和最近的 H.265/HEVC 视频解码器 MFT 具有不同的结构:它们将软件解码器结合为备用代码路径,通过内部使用 DXVA2 API 来利用硬件解码器,并且是同步解码器。

IHV 不会为 H.264 和 H.265 提供单独的硬件 MFT,因为上述库存解码器 MFT 已经以有效的方式集成了硬件解码功能。专用的真正硬件 MFT 解码器不会提供任何真正的优势。对于 DXVA2 和/或库存解码器未涵盖的格式,IHV 会以异步硬件 MFT 的形式提供专用解码器(例如 M-JPEG、VP8 格式)。

最重要的是,股票解码器是使用硬件支持解码的建议方法。否则可以使用 IHV SDK 与解码器通信。它可能提供更好的灵活性,大概复杂性更高,尤其是。就需要与 Media Foundation 管道集成(如有必要)而言,但性能提升不太可能:启用硬件解码的库存 Media Foundation 解码器会增加相当小的开销。

【讨论】:

是的,我就是这么想的。但是,当我使用 h.264 视频解码器时,标志会将其报告为同步。软件。这是bug吗,好像是dxva2加速了,但不清楚 尽管硬件 MFT 按照惯例是异步的,但支持 DXVA2 的解码器是一种例外。它是一个带有软件和 DXVA2 代码路径的解码器,并且 DXVA2 在可用且未禁用的情况下使用。没有专用的硬件解码器。 顺便说一句,更新的 H.265 解码器也是同步的。英特尔、AMD 为 DXVA2 未涵盖的格式(M-JPEG、VP8 等)提供异步硬件解码器。 H.265 / HEVC Video Decoder 知道了!很高兴知道 h.265 是异步的,并且 h.264 是所有制造商的必经之路,它只支持 DXVA2 总而言之 * H.264 Software Sync MFT with only DXVA2 is the Media foundation way of doing H.264 * 如果可以改用 H.265,MFT 会好得多,而且它是硬件异步 * 如果需要 H.264,最好使用供应商特定的 API(NVENC、Quicksync 等)如果您编辑答案以包含这些要点,我会接受。谢谢!

以上是关于如何通过媒体基础使用英特尔 Quicksync 进行解码?的主要内容,如果未能解决你的问题,请参考以下文章

自动驾驶落地最难的是什么

英特尔CoreAtom处理器路线图解析,未来处理器将不依赖于最先进工艺

H265流媒体播放器EasyPlayer如何设置视频关闭播放?

如何通过英特尔 OpenCL SVML 使用 _mm256_log_ps?

GStreamer基础教程03 - 媒体类型与Pad

AOM Summit:拥抱开源,引领新技术创新