如果我们在应用程序中启用硬件加速器,代码流将如何发生在硬件加速器上。如果没有,流程将如何?例如,如果启用了硬件加速器,则数据的编码和解码将由硬件完成。从应用程序中,将使用 VA API 调用视频加速器驱动程序,然后从那里调用 drm 库,从那里调用 drm 驱动程序,然后 drm 驱动程序控制硬件加速器。我在下面添加了架构图像。
这种理解是否正确?请回答你的理解以及这种方法中的任何错误和正确的方法。
还有一个问题,我选择了 vlc 播放器来播放 hdr 视频(以压缩格式存储在内存中),它使用硬件加速器进行解码,通常 cpu 获取内容位置,并需要发送到加速器来解码视频内容,这个过程将如何发生。(如果是音频,一些 i2s 模块将用于将数据发送到编解码器)。
答案1
有许多不同的编程接口用于 GPU 硬件加速视频处理。VAAPI 是其中之一,但其他接口(包括著名的 NVENC / NVDEC)也存在并被广泛使用。
在所有情况下,CPU 的工作都是使数据可供 GPU 使用 - 这可以是泵送、DMA、页面翻转等,具体取决于所使用的 API 以及是否存在公共地址空间。
通过解压缩,根据工作流程,解压缩的图像可能永远不会返回到 CPU 域,但可能会直接显示。