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 attempt to address that a bit with some changes.
Remove config values
This challenge will remove the mediaPlaylistMinDurationSeconds and tsbStartDurationSeconds configuration values and how those work. The changes below will make them obsolete so we need to make sure that all relevant code is removed as well, including anything to do with the value usage and configuration for each of those items.
Advertising fragments
Please update Fog so that it advertises all known fragments, even if they haven't been collected and downloaded yet. This will ensure the player knows about the fragments and thinks they are available.
Recording start
Currently, Fog can be configured to start a recording at some point before the current "live" point of the stream (tsbStartDurationSeconds). This challenge will update Fog so that it immediately begins recording from the live point, instead of a point in the past.
Fragment request
If the player asks Fog for a fragment that hasn't begun downloading yet, we will immediately download that fragment, cache it, and send it to the player. The player will see a slight delay due to the overhead of downloading, but this will be better than what we've done in the past because the download will be prioritized over all other fragments.
Fog hanging:
The client has seen sporadic issues where bad fragments on the server / stream side cause Fog to stop downloading / the recording to hang. No error is output in this case. If you see any reason why Fog would stop downloading a stream, other than a valid error case, please mention that in the forum so we can address the issues. This has normally been seen after allowing a recording to continue for multiple hours. The client leaves their recording on overnight to see if it breaks.
Bonus
If you have any additional suggestions on things that can be done to speed up playback tune times, please mention those in your README or implement them in your submission for additional review points. If something is intensive to implement but may be worthwhile, feel free to clearly document your idea in your README, with justification on the performance benefits, and we may ask you to do it directly for additional payment or may launch another contest based on the idea.
Optimisation1 branch
In the Git repo, there is an "Optimisation1" branch that implemented some ideas we had for tune time optimisation. Please have a look there to look for possible ideas as well.
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 0b0e82cc8e73e8dbe0a144474e41f70f7ea0e747
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: