0

我经常看到基于 ARM 的芯片宣传板载 GPU,例如带有“Broadcom VideoCore IV @ 250 MHz”的 RPI3 和带有“Mali-450 GPU”的 OdroidC2。这些芯片宣传诸如“解码 4k/30FPS、编码 1080p、30FPS”之类的东西作为 GPU 编码和解码视频的能力。

我的问题是——像 Kodi、VLC 或 FFMPEG 这样的程序是如何利用这些 GPU 进行实际编码和解码的?例如,当我研究如何使用 Mali-450 GPU 时,我发现了一些深奥且记录不充分的 C 示例,它们将压缩帧发送到 GPU 并获取解码帧。如果我要使用像 OdroidC2 这样的设备并在其上安装 VLC,VLC 如何利用 GPU?是否有人必须将逻辑写入 VLC 以使用 Mali GPU 公开的特定编码/解码 API 才能使用它,或者这些 GPU 是否遵循所有 GPU 公开的某种一致的 API,而 VLC/Kodi 可以针对这个系统API?

我问这个问题的原因是 VLC 和 Kodi 倾向于支持这些 GPU 开箱即用,但是像 FFMPEG 这样以支持尽可能多的编解码器和加速器而自豪的非常流行的程序不支持 Mali GPU系列。为什么 VLC/Kodi 支持编码/解码而不是 FFMPEG?如果这些 GPU 难以编程并且必须使用他们定制的深奥 API 而不是 libavcodec 之类的东西,为什么这些制造商声称支持疯狂的解码和编码?

我希望我的问题是有道理的,我想我很好奇的是,大多数系统上的 GPU,无论是英特尔高清显卡、Nvidia 卡、AMD 卡等,似乎都被大多数视频播放器自动使用,但是当涉及到对这些设备使用 FFMPEG 之类的东西,过程变得更加复杂,您需要自定义编译构建并提供特殊标志以按预期使用设备。我在这里缺少什么吗?VLC 是否经过编程以利用所有这些不同类型的 GPU?在这种情况下,为什么 FFMEPG 不支持开箱即用的 Mali GPU?

4

1 回答 1

0

Mali GPU 只是用于实时图形 API OpenGL ES、Vulkan 等的 GPU。它与压缩或解压缩视频无关,但可以读取通过其他方式解压缩后的视频帧。

于 2020-07-07T11:23:54.630 回答