我经常看到基于ARM的芯片在GPU上做广告,比如带有"Broadcom VideoCore IV @ 250 MHz“的RPI3和带有”Mali 450GPU“的OdroidC2。这些芯片宣传“解码4k/30FPS,编码1080p,30FPS”之类的东西,作为GPU用于编码和解码视频的功能。
我的问题是-像Kodi、VLC或FFMPEG这样的程序是如何利用这些GPU进行实际的编码和解码的?例如,当我研究如何使用Mali 450GPU时,我发现了一些深奥且文档很少的C语言示例,例如将压缩帧发送到GPU并取回解码帧。如果我使用像OdroidC2这样的设备并在上面安装VLC,那么VLC如何利用GPU呢?是否有人必须在VLC中编写逻辑才能使用马里GPU公开的特定编码/解码API才能使用它,或者这些GPU是否遵循由所有GPU公开的某种一致的API,并且VLC/Kodi可以直接针对此系统API进行编程?
我问这个问题的原因是,VLC和Kodi倾向于开箱即用地支持这些GPU,但像FFMPEG这样以支持尽可能多的编解码器和加速器而自豪的非常受欢迎的程序不支持Mali系列的解码和编码。为什么VLC/Kodi支持编码/解码,而不支持FFMPEG?如果这些GPU很难编程,而且必须使用他们的自定义深奥API,而不是像libavcodec这样的东西,为什么这些制造商还声称支持狂野解码和编码?
我希望我的问题有意义,我猜我好奇的是,在大多数系统上的GPU,无论是英特尔高清显卡,Nvidia卡,AMD卡,等等,似乎是自动使用的大多数视频播放器,但当涉及到使用FFMPEG对这些设备的过程变得更多的过程,您需要自定义编译构建和给出特殊的标志,以使用设备的预期。我是不是漏掉了什么?VLC是否被编程为使用所有这些不同类型的GPU?在这种情况下,为什么FFMEPG不支持开箱即用的马里GPU?
发布于 2020-07-07 19:23:55
马里图形处理器只是一个用于实时图形API的图形处理器,OpenGL ES,Vulkan等。它与压缩或解压缩视频无关,尽管它可以读取视频帧,一旦被其他东西解压缩。
https://stackoverflow.com/questions/62566855
复制相似问题