w3c / media-and-entertainment

Repository for the Media and Entertainment Interest Group
56 stars 15 forks source link

Interest in TV App Performance #79

Open chiefcll opened 3 years ago

chiefcll commented 3 years ago

App development on smart TVs, set-top boxes and other embedded devices using current HTML / Web technologies are difficult to achieve performance goals. As part of TPAC 2021 plans (#71), we'd like to have an open discussion with App developers building with web technologies around performance. I plan on leading the talk covering issues our organization is facing building out a web application on low powered devices. Hoping to spur ideas on how to make it easier to create apps for TV.

anawhj commented 3 years ago

Interesting topic to me. 👍 I would like to also get opinions of the performance difficulty on low-end devices (e.g. 1GB RAM) from app developers though the eco system seems quite tiny other than PC and mobile. I wonder the expected output from the discussion or relevant sample web technology for handling the performance issues, while I guess most of the problems would require to be handled in browser engine open sources. (e.g. Chromium)

nigelmegitt commented 3 years ago

Also potentially relevant: TTWG is working on updates to the Hypothetical Render Model in IMSC, whose goal is to ensure that subtitles and captions are playable, by constraining document complexity. The plan is to refactor that part of the IMSC specification into a separate Rec Track document.

chiefcll commented 3 years ago

:wave:

First, I want to emphasize this topic will be focused on application performance (navigating on screen UI and different pages) and will NOT cover video playback. The goal of this meeting is to figure out best practices for new developers / companies in the TV space. I’m looking to get information on how difficult it is to create a high end experience on an embedded device. Is it possible to create a great experience in a browser using DOM rendering? Canvas (WebGL) in a browser? I see the following:

Best Performance for rendering (Memory + CPU)

DOM < Cobalt < Canvas (WebGL) < WebAssembly < Native

Ease of Development (# of devs + documentation + experience)

DOM > Canvas > WebAssembly ~ Cobalt ~ Native

While the larger companies are developing Native apps for the best possible experience, is there a middle ground? Can the browser be used as an application platform? What can we do to standardize an approach to building TV apps? Are there quick wins that can be accomplished through new Javascript APIs? Should we all be using WebAssembly or MiniApps? Can we improve the DOM or use a subset of DOM for greater performance? Other thoughts?

tidoust commented 2 years ago

The LightningJS team published a blog post entitled Lightning Performance Analysis last month that compares an approach based on Canvas (through LightningJS) and a DOM-based approach, measuring the average and current frame per seconds (FPS) in both cases on typical low-end and high-end set-top boxes.

@chiefcll offered to present the analysis during next Media & Entertainment IG call on 3 May 2022. Agenda and meeting invite to follow some time next week.

chrisn commented 2 years ago

May 3 is during the Golden Week holiday in Japan, so we may prefer to find a time during the following week.