这里有一个额外的层,没有显示出来,叫做 "MMAL" 层,我相信它是一个 Broadcom 对 OpenMAX 的封装。如果不是的话,它可能是一个替代 OpenMAX 的选择,位于内核驱动程序之上。例如,raspivid 和 raspistill 就是使用 MMAL 编写的。
我想要一个视频解码的例子,其中输入是原始的 H.264 格式,输出可以是内存中的视频或屏幕上的视频。我想要直接使用 VCHIQ 进行操作,而不是使用 OpenMAX(主要是出于性能和灵活性方面)。
这个 GitHub 仓库:https://github.com/raspberrypi/userland/ 包含了上面显示的所有内容的源代码(橙色和绿色框中的源代码;VCHIQ 本身的源代码,基于 VCHIQ 的 OpenMAX IL 实现,以及 OpenGL 和 EGL 实现等)。理论上,这应该足以开始工作。问题是,即使对于非常熟悉 OpenMAX 和多媒体框架的人来说,如何使用它也是非常不明显的。
例如:vchiq_bulk_transmit() 似乎是用于将视频发送到解码器的函数。但是如何初始化类型为VCHIQ_SERVICE_HANDLE_T
的第一个参数?结果放在哪里,是在帧缓冲区还是在结果处理器中等等...?编辑:奖励可以通过提供使用vchiq进行视频解码的工作示例、显示调用序列的 API 概览(即使不是工作示例)或足以编写此代码文档的指针来收集。一个工作的示例将得到额外的丰厚奖励 :)