1 Cobalt

Cobalt是一个轻量级HTML5/CSS/JS应用程序容器,旨在以最少的资源消耗(部署大小,RAM,CPU,GPU)提供丰富的应用程序开发环境。同时,Cobalt在各种平台和设备上实现丰富,低延迟的用户体验

这些是Cobalt提供的其他一些好处

  • More platforms

    • Cobalt不需要平台来支持JIT编译,并且可以在不允许执行动态生成代码的平台上运行
    • Cobalt是一个单进程应用程序,不依赖于多个进程
    • Cobalt预编译一组足以表达所有图形效果的着色器,从而适应无法在运行时编译着色器的平台
    • Cobalt需要一个兼容的C++ 03编译器,允许它通过传统工具链访问平台
  • Small footprint

    • Cobalt针对内存进行了优化。 它的surface缓存永远不会超过预定义的预算,并且它永远不会创建重复的图层,从而减少了内存不足崩溃的可能性
    • Cobalt的小二进制文件旨在占用尽可能小的空间。 通过支持HTML5/CSS/JS的一个子集,Cobalt的缩小封装尺寸甚至允许在低端设备上捆绑CJK字体
  • Reduced input latency

    • Cobalt通过仅支持不影响布局的属性动画(如变换)并始终在单独的线程上运行动画来产生一致的60FPS动画
    • 由于渲染器和资源加载器不会与布局操作相竞争,因此Cobalt已针对单核CPU运行进行了优化,从而延长了输入延迟时间
    • 在支持GLES2的平台上,Cobalt通过在GPU上执行几乎所有的渲染操作来避免CPU绘图

2 Architecture

Cobalt作者分叉了H5VCC,删除了大部分Chromium代码 ,特别是WebCore和Chrome Renderer和Compositor,并且从零开始构建了一个简化的HTML子集的实现,用于布局的CSS Box模型以及Web API,这是真正需要建立一个全屏幕SPA浏览和播放应用程序,Cobalt的组件主要有以下几个部分

  1. Web Implementation
    这是实现W3C标准的地方,最终生成一个带注释的DOM树,该树可以传递到布局引擎以生成渲染树

  2. JavaScript Engine
    我们没有从头开始写自己的JavaScript引擎。 由于JITing约束,我们必须灵活地使用与我们合作的引擎。 我们有一个与JS Engine接口的绑定层,以便应用程序脚本可以与本机支持的对象(如DOM元素)交互

  3. Layout Engine
    布局引擎接收由Web实现和JavaScript引擎生成的带注释的DOM文档,并计算渲染命令的树以发送给渲染器(即渲染树)。 它缓存中间布局工件,以便后续的增量布局可以加快

  4. Renderer/Skia
    渲染器遍历由布局引擎生成的渲染树,使用第三方图形库Skia对其进行栅格化处理,并将其交换到前端缓冲区。 这里有两条主要路径,一条是在OpenGL ES 2.0上使用Hardware Skia,另一条是使用Software Skia和硬件加速的Starboard Blitter

    请注意,渲染器在与布局引擎不同的线程中运行,并且可以插入不需要重新布局的动画。这可以将Layout和JavaScript渲染分离出来,从而在具有各种功能的平台上实现流畅,一致的动画

  5. Net/Media
    这些是Chromium的网络和媒体引擎。 我们直接使用它们,因为它们不会引起上面列出的额外限制的任何特定问题

  6. Base
    这是Chromium的“Base”库,其中包含在Cobalt,Net和Media中使用的各种有用的东西。Cobalt使用标准C++容器(例如vector,string)和Base的组合作为其所有代码的基础库

  7. Other Third-party Libraries
    其中大部分是其他开放源代码软件中通常包含的straight-C开源库。 大多数格式的解码器和解析器(例如libpng,libxml2,zlib)。我们从Chromium中分离出来,因为我们希望它们成为这些库经过测试最多的版本

  8. Starboard/Glimp/ANGLE
    Starboard是Cobalt移植接口。Cobalt和Chromium之间的一个主要区别是我们创建了一个hard straight-C移植层,并且移植了所有编译后的代码,包括Base和所有第三方库,以使用它,而不是直接使用POSIX标准库,它们是即使在现代系统上也不一致(请参阅Android,Windows,MacOS X和iOS)。此外,Starboard还包括跨平台没有得到有效标准化的API,例如显示窗口创建,输入事件和媒体播放

    Glimp是由Cobalt团队直接在Starboard上构建的OpenGL ES 2.0实现框架,旨在将专有3D API修改为GLES2

    ANGLE是一种第三方库,可将DirectX与Glimp类似,但仅适用于DirectX

3 Display And Media

Cobalt能够支持与加密媒体扩展兼容的任何DRM系统,但这仅在PlayReady和Widevine两种产品上得到充分验证。因为版权原因使得难以提供与Widevine或PlayReady的开源参考集成,所以目前由平台实施者来集成代码来生成许可证,安装密钥并在解码之前解密样本,请注意,不需要更改src/media中的任何代码来执行此操作,只需实现Starboard player/drm/media API即可完成此操作

目前Cobalt有OpenMax和ffmpeg的对接代码,没有Gstreamer的,显示部分Wayland+EFL、X11、Directfb、Win32都有集成,可以直接使用

3.1 Drm Implementing APIs

函数
SbDrmSessionUpdateRequestFunc
SbDrmSessionUpdatedFunc
SbDrmSessionKeyStatusesChangedFunc
SbDrmCreateSystem
SbDrmGenerateSessionUpdateRequest
SbDrmUpdateSession
SbDrmCloseSession
SbDrmGetKeyCount
SbDrmGetKeyStatus
SbDrmRemoveAllKeys
SbDrmDestroySystem

3.2 Video Implementing APIs

函数
SbPlayerDestroy
SbPlayerWriteEndOfStream
SbPlayerWriteSample
SbPlayerSetPlaybackRate
SbPlayerSeek
SbPlayerSetVolume
SbPlayerGetInfo
SbPlayerOutputModeSupported
SbPlayerCreate
SbPlayerGetCurrentFrame
SbPlayerSetBounds
GetAudioCodecFromString
SbMediaIsAudioSupported
GetVideoCodecFromString
ParseH264Info
SbMediaIsVideoSupported
IsAudioOutputSupported
GetTransferIdFromString
SbAudioSinkIsAudioFrameStorageTypeSupported
SbAudioSinkIsAudioSampleTypeSupported
SbAudioSinkGetMaxChannels
SbAudioSinkCreate
SbAudioSinkIsValid
SbAudioSinkDestroy

Cobalt浏览器简介相关推荐

  1. Puppeteer 无头浏览器简介

    Puppeteer是什么 Puppeteer 是一个 Node 库,它提供了高级的 API 并通过 DevTools 协议来控制 Chrome(或Chromium).通俗来说就是一个 headless ...

  2. 五大主流浏览器-简介

    世界五大主流浏览器 === **Internet Explorer 简称ie,微软公司旗下浏览器** IE的诞生起源于1994年,当时微软为了对抗几乎占据市场百分之九十份额的网景Netscape Na ...

  3. QModel-BIM模型浏览器简介

    官网地址:http://www.qmodel.cn/ 集成方案:私有化部署.可开源 示例代码:https://gitee.com/qmodel 主要能力:实现Revit.Gltf模型在线浏览,符合BI ...

  4. APT组织最喜欢的工具 Cobalt Strike (CS) 实战

    一.Cobalt Strike 背景 Cobalt Strike 在威胁攻击者的恶意活动中的使用次数正在增加.从 2019 年到 2020 年,使用Cobalt Strike 的威胁攻击者增加了 16 ...

  5. Cobalt strike的使用

    Cobalt strike的使用 Cobalt strike简介 一.启动,连接服务器 二.让主机上线 三. 结合metasploit,反弹shell 四.office宏payload应用 五.Htt ...

  6. css元素与浏览器边框,别具光芒CSS属性、浏览器兼容与网页布局

    别具光芒CSS属性.浏览器兼容与网页布局 语音 编辑 锁定 讨论 上传视频 上传视频 <别具光芒CSS属性.浏览器兼容与网页布局>是2008年人民邮电出版社出版的图书.该书结合大量范例与实 ...

  7. 微软一站式示例代码浏览器 v5.1 更新

    下载安装:http://aka.ms/samplebrowser 本周发布了微软一站式示例代码浏览器 v5.1 更新,修复了示例代码浏览器无法在Windows 8 Consumer Preview上正 ...

  8. brave浏览器_Brave浏览器基础使用教程,同时如何通过Brave获取BAT奖励

    一.Brave浏览器简介 Brave浏览器是一款基于谷歌浏览器内核的浏览器,Brave的界面跟谷歌浏览器比较相似,大部分支持谷歌商店的扩展程序.这对Chrome用户迁移成本较低. 目前,Brave浏览 ...

  9. IE与IE内核浏览器的那点事

    真正的IE浏览器与IE内核的浏览器是不是一回事呢,是不是完全一样咧?如果不一样又有什么关系咧?下面一起来找答案吧! 知识补给: 1.浏览内核 简介 2.IE内核浏览器 简介 我的结论:根据以往的经验和 ...

最新文章

  1. GPT-3到来,程序员会被AI取代吗?
  2. 一个快速、高效的Levenshtein算法实现
  3. java枚举可以int值不_java – 如何通过int值迭代枚举?
  4. 深入浅出 JavaScript 中的 this
  5. 持续集成部署Jenkins工作笔记0021---21.关闭防止跨站点请求伪造
  6. 安装apk出现Parse error when parsing manifest. Discontinuing installation.解决方案
  7. 第9批候选!高工智能汽车金球奖入围年度产品/方案公示
  8. SI4463的数据冲撞解决办法
  9. Findbugs错误总结
  10. NTP服务器配置(CentOS环境)
  11. 毕业设计之 ---- 基于jsp的网上购书系统
  12. android cardview,安卓 CardView 妙用
  13. Exception in thread “main“ java.lang.ArithmeticException: / by zero
  14. 一行代码实现安慰剂检验
  15. 卷积神经网络(CNN)详解
  16. 使用iptables进行流量控制
  17. 【微博简易爬虫】Python获取指定微博用户的发布文本
  18. PAR(光合有效辐射)数据下载链接
  19. 2020年数学建模国赛B题题目和解题思路
  20. C# 获取某个时间的0点0分和23点59分59秒

热门文章

  1. Gate使用手册(四)数据输出
  2. 【职场进阶】做好项目管理,先从明确职责开始
  3. 智慧工地施工如何应用室内定位uwb技术
  4. java课程设计 计算器_java课程设计-保存计算过程的计算器
  5. JavaScript学习笔记整理(六)
  6. CSMA/CD中重传与冲突检测机制
  7. 分层数据流图简单介绍
  8. 4.口袋西游怪物周围遍历(01)
  9. c语言将1元5角兑换成,编写c语言程序 假定有 5 角、 1 角、 5 分、 2 分和 1 分共 5 种硬币,在 给顾客找硬币时,一般都会尽可能...
  10. 刷脸支付不需要掏手机扫码很是方便