Questions tagged [cobalt]

Cobalt is a lightweight HTML5/CSS/JS application container that is designed to provide a rich application development environment with minimal resource consumption (deployment size, RAM, CPU, GPU). At the same time, Cobalt enables a rich, low-latency user experience across a wide variety of platforms and devices.

Target audiences

Cobalt's documentation is written with two audiences in mind:

Porters enable Cobalt to work on other platforms by using Starboard, Cobalt's porting layer and OS abstraction, to implement the platform-specific functionality that Cobalt uses. Each Starboard module (memory, socket, thread, etc.) defines functions that must be implemented for the porter's platform.

Developers want to build applications in familiar environments with advanced debugging tools without having to worry about compatibility with a highly fragmented set of browsers. At the same time, they want to have full control over their codebase so that they can ship features for constrained platforms, like TVs, on time and without technical risk.

Benefits of Cobalt

Cobalt significantly reduces the cost of supporting a browser on non-standard and resource-constrained platforms. In addition, since Cobalt operates at a consolidated, versioned platform abstraction layer, its porting effort is man-weeks, and subsequent rebases are near-free.

These are some other benefits that Cobalt provides:

More platforms

Cobalt does not require platforms to support JIT compilation and can run on platforms that disallow execution of dynamically generated code. Cobalt is a single-process application and does not rely on the ability to spawn multiple processes. Cobalt precompiles a set of shaders that are sufficient to express all graphical effects, thereby accommodating platforms that cannot compile shaders at runtime. Cobalt requires a compliant C++03 compiler, allowing it to reach platforms with legacy toolchains. Small footprint

Cobalt is optimized for memory. Its surface cache never exceeds a predefined budget, and it never creates duplicate layers, reducing the likelihood of out-of-memory crashes. Cobalt's small binary is designed to take up as little space as possible. By supporting a subset of HTML5/CSS/JS, Cobalt's reduced package size even allows bundling of CJK fonts on low-end devices. Reduced input latency

Cobalt produces consistent 60FPS animations by only supporting animation of properties that don't affect layout, like transform, and always running animations on a separate thread. Cobalt is optimized to run on single-core CPUs, resulting in better input latency since the renderer and resource loader do not compete with layout operations. On platforms that support GLES2, Cobalt avoids CPU painting by performing almost all rendering operations on the GPU.

References:

1.1 Overview & Source http://youtube.github.io/cobalt/overview.html

1.2 Porting http://youtube.github.io/cobalt/starboard/porting.html

1.3 Develop http://youtube.github.io/cobalt/development/setup-linux.html

1.4 Supporting Features http://youtube.github.io/cobalt/development/reference/supported-features.html

1.5 Testing http://youtube.github.io/cobalt/starboard/testing.html

1.6 Source Code https://cobalt.googlesource.com/cobalt/

1.7 h5vcc https://github.com/youtube/h5vcc

1.8 Build in linux https://cobalt.googlesource.com/cobalt/+/e9b4b99dab6e774b8b6e63add74c352cc5dd395a/src/README.md#Building-and-Running-the-Code

215 questions
0
votes
1 answer

Cobalt and system DIAL

I have a board with Cobalt and DIAL server. If Cobalt isn't started DIAL server just runs Cobalt with appropriate parameters. But what should I do if Cobalt is already started? I mean how can I pass a new URL from DIAL to already run Cobalt?
0
votes
1 answer

Call native code when a JS value is garbage collected

In my application I'm creating some JS objects, and also on C++ side some objects for running some handling. I would like to delete C++ objects when they are not needed anymore: the corresponding JS object is Garbage Collected. I'm trying to find…
meodou
  • 49
  • 4
0
votes
1 answer

Build v8 as a shared library in Cobalt

I'm trying to build "v8" as a shared library in Cobalt using GYP. I set the variable "component" to "shared_library". When assembling an error pops up: ninja: error: obj.host/v8/src/v8_libbase.ninja:85: unknown build rule 'solink_host' build…
0
votes
2 answers

Widevine Crashes In Youtube Precertification Tests

I am working with Cobalt for Youtube. When passing EME Conformance tests, Widevine tests causes a crash on my Set Top Box Do you have any idea what may be the reason for this crash?
AmalGH
  • 1
0
votes
1 answer

GN build guide for cobalt

The development site page and the default README.md file describe how to create cobalt based on "GYP". However, I am wondering if it can be made of "GN" like chrome. I found the gn build guide…
Sparkleholic
  • 78
  • 1
  • 6
0
votes
1 answer

Cobalt browser running JQuery

We would like to port our application running on some other browser, to run in Cobalt. Our application uses extensively JQuery. Running it in Cobalt is quite a challenge. Does any one have some idea about alternatives to JQuery that run in…
meodou
  • 49
  • 4
0
votes
4 answers

How to change URL at runtime

We are trying to use Cobalt (20.stable) browser as the browser of our web SPA application. My requirement is to be able to change URL at runtime, what I was able to find in the code: Is: starboard::shared::starboard::Application::Link(const char*…
meodou
  • 49
  • 4
0
votes
1 answer

How to enable the Widevine in cobalt?

I want to refer the code flow of widewine. I already analyzed the cobalt code and cobalt have widevine code in src/startboard/shared/widevine Please support for the below How to enable the widevine in cobalt? Sample page for widevine drm…
VMS
  • 137
  • 2
  • 8
0
votes
1 answer

Does Cobalt support client certificates?

In Cobalt's /net directory there is some client certificate related code but it seems to be unused. Does Cobalt support client certificates?
chmurli
  • 15,080
  • 3
  • 16
  • 12
0
votes
1 answer

When a video starts on Cobalt 19, is there a callback that will alert me when video starts?

I need to handle the Play/Pause remote button which is sending the same code, I am able to toggle and send Play or Pause based on the previous key press, but I am trying to reset the toggle when video starts. For example, if video is paused, then…
0
votes
1 answer
0
votes
1 answer

4 hour browse watch, cert performance and multi app test

Recently observing that 4 hour browse to watch, multi app performance and cert performance tests are only navigating and not playing any content. This was working on same code till last week. We tried few things and find out that if brand name is…
0
votes
1 answer

How to use inspector in cobalt?

I launch chrome with this url http://ip_adress_device_cobalt:9222,when I try to navigate in developer tools tabs , the console works fine but other tabs (like network, source) are always empty. so I'am unable to use breakpoints for example or…
lu qu
  • 1
0
votes
1 answer

How to play drm contents in cobalt

I am developing using cobalt master. I want to play the drm contents using cobalt. but as far as i know, cobalt(open-source) is not integrated with widevine or playready due to license. So I have to the widevine integrating.. But I don't know what…
sunhan
  • 1
  • 2
0
votes
0 answers

When "dfb_gfxcard_stretchblit" will go the software render flow at cobalt 19?

My platform doesn't have gpu, so it uses directfb to draw UI and handle event. It works fine at Cobalt 11.153049. But after I upgrade it from cobalt 11 to cobalt19.lts.3, the directfb will go the software render flow. The API …
Devin
  • 1
  • 2