Challenge Overview
The Hercules Player is an application that allows customers to download videos to their computer or device for offline playback, along with streaming playback of videos for online playback.
The Hercules Fog project has stripped out some key portions of the Hercules Player application into a new test application for downloading videos from a server, modifying the manifest, and then playing back on various mobile and TV devices.
The current implementation is C++ and will run on:
- * Windows (with some build tweaks)
* Linux
* Mac
Tune time merge
This challenge will merge in the changes in the tune_time_fixes branch back into master. Please make sure your patch file:
* Applies to the master branch
* Includes the tune_time_fixes changes
TSB Disabled
Fog runs on an embedded device that uses an SD card for storage. There are concerns that the SD card could wear out quickly if Fog is used at all times, so we need a way to disable it and enable it, while Fog is still running. All requests for manifests and fragments will still flow through Fog and the "tsb" endpoint, but if Fog is in "Pass through" state, it will just lazily fetch the fragments from the remote server as they are requested by the player. The fragments won't be cached in RAM or saved to disk - Fog will basically just be a transparent proxy.
When Fog is not in "Pass through" state, it will work like it does now.
NOTE: Even when Fog is in "Pass through" state, it's own automatic bitrate switching algorithm will be used *not* the algorithm of the player.
REST endpoint
We need a REST endpoint added that can be used to query the "Pass through" state, as well as change the state of the pass through from enabled to disabled or disabled to enabled.
Dynamic changes
Note that the change to the pass through state will be done when Fog is running, so Fog will need to start saving to disk immediately if pass through state is turned off, and it should stop saving to disk if pass through state is turned on. A good way to test this is to play a stream through Fog and enable and disable the pass through state at different times. Playback should not be affected.
Branch
We will target the code in branch master for this challenge
Validation
You must provide clear steps for validation. You are encouraged to add extra debug logging (we may remove it later) or other functionality so that we can easily see how the fragment requests are handled and whether things are pass-through or from the Fog recording.
Submission
Your submission to OR should be a Git patch file that can be applied to see the fixes. Here is documentation on how to generate a Git patch file:
https://ariejan.net/2009/10/26/how-to-create-and-apply-a-patch-with-git/
We will target Git commit hash 36354917eca945f199f058f685c056af68a029fc on the "master" branch
Submission README:
Please submit a Git patch file and a separate README (don't update the README in Git) that describes your changes and how to validate the optimisations above.
Video: