Senior Design Projects

ECS193 A/B Winter & Spring 2021

WebAssembly Video Filters

Email **********
Brian Thomas
Telestream

Project's details

WebAssembly Video Filters
WebAssembly is a new type of code that can be run in modern web browsers and provides new features and major gains in performance. It is not primarily intended to be written by hand, rather it is designed to be an effective compilation target for source languages like C, C++, Rust, etc. Refer to https://webassembly.org/ for more information.

This has huge implications for the web platform — it provides a way to run code written in multiple languages on the web at near-native speed, with client apps running on the web that previously couldn’t have done so. For example, it should be possible to write filters that process video frames in real-time as it is played in a video file. Refer to this video for an example of a javascript library that attempted to achieve a similar result (albeit with different technology) https://www.youtube.com/watch?v=jdKep6jo7b0.

Writing a performant algorithm, such as a video filter, requires both knowledge of the algorithm and how to optimize the algorithm for the target processor. Halide is a programming language designed to make it easier to write high-performance image and array processing code. Refer to https://halide-lang.org/ for more information.
The goal of this project is to write a performant filter that can be applied to video played back in the browser using the Halide language to create WebAssembly code. The applications of this technique are many including

• HDR (high dynamic range) video playback
• Chroma keying
• Video effects (e.g. blur)
• Visualizations (e.g. vectorscope)

The project is setup to mirror a typical R&D project in a software development company. The team receives this project description and is expected to meet with their technical mentors on a weekly basis. The mentors will help adjust the project given the discoveries made, with the goal of being able to present a proof of concept to an executive team at the end of the project. The presentation would include enough information for the executives to make a go / no-go decision on productizing the development.

It is anticipated that the team would divide the work, for example a four-person team might split the task …

• Algorithm Development (Halide)
• Algorithm implementation (C++)
• Halide ahead of time compiler scripting (Python)
• Webpage development (HTML / JavaScript)
• Create a web site demonstrating several video processing filters.
• Present to company executives on the application / viability of the developed technology.
It is expected that the project team would have coding skills appropriate to a final year computer science undergraduate degree student and that between the group they would have some exposure to C++ and HTML / javascript. Knowledge of Halide would be gained during the course of the project. The mentors would be on hand to assist with questions related to Halide / C++ / Video processing etc.
**********
30-60 min weekly or more
Open source project
Attachment N/A
Yes
Team members N/A
Andrei
N/A