The Servo Blog: Media stack Mid-Year review |
We recently closed the first half of 2019 and with that it is time to look back and do a quick summary of what the media team has achieved during this 6 months period.
Looking at some stats, we merged 87 Pull Requests, we opened 56 issues, we closed 42 issues and we welcomed 13 new amazing contributors to the media stack.
These are some of the selected A/V playback related H1 acomplishments
We significally improved the seeking experience of audio and video files by implementing preloading and buffering support and a media cache.
After a few months of work we got partial support for the Shadow DOM API, which gave us the opportunity to implement our first basic set of media controls.
The UI is not perfect, among other things, because we still have no way to render a progress or volume bar properly, as that depends on the input type="range">
layout, which so far is rendered as a simple text box instead of the usual slider with a thumb.
Another great achievement by Xavier Claessens from Collabora has been the GStreamer backend for Magic Leap. The work is not completely done yet, but as you can see on the animation below, he already managed to paint a full screen video on the Magic Leap device.
One of the most wanted features that we have been working on for almost a year and that has recently landed is hardware accelerated decoding.
Thanks to the excellent and constant work from the Igalian V'ictor J'aquez, Servo recently gained support for hardware-accelerated media playback, which means lower CPU usage, better battery life and better thermal behaviour, among other goodies.
We only have support on Linux and Android (EGL and Wayland) so far. Support for other platforms is on the roadmap.
The numbers we are getting are already pretty nice. You might not be able to see it clearly on the video, but the renderer CPU time for the non hardware accelerated playback is ~8ms, compared to the ~1ms of CPU time that we get with the accelerated version.
We also got a bunch of other smaller features that significantly improved the web compatibility of our media elements.
poster
frame attributeloop
attributecrossorigin
attribute logic.canPlayType
function.We also got a few additions on the WebAudio land.
Thanks to jdm’s and Manishearth’s work, Servo has now the foundations of a WebRTC implementation and it is able to perform a 2-way calling with audio and video playback coming from the getUserMedia API.
That’s not all folks! We have exciting plans for the second half of 2019.
On the A/V playback land, we want to:
element, with a proper slider and a thumb, so we can have progress and volume bars.For WebAudio there are plans to make some architectural improvements related to the timeline and the graph traversals.
We would also love to work on the MediaElementAudioSourceNode implementation.
For WebRTC, data channels are on the roadmap for the second half.
We currently support the playback of a single stream of audio and video simultaneously, so allowing the playback of multiple simulatenous streams of each type is also something that we would like to get during the following months.
There were also plans to implement support for a global mute feature, and I am happy to say, that khodza already got this done right at the start of the second half.
Finally, we have been trying to get Youtube to work on Servo, but it turned out to be a difficult task because of non-media related issues (i.e. layout or web compatibility issues), so we decided to adjust the goal and focus on embedded Youtube support instead.
Комментировать | « Пред. запись — К дневнику — След. запись » | Страницы: [1] [Новые] |