Hercules Fog Recorder - Pass through state

Key Information

Register
Submit
The challenge is finished.

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

     

This challenge will implement a new state for the Fog recorder that is "TSB disabled", where Fog will still be in the flow, but won't actually write files to storage.

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:

No video is required for this challenge.
 

 



Final Submission Guidelines

Please see above

ELIGIBLE EVENTS:

2017 TopCoder(R) Open

REVIEW STYLE:

Final Review:

Community Review Board

Approval:

User Sign-Off

SHARE:

ID: 30057002