经过一番探索(参见Android 10 WebView 踩坑实录),终于搞定 Chromium WebView 的代码下载和编译问题,加下来就要向 H265 8K 高清播放发起冲锋。
不过在打开 Chromium 源码后,眼前一黑。这还是熟悉的 Chromium 代码吗?虽然我尽量选择了不那么新的代码,但我还是低估了谷歌工程师的努力程度,至少在 HTML Video 方面,代码结构已经改得面目全非。没办法,只能慢慢啃。
在开始梳理代码之前,先上一张图镇楼。
图中,红线框起来的内容是我需要着重关注的。
Chromium HTML Video 相关的代码主要分布在三处。
首先是 third_party/blink ,这个是从之前的 WebKit 演进而来,自从和 WebKit 分道扬镳后,谷歌将新浏览器引擎命名为 blink。经过魔改,现在的代码结构和原来差异已经很大。浏览器的排版和渲染相当复杂,所以 blink 的代码及其庞杂。我们需要重点关注以下代码:
renderer/core/html/media : 其中最重要的两个类 HTMLVideoElement 和 HTMLMediaElement,对应的是网页中的 video 元素。这里是研究 HTML Video 播放的起点。
public/platform