如何将我们自己的播放器与 Cobalt 集成

How to integrate our own player with Cobalt

从Cobalt的源代码可以看出,它使用了ffmpeg相关的库(例如libasound/libavcodec/libavresample/libavutil...)来解码,render/play将video/audio作为它的自己的播放器(pull mode/push模式),由于播放代码从cobalt init到视频解码是高耦合的,并且没有统一的接口供集成其他播放器使用,所以有没有指导文档或示例代码support/intergate 除了 ffmpeg with Cobalt 之外的其他播放器?

播放器的移植接口以 SbPlayer 为中心,在 src/starboard/player.h 中定义 -- src/starboard/shared/ 下的所有内容都应被视为示例,或供您使用的起始代码实施 SbPlayer。您可以根据需要使用全部或 none。关键是您要实施 SbPlayer 和辅助媒体移植 API,例如 SbMediaSbDrm,并满足他们描述的合同。

Starboard(在 src/starboard/*.h 中定义)是 Cobalt 移植接口,因此您无需修改​​ Starboard 实现之外的任何内容即可将 Cobalt 完全移植到新平台。由于 Starboard 是 version-controlled API,这将使以后的变基变得容易得多,但任何其他代码都可能随时更改,恕不另行通知。不通过 Starboard API,Cobalt 不会直接引用任何 Starboard 实现代码 API,因此您可以根据平台需要换掉它的任何部分。