FFmpeg硬件编解码—AMD GPU
作者:罗上文,微信:Loken1,公众号:FFmpeg弦外之音
AMD GPU 与 NVIDIA GPU 在功能性上是类似的,除了有 codec(编解码)功能之外。AMD GPU 也可以执行通用计算任务,也有 compute、core 的概念。
AMD GPU 上的硬件解码单元叫 Unified Video Decoder(UVD),硬件编码单元叫 Video Compression Engine(VCE)。
硬件编解码的 API 非常繁杂,非常乱,你有好多种方式可以调用 UVD/VCE。
1,AMF,AMD Advanced Media Framework
这是 AMD 官方出的框架,可以通过 AMF 来调用 UVD/VCE 的能力, GitHub AMF 上有对应的文档跟示例。AMF 在 Linux、Windows 平台都可以使用。
2,DirectX,微软出的
在 Windows 平台你可以通过 DX9、DX11 来调用 UVD 的解码能力。虽然 DirectX 也可以用于编码,但 FFmpg 没有基于 DirectX 实现硬件编码器。
3,VAAPI
VAAPI 最初是 Intel 提出的,但是这个东西也可以用在 AMD GPU上。VAAPI 只能用在 Linux 环境,Windows 环境不能用。