Challenge Overview
Challenge Objectives
- C++ application running on MacOS X, offering Javascript APIs to developers
- More details can be found here: http://www.sparkui.org/index.html
- We will target Mac OS X for this challenge. Submitters and reviewers will need access to OS X
Basic requirements for this challenge:
Integrate AAMP media player into Spark build and show playback working in the Spark window on Mac OS XProject Background
"Spark" is the name for the pxScene project we've done work for in the past. The links below offer a lot more details on these particular technologies. pxCore is a C++ graphics library that is used on a wide variety of embedded devices that the client distributes. Spark is a wrapper application around pxCore that exposes the drawing APIs to Javascript through Node and V8.The client would like to start supporting MSE / EME in Spark through the AAMP playback library. This is the long-term goal of this project
- MSE: https://en.wikipedia.org/wiki/Media_Source_Extensions
- ESE: https://en.wikipedia.org/wiki/Encrypted_Media_Extensions
- AAMP details will be provided in the forum, along with the latest code
Technology Stack
- Spark: https://github.com/pxscene/pxCore
- Build instructions: https://github.com/pxscene/pxCore/blob/master/examples/pxScene2d/README.md
- Debug instructions using VSCode: https://github.com/pxscene/pxCore/blob/master/examples/pxScene2d/VSCODE_DEBUG.md
Note that I've personally had issues building on MacOS X 10.14 and XCode 9 (XCode 10 is not supported). More details here: https://github.com/pxscene/pxCore/issues/1828
If you encounter that problem and find a workaround, please let me know in the forum and we'll figure out an additional payment.
Code access
- The main Spark code is available in Github
- AAMP code will be provided in the forum, along with details on building for OS X
Individual requirements
For this challenge, we are going to integrate AAMP into Spark, providing playback functionality in Spark itself, on Mac OS X. We will allow for playback from the main browser.js app that runs as the default when Spark is loaded.
Integration
Please integrate AAMP as an external dependency in /examples/pxScene2d/external, where all the other external dependencies reside. Ensure that the build.sh file is updated properly to build AAMP as part of the build process, and ensure the build is properly documented in your README.
Javascript playback
Some basic wrappers must be provided to support playback of DASH streams in Spark. DASH is the primary focus for the client, but you shouldn't do anything to prevent MP4 / HLS from working as well.
What I would like to see is the ability to enter a .mpd link in the browser.js navigation bar in Spark and have playback start. Pressing the spacebar should pause / resume playback. This is all that's required for now in terms of functionality.
For the Javascript, we want to ensure that the existing framework for media playback in Spark is maintained with the addition of AAMP. This means that we want to use the existing RTObject subclasses, like MediaSource, SourceBuffer, etc...
Sample DASH streams
Note that for this challenge we will only target DRM-free streams
- https://bitmovin.com/demos/stream-test?format=dash&manifest=https%3A%2F%2Fbitmovin-a.akamaihd.net%2Fcontent%2FMI201109210084_1%2Fmpds%2Ff08e80da-bf1d-4e3d-8899-f0f6155f6efa.mpd
- https://testassets.dashif.org/
- http://players.akamai.com/dash/
Deployment guide and validation document
Make sure to require two separate documents for validation.A README.md that covers:
Updated build instructions for building the new Spark app with AAMP integration
A Validation.md that covers:
How to validate AAMP playback, including the spacebar to pause / resume
What To Submit
- Patch file targeting a recent commit hash of pxCore (any commit after May 14th 2019 is fine, but make sure to specify the commit hash in your README)
- Updated codebase (optional, but definitely recommended in case there are problems with your patch file)
- README.md
- Validation.md