Hercules C++ Fog App - MPEG Dash update

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
    Linux
    Mac

Currently, the codebase works only with HLS / M3U8 streams.  A separate branch also contains support for MPEG DASH streams, and this branch needs to be updated.

Requirements

The MPEG Dash branch of the Fog app hasn't been updated in awhile, and a number of important bug fixes have been committed to the master branch that aren't part of the dash branch.  This challenge will update the dash_support branch with the latest fixes and will, importantly, ensure that the same bugs are fixed in the Dash support code, making sure we don't regress on any issues.

A Gitlab ticket covers specifics:

https://gitlab.com/hercules-fog/Fog-CLI/issues/187���

MPEG Dash format 

You can find details on the format here:

• http://www.encoding.com/mpeg-dash/
• https://en.wikipedia.org/wiki/Dynamic_Adaptive_Streaming_over_HTTP
• https://www.brendanlong.com/the-structure-of-an-mpeg-dash-mpd.html
• http://standards.iso.org/ittf/PubliclyAvailableStandards/c065274_ISO_IEC_23009-1_2014.zip

Sample player

This site is what will be used by reviewers to test playback:

http://player.b1.app.cloud.comcast.net/ 

It is expected that reviewers will need to run Google Chrome with web security disabled to get around XSS / CORS issues when playing back from a Fog recorded URL. 

How to test

Testing for HLS will be documented in the forum. Testing for MPD will be similar, but we will use the player documented above instead of the viper player for HLS.

Steps include:

1. Start an MPD recording
2. Get the playback URL from the “/recordings” endpoint
3. Put the playback URL into the test player
4. Start playback

For validation, we want to make sure that playback is smooth and that the MPD segments are served properly to the player.

HLS

After the changes, the HLS implementation should still work as normal, including the things not in scope for Dash, like logging, “recording” endpoint, adaptive bitrate, culling, etc…

Submission

Your code must be submitted as a Git patch file against the "dash_support" branch

https://ariejan.net/2009/10/26/how-to-create-and-apply-a-patch-with-git/

Base your patch file against commit hash 77b4a015fa49953839eed902a4915e7d2a5ed933.

Please make sure to test your patch before submission!

 


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: 30058477